5.2. 오버클라우드에서 펜싱 배포 및 테스트

펜싱 구성 프로세스에는 다음 단계가 포함됩니다.

  1. STONITH 및 Pacemaker 상태 검토.
  2. fencing.yaml 파일을 생성합니다.
  3. 오버클라우드를 재배포하고 설정을 테스트합니다.

사전 요구 사항

director에서 컨트롤러 노드를 등록할 때 생성한 nodes.json 파일에 액세스할 수 있는지 확인합니다. 이 파일은 배포 중에 생성하는 fencing.yaml 파일에 필요한 입력입니다.

STONITH 및 Pacemaker 상태 검토

  1. 각 컨트롤러 노드에 heat-admin 사용자로 로그인합니다.
  2. 클러스터가 실행 중인지 확인합니다.

    $ 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
  3. 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
    참고
    • 이 명령은 ilodrac 전원 관리 세부 정보를 IPMI로 변환합니다.
    • nodes.json 파일에 노드의 NIC(네트워크 인터페이스) 중 하나의 MAC 주소가 포함되어 있는지 확인합니다. 자세한 내용은 오버클라우드 노드 등록을 참조하십시오.
    • RHV를 사용하는 경우 권한이 있는 역할을 사용하여 UserVMManager 와 같은 가상 시스템을 생성하고 시작합니다.
  • 스토리지 블록 장치(SBD), fence_kdump 또는 Redfish와 같은 다른 펜싱 에이전트를 사용하는 경우 fencing.yaml 파일을 수동으로 생성합니다.

    참고

    사전 프로비저닝된 노드를 사용하는 경우 fencing.yaml 파일도 수동으로 생성해야 합니다.

지원되는 펜싱 에이전트에 대한 자세한 내용은 5.1절. “지원되는 펜싱 에이전트” 을 참조하십시오.

오버클라우드를 재배포하고 설정을 테스트합니다.

  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
  2. 오버클라우드에 로그인하고 각 컨트롤러 노드에 펜싱이 구성되었는지 확인합니다.

    1. 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 프로세스를 구성해서는 안 됩니다.

    2. pcs stonith show 명령을 실행하여 펜싱 리소스 특성을 확인합니다.

      $ sudo pcs stonith show <stonith-resource-controller-x>

      STONITH 특성 값은 fencing.yaml 파일의 값과 일치해야 합니다.

컨트롤러 노드에서 펜싱 확인

펜싱이 올바르게 작동하는지 테스트하려면 컨트롤러 노드의 모든 포트를 닫고 서버를 재부팅하여 펜싱을 트리거합니다.

  1. 컨트롤러 노드에 로그인합니다.

    $ source stackrc
    $ nova list |grep controller
    $ ssh heat-admin@<controller-x_ip>
  2. 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
    중요

    이 단계에서는 컨트롤러 노드에 대한 모든 연결이 삭제되어 서버가 재부팅됩니다.

  3. 다른 컨트롤러 노드에서 Pacemaker 로그 파일에서 펜싱 이벤트를 찾습니다.

    $ ssh heat-admin@<controller-x_ip>
    $ less /var/log/cluster/corosync.log
    (less): /fenc*

    STONITH 서비스가 컨트롤러에서 펜싱 작업을 수행한 경우 로그 파일에 펜싱 이벤트가 표시됩니다.

  4. 몇 분 정도 기다린 다음 pcs status 명령을 실행하여 재부팅된 컨트롤러 노드가 클러스터에서 다시 실행되고 있는지 확인합니다.