부록 B. Ansible 플레이북을 통해 자동화된 수동 작업


이 문서에서 제공하는 Ansible 기반 솔루션은 지원되는 방식으로 인스턴스 HA를 구성하기 위한 수동 절차를 자동화하도록 설계되었습니다. 참조를 위해 이 부록은 솔루션에 의해 자동화된 단계를 제공합니다.

1. 컴퓨팅 노드에서 libvirtd 및 모든 OpenStack 서비스를 비활성화하여 시작합니다.

heat-admin@compute-n # sudo openstack-service stop
heat-admin@compute-n # sudo openstack-service disable
heat-admin@compute-n # sudo systemctl stop libvirtd
heat-admin@compute-n # sudo systemctl disable libvirtd
Copy to Clipboard Toggle word wrap

2. pacemaker-remote 와 함께 사용할 인증 키를 만듭니다.
컴퓨팅 노드 중 하나에서 이 단계를 수행합니다.

heat-admin@compute-1 # sudo mkdir -p /etc/pacemaker/
heat-admin@compute-1 # sudo dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
heat-admin@compute-1 # sudo cp /etc/pacemaker/authkey ./
heat-admin@compute-1 # sudo chown heat-admin:heat-admin authkey
Copy to Clipboard Toggle word wrap

3. 이 키를 director 노드에 복사한 다음 나머지 컴퓨팅 및 컨트롤러 노드에 복사합니다.

stack@director # scp authkey heat-admin@node-n:~/
heat-admin@node-n # sudo mkdir -p --mode=0750 /etc/pacemaker
heat-admin@node-n # sudo chgrp haclient /etc/pacemaker
heat-admin@node-n # sudo chown root:haclient /etc/pacemaker/authkey
Copy to Clipboard Toggle word wrap

4. 모든 컴퓨팅 노드에서 pacemaker-remote 를 활성화합니다.

heat-admin@compute-n # sudo systemctl enable pacemaker_remote
heat-admin@compute-n # sudo systemctl start pacemaker_remote
Copy to Clipboard Toggle word wrap

5. pacemaker(1.1.12-22.el7_1.4.x86_64) 및 resource-agents(3.9.5-40.el7_1.5.x86_64) 패키지의 필수 버전이 컨트롤러 및 컴퓨팅 노드에 설치되어 있는지 확인합니다.

heat-admin@controller-n # sudo rpm -qa | egrep \'(pacemaker|resource-agents)'
Copy to Clipboard Toggle word wrap

6. BZ#1257414 에 필요한 다음 제약 조건 해결 방법을 적용합니다.

참고

이 문제는 RHSA-2015:1862 에서 해결되었으며 환경에 필요하지 않을 수 있습니다.

heat-admin@controller-1 # sudo pcs constraint order start openstack-nova-novncproxy-clone then openstack-nova-api-clone
heat-admin@controller-1 # sudo pcs constraint order start rabbitmq-clone then openstack-keystone-clone
heat-admin@controller-1 # sudo pcs constraint order promote galera-master then openstack-keystone-clone
heat-admin@controller-1 # sudo pcs constraint order start haproxy-clone then openstack-keystone-clone
heat-admin@controller-1 # sudo pcs constraint order start memcached-clone then openstack-keystone-clone
heat-admin@controller-1 # sudo pcs constraint order promote redis-master then start openstack-ceilometer-central-clone require-all=false
heat-admin@controller-1 # sudo pcs resource defaults resource-stickiness=INFINITY
Copy to Clipboard Toggle word wrap

7. overcloudrc 파일을 사용하여 NovaEvacuate 활성/패시브 리소스를 생성하여 auth_url,username,tenantpassword 값을 제공합니다.

stack@director # scp overcloudrc heat-admin@controller-1:~/
heat-admin@controller-1 # . ~/overcloudrc
heat-admin@controller-1 # sudo pcs resource create nova-evacuate ocf:openstack:NovaEvacuate auth_url=$OS_AUTH_URL username=$OS_USERNAME password=$OS_PASSWORD tenant_name=$OS_TENANT_NAME \ 
1
Copy to Clipboard Toggle word wrap
1
공유 스토리지를 사용하지 않는 경우 no_shared_storage=1 옵션을 포함합니다. 자세한 내용은 2.1절. “공유 스토리지의 예외”를 참조하십시오.

8. 유동 IP 리소스 및 Image 서비스(glance), OpenStack Networking(neutron), Compute(nova) 서비스 후에 nova-evacuate 가 시작되었는지 확인합니다.

heat-admin@controller-1 # for i in $(sudo pcs status | grep IP | awk \'{ print $1 }\'); do sudo pcs constraint order start $i then nova-evacuate ; done
heat-admin@controller-1 # for i in openstack-glance-api-clone neutron-metadata-agent-clone openstack-nova-conductor-clone; do sudo pcs constraint order start $i then nova-evacuate require-all=false ; done
Copy to Clipboard Toggle word wrap

