■ LVS 란?
Linux Virtual Server의 약자이며, 말 그대로 리눅스 가상 서버입니다. HA(고가용성) 서버를 구축하기 위해 리눅스 환경의 서버를 로드 밸런싱 할수 있도록 도와줍니다.
(L4 스위치를 이용한 운영이 가장 좋습니다만, 가격적인 부분이 부담스러워 사용하는 경우가 대부분 일것같습니다.)
■ 구축 환경
※ OS - CentOS Linux release 7.9.2009 (Core) - 실제로 테스트 당시에는, Public IP를 사용하였으니 참고 바랍니다. ※ 구성에 사용되는 데몬 - Corosync : 클러스터 인프라 지원(Quorum 관리, 메세지 관리 등) - Pacemaker : 클러스터 자원 관리자 - PCS : Corosync / pacemaker 관리하는 Management 데몬 - ldirectord : 원격 서비스를 모니터링하고, LVS를 제어하는 데몬 |
■ Pacemaker 설치 (LVS-Master, Slave 모두 설치)
Pacemaker 관련 내용은 추가로 업데이트할 예정이며, 설치 및 설정에 관한 내용만 게시하였습니다.
1. /etc/hosts 에 호스트 등록
→ IP 같은 경우 환경에 맞게 수정 부탁드립니다.
192.168.0.250 lvsm 192.168.0.251 lvss |
2. /etc/sysctl.conf에 아래의 설정 추가
# vi /etc/sysctl.conf net.ipv4.ip_forward = 1 #sysctp -p |
3. 주요 패키지 설치
# yum install -y pacemaker corosync pcs psmisc policycoreutils-python # systemctl enable pcsd # systemctl enable corosync # systemctl enable pacemaker |
4. PCS 데몬 구동 및 노드간 통신을 위해 관리계정 (hacluster) 패스워드 설정
→ 노드간 로그인을 통해 corosync 구성을 동기화 하거나, 다른 노드에서 클러스터 실행 및 중지 작업 수행에 必
※ Master, Slave 모두 동일한 패스워드로 설정
# systemctl start pcsd # password hacluster # echo 'hklvstest' | passwd --stdin hacluster |
5. Cluster Node 인증 설정 ( Master 에서만 진행 )
→ 방화벽이 올라와 있을 경우 아래의 포트를 오픈해준 후 진행해야 인증이 가능
※ Open이 필요한 방화벽 포트 ◇ TCP : 2224, 3121, 21064 ◇ UDP : 5405 # pcs cluster auth lvsm lvss Username: hacluster Password: lvsm: Authorized lvss: Authorized |
6. Cluster 구성 및 활성화
# pcs cluster setup --name lvs_cluster lvsm lvss![]() # pcs cluster start --all # pcs cluster enable --all → 노드간 통신은 UDP 포트를 이용하여 통신 ![]() |
7. Cluster 기본 셋팅
※ STONITH(Fencing Device) : 의도치 않은 동시 엑세스로 인한 데이터 손상을 보호함. → 클러스터 장애 시 해당 node를 끊어 공유 데이터의 무결성을 보장. ※ no-quorum-policy : 클러스터에 quorum이 없을 때의 수행작업을 설정. # pcs property set stonith-enabled=false → Fencing Device 기능 비활성화 # pcs property set no-quorum-policy=ignore → 2개의 node로 구성 시 일반적으로 사용하는 옵션이며, 해당 설정이 안되어 있을 경우, 클러스터 간에 failover 시 부자연스러울 수 있음. |
8. Resource 등록
자신이 사용할 VIP를 입력하여, 리소스 등록
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=[VIP] cidr_netmask=32 nic=eth0:1 op monitor interval=30s![]() |
■ ldirectord 설치 (LVS-Master, Slave 모두 설치)
로드 밸런싱을 위해 설치합니다.
1. ldirectord 설치
# cd /usr/local/src/;wget --content-disposition https://packagecloud.io/s_mcleod/pacemaker/packages/el/7/ldirectord-4.0.1-1.84.caee.el7.centos.x86_64.rpm/download.rpm # yum -y install ldirectord-4.0.1-1.84.caee.el7.centos.x86_64.rpm |
2. ldirectord 설정 추가
IP 같은 경우 환경에 맞도록 수정해서 넣어줍니다.
※ [LVS Server]
# vi /etc/ha.d/ldirectord.cf checktimeout=10 checkinterval=10 autoreload=no quiescent=no # HTTP Service virtual = [VIP]:80 real=[RealServer1 IP]:80 gate 10 real=[RealServer2 IP]:80 gate 10 service=http scheduler=wlc persistent=3600 protocol=tcp checkport=80 checktype=connect |
※ [Real Server]
# vi /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 IPADDR=[VIP] NETMASK=255.255.255.255 ONBOOT=no # 해당 설정을 하지 않을경우, lo:0에서 VIP의 MAC주소를 가져오려는 시도가 계속됩니다. # vi /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.eth0.arp_announce = 2 # sysctp -p |
3. ldirectord Resource 추가
# pcs resource create ldirectord lsb:ldirectord op monitor interval="20" timeout="10" |
4. VIP, ldirectord 순으로 실행되기 위해 colocation 설정 추가.
# pcs constraint colocation add VirtualIP with ldirectord![]() → lvss에 (-)INFINITY 값을 부여하여 마스터 서버에서 리소스를 가져가게 설정이 됨. |
'Linux > HA' 카테고리의 다른 글
PDNS 이중화 구성 (0) | 2022.03.28 |
---|---|
Pacemaker + DRBD 를 이용한 이중화 구성 (0) | 2022.03.24 |