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 configuredSTONITH가 비활성화되어 있는지 확인합니다.
$ 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명령을 실행하여 재부팅된 컨트롤러 노드가 클러스터에서 다시 실행되고 있는지 확인합니다.