9. 컨트롤 플레인에서 모든 OpenStack 리소스를 비활성화합니다.

heat-admin@controller-1 # sudo pcs resource disable openstack-keystone --wait=540
Copy to Clipboard Toggle word wrap

여기에 사용된 시간 초과(--wait=540)는 예로만 사용됩니다. ID 서비스 중지에 필요한 시간 및 하드웨어의 전원에 따라 시간 초과 기간을 늘리는 것이 좋습니다.

10. cibadmin 데이터를 사용하여 현재 컨트롤러 목록을 생성합니다.

heat-admin@controller-1 # controllers=$(sudo cibadmin -Q -o nodes | grep uname | sed s/.*uname..// | awk -F\" \'{print $1}')
heat-admin@controller-1 # echo $controllers
Copy to Clipboard Toggle word wrap

11. 이 목록을 사용하여 이러한 노드를 osprole=controller 속성이 있는 컨트롤러로 태그합니다.

heat-admin@controller-1 # for controller in ${controllers}; do sudo pcs property set --node ${controller} osprole=controller ; done
Copy to Clipboard Toggle word wrap

12. 환경에 이미 존재하는 stonith 장치 목록을 빌드합니다.

heat-admin@controller-1 # stonithdevs=$(sudo pcs stonith | awk \'{print $1}')
heat-admin@controller-1 # echo $stonithdevs
Copy to Clipboard Toggle word wrap

13. 컨트롤 플레인 서비스에 태그를 지정하여 위에서 확인한 컨트롤러에서만 실행되도록 하여 나열된 stonith 장치를 건너뜁니다.

heat-admin@controller-1 # for i in $(sudo cibadmin -Q --xpath //primitive --node-path | tr ' ' \'\n' | awk -F "id=\'" '{print $2}' | awk -F "\'" '{print $1}' | uniq); do
    found=0
    if [ -n "$stonithdevs" ]; then
        for x in $stonithdevs; do
            if [ $x = $i ]; then
                found=1
            fi
	    done
    fi
    if [ $found = 0 ]; then
        sudo pcs constraint location $i rule resource-discovery=exclusive score=0 osprole eq controller
    fi
done
Copy to Clipboard Toggle word wrap

14. neutron-openvswitch-agent:부터 pacemaker 에서 컴퓨팅 노드 리소스를 채우십시오.

heat-admin@controller-1 # sudo pcs resource create neutron-openvswitch-agent-compute systemd:neutron-openvswitch-agent op start timeout 200s stop timeout 200s --clone interleave=true --disabled --force
heat-admin@controller-1 # sudo pcs constraint location neutron-openvswitch-agent-compute-clone rule resource-discovery=exclusive score=0 osprole eq compute
heat-admin@controller-1 # sudo pcs constraint order start neutron-server-clone then neutron-openvswitch-agent-compute-clone require-all=false
Copy to Clipboard Toggle word wrap

그런 다음 compute libvirtd 리소스입니다.

heat-admin@controller-1 # sudo pcs resource create libvirtd-compute systemd:libvirtd op start timeout 200s stop timeout 200s --clone interleave=true --disabled --force
heat-admin@controller-1 # sudo pcs constraint location libvirtd-compute-clone rule resource-discovery=exclusive score=0 osprole eq compute
heat-admin@controller-1 # sudo pcs constraint order start neutron-openvswitch-agent-compute-clone then libvirtd-compute-clone
heat-admin@controller-1 # sudo pcs constraint colocation add libvirtd-compute-clone with neutron-openvswitch-agent-compute-clone
Copy to Clipboard Toggle word wrap

그런 다음 openstack-ceilometer-compute 리소스:

heat-admin@controller-1 # sudo pcs resource create ceilometer-compute systemd:openstack-ceilometer-compute op start timeout 200s stop timeout 200s --clone interleave=true --disabled --force
heat-admin@controller-1 # sudo pcs constraint location ceilometer-compute-clone rule resource-discovery=exclusive score=0 osprole eq compute
heat-admin@controller-1 # sudo pcs constraint order start openstack-ceilometer-notification-clone then ceilometer-compute-clone require-all=false
heat-admin@controller-1 # sudo pcs constraint order start libvirtd-compute-clone then ceilometer-compute-clone
heat-admin@controller-1 # sudo pcs constraint colocation add ceilometer-compute-clone with libvirtd-compute-clone
Copy to Clipboard Toggle word wrap

다음은 nova-compute 리소스입니다.

