siklog
[NCP/Network] Keepalived를 활용한 HA(고가용성) 구성 방법 본문
테스트 환경: NCP Classic 환경 Server centos-7.8-64, 추가 Private Subnet 및 Network Interface
이번 포스팅에서는 Keepalived를 활용하여 VM에서 HA(High available)를 구성하는 방법에 대해 테스트를 해보려고 한다.
HA를 구성하는 방법은 여러가지가 있는데 완전 관리형 서비스의 경우에는 콘솔에서 기본 기능으로 제공되기도 하지만 Keepalived 나 Pacemaker 와 같은 라우팅 소프트웨어들을 활용하여 구성하는 방법을 사용할 수도 있다.
현재 NCP Classic 환경에서는 Keepalived 및 VRRP 로 HA 구성이 가능하도록 제공하고 있고, 이 방법으로 진행하였다. (VPC 환경에서는 사용 불가능)
Pacemaker 는 다음 포스팅으로 VPC 환경에서 LB+Pacemaker+corosync + (pcs) 의 형태로 구성하여 포스팅해볼 예정이다.
구성은 아래와 같이 진행하였다.
1. NCP Classic 환경 2대의 서버 생성
- 테스트로 KR-2 존에 keepalived-test001, keepalived-test002 의 이름으로 두 서버를 생성하였다.
2. Private Subnet 생성
- KR-2 존에서 진행할 예정임으로 KR-2 존에 Subnet IP를 192.168.5.0/24 대역으로 설정해 주었다.
3. 두 서버에 추가 네트워크 인터페이스 할당
- 서브넷 생성을 완료 후 keepalived-test001, keepalived-test002 서버에 추가 인터페이스를 할당한다.
- keepalived-test001 / MASTER : 192.168.5.101
- keepalived-test002 / BACKUP : 192.168.5.102
- 콘솔에서 네트워크 인터페이스를 할당시켰다면 서버 내부에서 인터페이스를 활성화하는 작업을 진행한다.
- 아래와 같이 ifconfig 명령어로 조회 시 eth1 에 해당 추가 비공인 IP가 정상적으로 올라와있는 것을 확인하면 된다.
[CentOS의 경우]
$> vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=Interface IP 입력
NETMASK=255.255.255.0
ONBOOT=yes
$> ifup eth1
[Ubuntu 16.04의 경우]
$> vi /etc/network/interfaces
……
# The secondary Network Interface
auto eth1
iface eth1 inet static
address INTERFACE IP 입력
netmask 255.255.255.0
$> ifup eth1
[Ubuntu 18.04의 경우]
Ubuntu 18.04는 인터페이스를 위한 yaml 설정 파일을 생성한 후 다음의 명령을 실행해야함.
$> vi /etc/netplan/02-netcfg.yaml
network:
ethernets:
eth1:
dhcp4: false
dhcp6: false
addresses: [INTERFACE IP 입력]
version: 2
$> netplan --debug apply
4. 두 서버에 VIP 할당
- 앞선 작업들이 모두 완료되었다면 keepalived-test001, keepalived-test002 두 서버에 VIP를 할당해야 하는데 VIP는 192.168.5.100으로 설정해 주었다. 각각 서버에 eth1:0으로 추가해 주도록 한다.
[root@keepalived-test001 ~]# ifconfig eth1:0 192.168.5.100 netmask 255.255.255.0
[root@keepalived-test002 ~]# ifconfig eth1:0 192.168.5.100 netmask 255.255.255.0
5. keepalived 설치 및 설정 파일 수정
- 설치
# yum install keepalived -y (*Ubuntu는 apt-get install 로 설치)
- 설정 파일 수정 시 conf 파일에서 vrrp 만 사용할 것임으로 다른 설정들은 지워주고 아래 설정으로 수정 한다.
# vi /etc/keepalived/keepalived.conf
[keepalived-test001 / MASTER]
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.5.100
}
}
[keepalived-test002 / BACKUP]
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.5.100
}
}
*주의할 점
- 우선순위가 높은 값이 MASTER 서버가 되므로 MASTER 서버의 Priority 값을 더 높게 설정해야 함
- auth_pass 및 virtual_router 값은 MASTER 서버와 BACKUP 서버 모두 동일해야 함. (해당 값은 default 값으로 설정하였다.)
6. Keepalived 서비스 실행 및 테스트
- 실행
# systemctl start keepalived
# systemctl enable keepalived
Keepalived를 실행 후 실제로 Keepalived가 잘 실행되는지 확인을 해보기 위해 앞서 만든 두 서버와 같은 Private Subnet 안에 테스트 서버를 하나 더 만들어 VIP(192.168.5.100)로 PING 을 보내고, keepalived-test001(MASTER)서버를 정지상태로 만들어 테스트를 해볼 수 있다.
/var/log/messages
위 로그를 살펴보면 아래와 같이 MASTER 서버에서 VIP를 Take-Over 해온 것을 확인할 수 있다.
Mar 18 00:33:51 keepalived-test002 Keepalived_vrrp[4033]: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 18 00:33:52 keepalived-test002 Keepalived_vrrp[4033]: VRRP_Instance(VI_1) Entering MASTER STATE
* Ubuntu는 아래 로그에서 확인 가능하다.
/var/log/syslog
추가로, 만약 ping이 가지 않는 다고 해도 ACG의 문제는 아니다. 테스트로 만든 서버와는 추가 할당된 이더넷으로 비공인 통신하기 때문에 ACG의 영향을 받지 않는다. 따라서 설정 부분을 다시 확인해봐야 한다.
해당 포스팅은 아래 네이버 클라우드 플랫폼 블로그의 포스팅을 참고하였습니다.
https://blog.naver.com/n_cloudplatform/221516916375
'클라우드 > NCP' 카테고리의 다른 글
[NCP/콘솔 사용법] Object Storage 특정 버킷에 대한 서브 계정 권한 설정방법 (0) | 2022.04.06 |
---|---|
[NCP/Network] IPsec VPN을 이용한 NCP to AWS MultiCloud 구성 방법 (0) | 2022.04.03 |
[NCP/Network] PCS를 활용한 Active-Stanby 구조 HA cluster 구성 방법 (4) | 2022.03.26 |
[NCP/Load Balancer] Web 서버 서비스 별 기본 루트 경로 및 헬스체크 경로 (0) | 2022.03.17 |
[Server/mount] Linux 환경에서 CIFS 프로토콜을 이용하여 마운트하는 방법 (0) | 2022.03.13 |