Skip to content
isdnetworks
Go back

어느 장비에 둘지 성능과 위치로 골랐다

장비 네 대를 IDC 에 넣게 됐고 무엇을 어디에 둘지 정하는 일을 맡았는데 처음에는 사양만 보면 되는 줄 알았다.

Table of contents

Open Table of contents

사양과 역할을 맞췄다

네 대의 사양이 달랐다.

장비 1   CPU 8코어  RAM 32G  SSD 480G
장비 2   CPU 8코어  RAM 32G  SSD 480G
장비 3   CPU 4코어  RAM 16G  HDD 2T
장비 4   CPU 4코어  RAM 16G  HDD 2T

SSD 를 단 둘은 빠르고 HDD 2T 를 단 둘은 용량이 크다. 무엇을 올릴지도 적었다.

웹 서버        CPU 를 쓴다
DB             RAM 과 디스크 속도를 쓴다
파일 저장      용량을 쓴다
배치           CPU 와 시간을 쓴다

SSD 장비에 MySQL 을 두고 HDD 장비에 파일을 두는 것까지는 쉬웠다. 여기까지는 사양만 보고 정할 수 있었다.

위치가 걸렸다

랙에 넣는 자리도 정해야 했다. 같은 랙에 두면 선이 짧아 통신이 빠르고 다른 랙에 두면 한 랙이 죽어도 나머지가 산다.

MySQL 을 두 대로 하고 하나는 대기로 두기로 했는데 둘을 같은 랙에 두면 랙 전원이 나갈 때 둘 다 죽는다.

랙 A   웹1, DB주
랙 B   웹2, DB대기

web01db01 을 랙 A 에, web02db02 를 랙 B 에 넣으니 랙 하나가 죽어도 서비스가 산다. 나눠 둔 이유가 위치에서 무너지면 나눈 의미가 없다.

랙마다 쓸 수 있는 전력도 정해져 있었다.

랙당 허용   3.0 kW
장비 1대    약 0.5 kW

네 대면 2.0 kW 라 여유가 있었다. 나중에 늘릴 것을 생각하면 랙당 두 대씩이 맞았다.

앞뒤 방향도 확인했는데 공기가 들어오는 쪽과 나가는 쪽이 있어서 반대로 넣으면 열이 안 빠진다. 이런 것은 미리 안 물어보면 현장에서 알게 된다.

사전 준비 — 경로와 확인 목록

붙는 경로를 그렸다.

인터넷 → 방화벽 → 스위치 → 웹1, 웹2

                        DB주, DB대기

                        파일 서버

웹만 밖에서 닿게 하고 나머지는 안쪽에 뒀다.

공인 IP   웹1, 웹2 만
사설 IP   나머지 전부

db01 에 공인 주소를 안 주니 밖에서 붙을 방법이 없다. 관리는 ssh 로 웹 서버를 거쳐서 한다. 서비스 경로와 관리 경로를 같이 두면 하나를 막을 때 다른 하나도 막힌다.

현장에 가서 빠뜨리면 다시 가야 하므로 확인할 것도 적었다.

- 랙 위치와 U 번호
- 전원 케이블 개수 (이중화면 2개씩)
- 네트워크 케이블 길이
- IP 와 게이트웨이
- 원격 관리 포트 설정
- OS 설치 매체

원격 관리를 안 켜고 오면 다음에 또 가야 한다. 실제로 그것 때문에 한 번 다시 갔다.

넣고 나서 확인했다

전부 켜고 나서 하나씩 봤다.

# 서로 붙는가
$ for h in db01 db02 file01 web02; do
    ping -c 1 -W 1 $h > /dev/null && echo "$h OK" || echo "$h FAIL"
  done

# 밖에서 웹만 닿는가
$ nmap -Pn <공인IP>

붙어야 할 것이 붙고 안 붙어야 할 것이 안 붙는지 둘 다 봤는데 앞만 보면 열려 있으면 안 되는 포트가 열린 것을 못 본다.

실제로 3306 이 밖에서 열려 있었다. iptables 규칙 하나가 빠져 있었다.

무엇을 어디에 뒀는지도 적어 뒀다.

장비 1  web01  랙 A-12U  웹1  (공인 할당)
장비 2  web02  랙 B-12U  웹2  (공인 할당)
장비 3  db01   랙 A-14U  DB주
장비 4  db02   랙 B-14U  DB대기

장애가 났을 때 어디로 가야 하는지가 이 표로 갈리고 적어 두지 않으면 현장에서 찾게 된다.

호스트 이름도 규칙 없이 시작했더니 제각각이 됐다.

server1, db-main, FILE_SRV, web02

web01db01 처럼 역할과 번호를 붙이는 것으로 정했다. 대문자와 밑줄을 안 쓴 것은 명령에서 다루기 번거로워서였고 역할이 이름에 있으니 접속했을 때 어디인지 바로 보인다. 프롬프트에도 나오게 해서 잘못된 서버에서 명령을 치는 것을 줄였다.

정리


Share this post on:

Previous Post
크롤러를 느리게 만들었다
Next Post
소스에 박힌 절대 주소