heat-admin@controller-1 # . /home/heat-admin/overcloudrc
heat-admin@controller-1 # sudo pcs resource create nova-compute-checkevacuate ocf:openstack:nova-compute-wait auth_url=$OS_AUTH_URL username=$OS_USERNAME password=$OS_PASSWORD tenant_name=$OS_TENANT_NAME domain=localdomain op start timeout=300 --clone interleave=true --disabled --force
heat-admin@controller-1 # sudo pcs constraint location nova-compute-checkevacuate-clone rule resource-discovery=exclusive score=0 osprole eq compute
heat-admin@controller-1 # sudo pcs constraint order start openstack-nova-conductor-clone then nova-compute-checkevacuate-clone require-all=false
heat-admin@controller-1 # sudo pcs resource create nova-compute systemd:openstack-nova-compute --clone interleave=true --disabled --force
heat-admin@controller-1 # sudo pcs constraint location nova-compute-clone rule resource-discovery=exclusive score=0 osprole eq compute
heat-admin@controller-1 # sudo pcs constraint order start nova-compute-checkevacuate-clone then nova-compute-clone require-all=true
heat-admin@controller-1 # sudo pcs constraint order start nova-compute-clone then nova-evacuate require-all=false
heat-admin@controller-1 # sudo pcs constraint order start libvirtd-compute-clone then nova-compute-clone
heat-admin@controller-1 # sudo pcs constraint colocation add nova-compute-clone with libvirtd-compute-clone
Copy to Clipboard Toggle word wrap

15. 컴퓨팅 노드에 stonith 장치를 추가합니다. 각 컴퓨팅 노드에 대해 다음 명령을 실행합니다.

heat-admin@controller-1 # sudo pcs stonith create ipmilan-overcloud-compute-N  fence_ipmilan pcmk_host_list=overcloud-compute-0 ipaddr=10.35.160.78 login=IPMILANUSER passwd=IPMILANPW lanplus=1 cipher=1 op monitor interval=60s;
Copy to Clipboard Toggle word wrap

다음과 같습니다.

  • N 은 각 컴퓨팅 노드의 식별 수입니다(예: ipmilan-overcloud-compute -1,ipmilan-overcloud-compute-2 등).
  • IPMILANUSERIPMILANPW 는 IPMI 장치의 사용자 이름 및 암호입니다.

16. 별도의 fence-nova stonith 장치를 생성합니다.

heat-admin@controller-1 # . overcloudrc
heat-admin@controller-1 # sudo pcs stonith create fence-nova fence_compute \
                                    auth-url=$OS_AUTH_URL \
                                    login=$OS_USERNAME \
                                    passwd=$OS_PASSWORD \
                                    tenant-name=$OS_TENANT_NAME \
                                    record-only=1 --force
Copy to Clipboard Toggle word wrap

17. 펜싱 후 컴퓨팅 노드를 복구할 수 있는지 확인합니다.

heat-admin@controller-1 # sudo pcs property set cluster-recheck-interval=1min
Copy to Clipboard Toggle word wrap

18. 컴퓨팅 노드 리소스를 생성하고 노드의 물리적 펜스 장치와 fence-nova 를 모두 포함하도록 stonith 수준 1 을 설정합니다. 각 컴퓨팅 노드에 대해 다음 명령을 실행합니다.

heat-admin@controller-1 # sudo pcs resource create overcloud-compute-N ocf:pacemaker:remote reconnect_interval=60 op monitor interval=20
heat-admin@controller-1 # sudo pcs property set --node overcloud-compute-N osprole=compute
heat-admin@controller-1 # sudo pcs stonith level add 1 overcloud-compute-N ipmilan-overcloud-compute-N,fence-nova
heat-admin@controller-1 # sudo pcs stonith
Copy to Clipboard Toggle word wrap

N 을 각 compute 노드의 식별 번호로 바꿉니다(예: overcloud-compute-1,overcloud-compute-2 등). 이러한 식별 번호를 사용하여 각 컴퓨팅 노드와 이전에 생성된 stonith 장치(예: overcloud-compute-1ipmilan-overcloud-compute-1)와 일치시킵니다.

19. 컨트롤 및 컴퓨팅 플레인 서비스를 활성화합니다.

heat-admin@controller-1 # sudo pcs resource enable openstack-keystone
heat-admin@controller-1 # sudo pcs resource enable neutron-openvswitch-agent-compute
heat-admin@controller-1 # sudo pcs resource enable libvirtd-compute
heat-admin@controller-1 # sudo pcs resource enable ceilometer-compute
heat-admin@controller-1 # sudo pcs resource enable nova-compute-checkevacuate
heat-admin@controller-1 # sudo pcs resource enable nova-compute
Copy to Clipboard Toggle word wrap

20. 실패한 리소스를 정리하기 전에 환경이 안정될 때까지 잠시 기다립니다.

heat-admin@controller-1 # sleep 60
heat-admin@controller-1 # sudo pcs resource cleanup
heat-admin@controller-1 # sudo pcs status
heat-admin@controller-1 # sudo pcs property set stonith-enabled=true
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat