Posts NCP에서 HA 구성해보기
Post
Cancel

NCP에서 HA 구성해보기

부스트캠프에서 팀프로젝트를 하면서 HAProxy를 이용한 로드밸런싱을 구현했었는데 실제 서비스에서는 안정성을 위해 Proxy 서버를 이중화하여 HA(High Availability)를 구성한다고 한다.

HA 구성에 대한 자료를 찾아보니 마침 NCP(네이버 클라우드 플랫폼) 환경에서 HA를 구성하는 방법이 있었는데 직접 적용해보면서 그 과정을 정리하려고 한다. (하루 남은 크레딧도 알차게 사용할겸..)

이 방법은 Keepalived를 이용한다.

Keepalived

  • 가상 IP를 기반으로 서버를 다중화하는 도구
  • Master 서버를 모니터링하다 해당 노드에 장애가 발생했을 시, Backup 서버로 Failover


1. Server 생성

Master, Backup 서버로 사용할 서버 2대와 테스트용 서버 1대를 NCP에서 생성해준다.

실제 서비스용이 아닌 실습용 서버이므로 적당한 사양의 서버를 생성했으며, 생성한 서버의 사양은 아래와 같다.

  • Ubuntu 18.04

  • [Compact] 1vCPU, 2GB Mem, 50GB Disk [g1]


2. Private subnet 생성

NCP에서 VIP를 사용하기 위해서는 추가 인터페이스를 할당해주어야 하는데, 그 이유는 NCP에서는 eth0에 IP alias를 사용할 경우, IP Spoofing으로 인식하고 해당 VM의 네트워크 통신을 끊어버리기 때문이라고 한다.

NCP에서는 Zone 당 하나의 서브넷 생성만 가능하다.

스크린샷 2020-12-30 오후 2 50 07


3. 인터페이스 할당

인터페이스 설정은 NCP의 Network Interface 메뉴에서 지원한다.

위에서 생성한 서브넷을 이용하여 각 서버에 인터페이스를 할당해준다.

스크린샷 2020-12-30 오후 3 31 06

그 다음 서버로 접속(SSH) 하여 인터페이스를 활성화 해준다. (모든 서버에 적용해준다)

인터페이스 설정

1
2
3
4
5
6
7
sudo nano /etc/network/interfaces

# The secondary network interface
auto eth1
iface eth1 inet static
address <NCP에서 설정한 IP 주소>
netmask 255.255.255.0

인터페이스 활성화

1
sudo ifup eth1

인터페이스가 제대로 활성화 된 경우 ifconfig 명령을 사용했을 때 아래와 같이 eth1 인터페이스가 보여진다.

스크린샷 2020-12-30 오후 3 21 41


4. Keepalived 설정

Master, Backup 서버에 Keepalived 를 설치해준다.

1
2
sudo apt-get update
sudo apt-get install keepalived

설치를 마친후, Keepalived 설정 파일을 수정한다.

1
sudo nano /etc/keepalived/keepalived.conf

Master

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vrrp_instance VI_1 {
	state MASTER
	interface eth1
	virtual_router_id 51
	priority 200
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass pass1234
	}
	virtual_ipaddress {
		192.168.200.102/24
	}
}

Backup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vrrp_instance VI_1 {
	state BACKUP
	interface eth1
	virtual_router_id 51
	priority 100
	advert_int 1
	authentication {
		auth_type PASS
		auth_pass pass1234
	}
	virtual_ipaddress {
		192.168.200.102/24
	}
}

주의할 점

  • Master 서버의 Priority를 Backup 서버보다 더 높게 설정해주어야 한다.
    (priority값이 더 높은 쪽이 Master서버가 된다.)
  • auth_pass, virtual_router 값은 Master, Backup 서버 모두 동일해야 한다.


설정이 완료되면 keepalived를 실행한다.

1
sudo service keepalived start


keepalived를 실행후 ip addr 명령을 실행해보면 Master 서버에만 VIP가 할당된 것을 확인할 수 있다.

Master

스크린샷 2020-12-31 오후 9 45 44

Backup

스크린샷 2020-12-31 오후 9 28 29


5. HA 테스트

실제로 keepalived가 잘 실행되는지 확인해보기 위해 테스트 서버에서 VIP로 Ping을 날려본다.

1
ping 192.168.200.102

네트워크 설정이 제대로 되었다면 아래와 같이 응답이 도착하게 된다.

스크린샷 2020-12-30 오후 5 00 23

Master 서버에서 reboot 명령을 실행하여 down 상태로 만들고, Ping 응답이 유지되는지 확인한다.

스크린샷 2020-12-30 오후 4 46 34

스크린샷 2020-12-30 오후 4 46 59

Backup 서버의 로그를 확인해보면 아래와 같이 Master 상태로 변경된 것을 확인할 수 있다.

스크린샷 2020-12-30 오후 4 46 38

Master로 승격된 Backup 서버의 eth1 인터페이스에 VIP가 할당된 것도 확인할 수 있다.

스크린샷 2020-12-31 오후 9 44 28

Master와 Backup 서버 모두 down 상태로 만들면 Ping이 전달되지 않게 되는데 Reboot이 완료되어 재실행되면 Ping이 다시 전달된다.

스크린샷 2020-12-30 오후 4 47 33


마치며

NCP 환경에서 keepalived를 활용하여 HA를 구성하는 작업을 해보았는데, NCP의 네트워크 인터페이스 설정이 있어서 쉽게 설정할 수 있었던 것 같다. 하지만 NCP를 사용하지 않는 환경이라면 서브넷을 이용해 인터페이스를 할당하는 과정을 별도로 구성해줘야하는데 이 방법도 한번 찾아보고 적용을 해봐야 할 것 같다.

References

https://navercloudplatform.medium.com

This post is licensed under CC BY 4.0 by the author.

서버 보안 설정 정리

Bean 정리

Comments powered by Disqus.