12
무정지 웹서비스 구성 https://blog.zeroidle.com

Freebsd HA with CARP

Embed Size (px)

Citation preview

Page 1: Freebsd HA with CARP

무정지 웹서비스 구성

https://blog.zeroidle.com

Page 2: Freebsd HA with CARP

무정지 웹서비스 구성

서비스 개요 및 하드웨어 선정1

서비스 개요 41.1

하드웨어 선정 61.2

네트워크 인터페이스 이중화2

CARP설정 82.1

웹서비스 설치 및 테스트3

NginX 설치 103.1

Page 3: Freebsd HA with CARP

무정지 웹서비스 구성 - 3

서비스 개요 및 하드웨어 선정

Page 4: Freebsd HA with CARP

무정지 웹서비스 구성 - 4

서비스 개요

서비스 구성

두 대의 서버를 이용하여 Active/Standby 무정지 웹서비스를 구성하도록 합니다.

구성

L2스위치 하단에 두 대의 서버가 물리적으로 연결되어 있으며 각각 IP가 할당되어 있습니다.

또한 각 서버에는 125.141.148.230(이하 VIP)가 공통적으로 셋팅되어 있는데,

평소에는 Oper-KR-LB-1(이하 LB-1)이 VIP를 가지고 있다가

장애가 나게되면 Oper-KR-LB-2(이하 LB-2)가 VIP를 가져오게 됩니다.

즉, 두 서버 모두 살아 있을 경우 LB-1이 Active상태이며 LB-2는 Standby상태라 지칭합니다.

만약 LB-1이 장애가 나게되면 LB-2가 VIP를 가지게 되며 이러한 전환과정을 Fail-over라 합니다.

이후 LB-1이 정상화되면 VIP를 다시 가져오는데 이 과정을 Fail-back이라 합니다.

Page 5: Freebsd HA with CARP

무정지 웹서비스 구성 - 5

LB-1, LB-2의 장애와 상관없이

두 서버중 한대만 살아있더라도 VIP로 접속이 가능하므로

이러한 구성을 HA(High Availability)라 부릅니다.

Page 6: Freebsd HA with CARP

무정지 웹서비스 구성 - 6

하드웨어 선정

(주)윈퍼스트(http://winfirst.co.kr/)에서 판매하는 Intel WR1302 서버 2대로 구성하였으며

상세 스펙은 아래와 같습니다.

Intel Server Board S1200BTL

Intel Processor E3-1230v2 (8M Cache, 3.3Ghz, Max Turbo Freq. 3.6Ghz)

DDR 3 Unbuffered ECC 4GB * 2EA

SSD 120GB * 1EA

SATA 2TB * 2EA

350W Single PSU

하드웨어 스펙

* 구매비용을 줄이기 위해 고가의 레이드컨트롤러를 구매하지 않고 Software RAID기능을 사용하도록 합니다.

Page 7: Freebsd HA with CARP

무정지 웹서비스 구성 - 7

네트워크 인터페이스 이중화

Page 8: Freebsd HA with CARP

무정지 웹서비스 구성 - 8

CARP설정

서비스구성에서 보았던 VIP를 셋팅해보도록 하겠습니다.

CARP 설정

LB-1에 접속하여 /etc/rc.conf 파일을 에디터로 열어서 아래 내용을 추가해 줍니다.

cloned_interfaces="carp0"

ifconfig_carp0="vhid 230 advskew 50 pass P@ssw0rd 125.141.148.230/27"

LB-2에도 동일하게 셋팅해줍니다.

cloned_interfaces="carp0"

ifconfig_carp0="vhid 230 advskew 100 pass P@ssw0rd 125.141.148.230/27"

설정내용중 vhid(Virtual Host IDentification) 값과 P@ssw0rd로 셋팅된 pass값은 두 서버가 동일해야 하며,

이렇게 이중화된 여러개의 Pool이 있을 경우 vhid는 충돌나지 않게 정해아합니다.

저는 임의로 VIP 끝자리인 230으로 정했습니다.

그리고 advskew가 의미하는 것은 해당 서버들이 살아있을 때 작은 값으로 셋팅된 서버가 MASTER상태에 대한

우선순위를 갖는다는 뜻입니다.

즉, 두 서버 모두 정상상태 일경우 50으로 셋팅된 LB-1이 MASTER역할을 하게됩니다.

셋팅이 완료됐으면 저장후 리부팅을 하거나 네트웍인터페이스를 재시작해주세요

CARP 동작확인

CARP가 잘 동작중인지 ifconfig carp0 명령으로 확인해봅시다.

LB-2의 advskew값이 100으로, LB-1의 50보다 숫자가 크므로 우선순위가 낮겠죠?

그러므로 carp상태가 BACKUP으로 나오는게 정상입니다.

만약 LB-1이 죽어있다면 LB-2의 carp상태가 자동으로 MASTER로 바뀌고

125.141.148.230 VIP또한 LB-2가 사용하게 됩니다.

Page 9: Freebsd HA with CARP

무정지 웹서비스 구성 - 9

웹서비스 설치 및 테스트

Page 10: Freebsd HA with CARP

무정지 웹서비스 구성 - 10

NginX 설치

portsnap fetch extract

portsnap fetch update

위 명령을 통해 FreeBSD의 ports를 최신으로 업그레이드 합니다.

NginX 설치

cd /usr/ports/www/nginx 로 디렉토리를 옮겨,

make config install clean 으로 설치합니다.

Page 11: Freebsd HA with CARP

무정지 웹서비스 구성 - 11

NginX 시작

/usr/local/etc/rc.d/nginx start 명령으로 NginX를 시작합니다.

이런... 시작할 수 없다고 나오네요

/etc/rc.conf에 nginx_enable="YES" 행을 추가한 후 시작합니다.

Index 페이지 만들기

LB-1에서

mkdir -p /usr/local/www/nginx

echo "LB-1" > /usr/local/www/nginx/index.html

위 명령으로 인덱스 페이지를 만듭니다.

LB-2 서버에서는

echo "LB-2" > /usr/local/www/nginx/index.html

위 명령처럼 인덱스 페이지를 다르게 만들어준다면 Fail-over가 잘 되는지 쉽게 확인할 수 있겠죠?

웹페이지 접속확인

LB-1이라고 적혀나오는걸보니 LB-1이 MASTER상태이군요

그럼 Fail-over가 잘 되는지 확인해봅시다.

LB-1을 리부팅합니다.

Fail-over 확인

LB-1이 리부팅되었으므로 LB-2가 MASTER상태가 되었음을 확인할 수 있습니다.

ifconfig carp0 명령으로 확인 할 수 있습니다.

Page 12: Freebsd HA with CARP

무정지 웹서비스 구성 - 12

웹페이지 접속확인

LB-2가 MASTER가 되었으므로 페이지 또한 LB-2로 바뀌었네요

어렵지 않죠?

저렴한 비용으로 웹서버를 이중화해보았습니다.

감사합니다.