5.2. 오버클라우드에서 펜싱 배포 및 테스트
펜싱 구성 프로세스에는 다음 단계가 포함됩니다.
- STONITH 및 Pacemaker 상태 검토.
-
fencing.yaml
파일을 생성합니다. - 오버클라우드를 재배포하고 설정을 테스트합니다.
사전 요구 사항
director에서 컨트롤러 노드를 등록할 때 생성한 nodes.json
파일에 액세스할 수 있는지 확인합니다. 이 파일은 배포 중에 생성하는 fencing.yaml
파일에 필요한 입력입니다.
STONITH 및 Pacemaker 상태 검토
- 각 컨트롤러 노드에 heat-admin 사용자로 로그인합니다.
클러스터가 실행 중인지 확인합니다.
$ sudo pcs status
출력 예:
Cluster name: openstackHA Last updated: Wed Jun 24 12:40:27 2015 Last change: Wed Jun 24 11:36:18 2015 Stack: corosync Current DC: lb-c1a2 (2) - partition with quorum Version: 1.1.12-a14efad 3 Nodes configured 141 Resources configured
STONITH가 비활성화되어 있는지 확인합니다.
$ sudo pcs property show
출력 예:
Cluster Properties: cluster-infrastructure: corosync cluster-name: openstackHA dc-version: 1.1.12-a14efad have-watchdog: false stonith-enabled: false
fencing.yaml
환경 파일을 생성합니다.
다음 옵션 중 하나를 선택합니다.
IPMI 또는 RHV(Red Hat Virtualization) 펜싱 에이전트를 사용하는 경우 다음 명령을 실행하여
fencing.yaml
환경 파일을 생성합니다.$ openstack overcloud generate fencing --output fencing.yaml nodes.json
참고-
이 명령은
ilo
및drac
전원 관리 세부 정보를 IPMI로 변환합니다. -
nodes.json
파일에 노드의 NIC(네트워크 인터페이스) 중 하나의 MAC 주소가 포함되어 있는지 확인합니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오. -
RHV를 사용하는 경우 권한이 있는 역할을 사용하여
UserVMManager
와 같은 가상 시스템을 생성하고 시작합니다.
-
이 명령은
스토리지 블록 장치(SBD),
fence_kdump
또는 Redfish와 같은 다른 펜싱 에이전트를 사용하는 경우fencing.yaml
파일을 수동으로 생성합니다.참고사전 프로비저닝된 노드를 사용하는 경우
fencing.yaml
파일도 수동으로 생성해야 합니다.
지원되는 펜싱 에이전트에 대한 자세한 내용은 5.1절. “지원되는 펜싱 에이전트” 을 참조하십시오.
오버클라우드를 재배포하고 설정을 테스트합니다.
오버클라우드 배포
명령을 실행하고 컨트롤러 노드에서 펜싱을 구성하기 위해 생성한fencing.yaml
파일을 포함합니다.openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yaml
오버클라우드에 로그인하고 각 컨트롤러 노드에 펜싱이 구성되었는지 확인합니다.
Pacemaker가 리소스 관리자로 구성되어 있는지 확인합니다.
$ source stackrc $ nova list | grep controller $ ssh heat-admin@<controller-x_ip> $ sudo pcs status |grep fence stonith-overcloud-controller-x (stonith:fence_ipmilan): Started overcloud-controller-y
이 예에서 Pacemaker는
fencing.yaml
파일에 지정된 각 컨트롤러 노드에 STONITH 리소스를 사용하도록 구성되어 있습니다.참고제어하는 동일한 노드에서
fence-resource
프로세스를 구성해서는 안 됩니다.pcs stonith show
명령을 실행하여 펜싱 리소스 특성을 확인합니다.$ sudo pcs stonith show <stonith-resource-controller-x>
STONITH 특성 값은
fencing.yaml
파일의 값과 일치해야 합니다.
컨트롤러 노드에서 펜싱 확인
펜싱이 올바르게 작동하는지 테스트하려면 컨트롤러 노드의 모든 포트를 닫고 서버를 재부팅하여 펜싱을 트리거합니다.
컨트롤러 노드에 로그인합니다.
$ source stackrc $ nova list |grep controller $ ssh heat-admin@<controller-x_ip>
root 사용자로 변경하고 각 포트에서
iptables
명령을 실행합니다.$ sudo -i iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5016 -j ACCEPT && iptables -A INPUT -p udp -m state --state NEW -m udp --dport 5016 -j ACCEPT && iptables -A INPUT ! -i lo -j REJECT --reject-with icmp-host-prohibited && iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT && iptables -A OUTPUT -p tcp --sport 5016 -j ACCEPT && iptables -A OUTPUT -p udp --sport 5016 -j ACCEPT && iptables -A OUTPUT ! -o lo -j REJECT --reject-with icmp-host-prohibited
중요이 단계에서는 컨트롤러 노드에 대한 모든 연결이 삭제되어 서버가 재부팅됩니다.
다른 컨트롤러 노드에서 Pacemaker 로그 파일에서 펜싱 이벤트를 찾습니다.
$ ssh heat-admin@<controller-x_ip> $ less /var/log/cluster/corosync.log (less): /fenc*
STONITH 서비스가 컨트롤러에서 펜싱 작업을 수행한 경우 로그 파일에 펜싱 이벤트가 표시됩니다.
-
몇 분 정도 기다린 다음
pcs status
명령을 실행하여 재부팅된 컨트롤러 노드가 클러스터에서 다시 실행되고 있는지 확인합니다.