High Availability/Lab Environment

Fence_xvm 구성하기

Divine Providence 2024. 2. 15. 22:41

Fence_xvm 은 High Availability Cluster에서 리눅스 위에 kvm으로 가상머신 올리는 경우, 간단하게 구성할 수 있는 Fence 방법이다. 이 구성을 위해서는 kvm 호스트 머신에서 세팅, 그리고 클러스터 노드가 될 가상머신에서의 세팅 두가지 세팅이 필요하다.  이 구성은 RHEL8 기준이며, 다른 버전이나 상세 정보는 아래 Redhat KB 를 참고해야 한다. (로그인 필요)

 

https://access.redhat.com/solutions/917833

 

 

 

* kvm 호스트에서 세팅

 

1. 패키지 설치

아래와 같이 yum install fence-virt* 명령 수행 후 Installing 항목에서, 맨 위부터 serial로 끝나는 패키지까지만 설치하는것으로 기억하면 편하다.

 

# yum install  -y fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast fence-virtd-serial

 

 

2. fence_xvm 키파일 생성

먼저 /etc/cluster 디렉토리를 생성 후, dd명령으로 키파일을 생성한다. 이 키 파일은 kvm 호스트, 그리고 각 클러스터 노드의 /etc/cluster에 배치해야 한다.

 

# mkdir -p /etc/cluster 

# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=4k count=1

#scp /etc/cluster/fence_xvm.key 각클러스터노드호스트명또는아이피:/etc/cluster

  (만약 각 클러스터 노드에 /etc/cluster 경로가 없는경우 만들어줘야 한다)

 

 

3. fence_xvm 구성

fence_virtd -c 명령을 통해 conf 파일을 구성한다. 모든 설정은 엔터로 넘어가면 되는데, interface 부분은 클러스터 노드들이 통신하는 대역의 네트워크 장치를 입력하면 된다.

 

# fence_virtd -c                                                

 Parsing of /etc/fence_virt.conf failed.

    Module search path [/usr/lib64/fence-virt]:

    Listener module [multicast]: 

    Multicast IP Address [225.0.0.12]: 

    Multicast IP Port [1229]: 

    Interface [none]: br0      <---- Interface used for communication between the cluster nodes.

    Key File [/etc/cluster/fence_xvm.key]: 

    Backend module [libvirt]: 

    Libvirt URI [qemu:///system]: 

 

 

4. fence_virtd 데몬 재시작                                   

데몬을 재시작하여 변경된 구성을 적용한다.

 

# systemctl restart fence_virtd                                             

# systemctl enable fence_virtd                                        

 

 

5. 방화벽 설정

firewalld를 사용하여 1229 포트 방화벽을 오픈한다. tcp/udp 모두 오픈한다.

 

# firewall-cmd --add-port=1229/tcp --permanent

# firewall-cmd --add-port=1229/udp --permanent

# firewall-cmd --reload                                                

                        

 

 

* 클라이언트 (클러스터 노드) 에서 fence_xvm 설정

 

 

1. fence-virt 설치

# yum install -y fence-virt (fence-agents-all 을 설치하는 경우 자동으로 설치된다)

 

 

2. fence_xvm.key 파일 확인

# 위 kvm 호스트 세팅의 2번째 항목에서 복사한 /etc/cluster/fence_xvm.key 파일이 잘 있는지 확인

 

 

3. fence_xvm 통신을 위한 방화벽 해제 

# firewall-cmd --permanent --add-port=1229/tcp

# firewall-cmd --reload

 

 

4. fence_xvm 통신 테스트

# fence_xvm -o list

아래와 같이 생성된 가상머신들이 확인된다.

 

 

5. fence 구성

pcs stonith create fence_all fence_xvm pcmk_host_map="node1.hb:rhel8.3-node1 node2.hb:rhel8.3-node2 node3.hb:rhel8.3-node3" key_file=/etc/cluster/fence_xvm.key

 

pcmk_host_map 항목에서 형식이 nodename:port 라고 나오는데 port는 가상머신의 이름이다.  또한, 가상머신의 이름과 호스트명이 동일한 경우 pcmk_host_map은 입력하지 않아도 된다. fence_xvm 은 멀티캐스트라 충돌이 있을 수 있어 펜스 장치는 1개만으로 3개 노드를 커버하도록 한다. 

 

 

6. fence 테스트

모든 노드에서 watch pcs status. 수행 후 아래 명령 실행, 모니터링

pcs stonith fence node1.hb

pcs stonith fence node2.hb

pcs stonith fence node3.hb