Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

2.6. OpenStack Platform 10.z의 현재 오버클라우드 패키지 업데이트

director는 모든 오버클라우드 노드에서 패키지를 업데이트하는 명령을 제공합니다. 이를 통해 현재 버전의 OpenStack Platform 환경에서 마이너 업데이트를 수행할 수 있습니다. Red Hat OpenStack Platform 10 의 마이너 업데이트입니다.

참고

이 단계에서는 Overcloud 노드의 운영 체제를 최신 버전의 Red Hat Enterprise Linux 7 및 Open vSwitch로 업데이트합니다.

사전 요구 사항

  • 현재 언더클라우드 버전의 최신 마이너 릴리스로 업데이트되었습니다.
  • 오버클라우드 백업을 수행했습니다.

절차

  1. rhel_reg_release 매개변수의 서브스크립션 관리 구성을 확인합니다. 이 매개변수가 설정되지 않은 경우 포함시키고 버전 7.7을 설정해야 합니다.

    parameter_defaults:
      ...
      rhel_reg_release: "7.7"

    오버클라우드 서브스크립션 관리 환경 파일에 변경 사항을 저장해야 합니다.

  2. 원래의 openstack overcloud deploy 명령 및 --update-plan-only 옵션을 포함하여 현재 계획을 업데이트합니다. 예를 들면 다음과 같습니다.

    $ openstack overcloud deploy --update-plan-only \
      --templates  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/storage-environment.yaml \
      -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \
      [-e <environment_file>|...]

    --update-plan-only 는 director에 저장된 Overcloud 계획만 업데이트합니다. 오버클라우드와 관련된 환경 파일과 해당 업데이트 경로를 포함하려면 -e 옵션을 사용합니다. 후속 환경 파일에 정의된 매개 변수와 리소스가 우선하므로 환경 파일의 순서가 중요합니다. 다음 목록은 환경 파일 순서의 예입니다.

    • heat 템플릿 컬렉션의 초기화 파일(environments/network-isolation.yaml)을 포함한 네트워크 분리 파일 및 사용자 정의 NIC 구성 파일입니다.
    • 모든 외부 로드 밸런싱 환경 파일.
    • 모든 스토리지 환경 파일.
    • Red Hat CDN 또는 Satellite 등록의 환경 파일
    • 기타 사용자 지정 환경 파일
  3. 오버클라우드의 정적 인벤토리 파일을 생성합니다.

    $ tripleo-ansible-inventory --ansible_ssh_user heat-admin --static-yaml-inventory ~/inventory.yaml

    오버클라우드 이름을 오버클라우드의 기본 오버클라우드 이름에 다르게 사용하는 경우 --plan 옵션을 사용하여 오버클라우드 이름을 설정합니다.

  4. 모든 노드에서 운영 체제 버전을 Red Hat Enterprise Linux 7.7로 설정하는 작업이 포함된 플레이북을 생성합니다.

    $ cat > ~/set_release.yaml <<'EOF'
    - hosts: all
      gather_facts: false
      tasks:
        - name: set release to 7.7
          command: subscription-manager release --set=7.7
          become: true
    EOF
  5. set_release.yaml 플레이북을 실행합니다.

    $ ansible-playbook -i ~/inventory.yaml -f 25 ~/set_release.yaml --limit undercloud,Controller,Compute

    --limit 옵션을 사용하여 콘텐츠를 모든 Red Hat OpenStack Platform 노드에 적용합니다.

  6. openstack overcloud update 명령을 사용하여 모든 노드에서 패키지 업데이트를 수행합니다.

    $ openstack overcloud update stack -i overcloud

    i는 각 노드를 순차적으로 업데이트하기 위해 대화형 모드를 실행합니다. 업데이트 프로세스가 노드 업데이트를 완료하면 스크립트에서 확인할 중단점을 제공합니다. i 옵션을 사용하지 않으면 업데이트가 첫 번째 중단점에서 일시 중지된 상태로 유지됩니다. 따라서 -i 옵션을 포함해야 합니다.

    스크립트는 다음 기능을 수행합니다.

    1. 스크립트는 노드에서 하나씩 실행됩니다.

      1. 컨트롤러 노드의 경우 전체 패키지 업데이트가 표시됩니다.
      2. 다른 노드의 경우 Puppet 모듈만 업데이트됩니다.
    2. Puppet은 한 번에 모든 노드에서 실행됩니다.

      1. 컨트롤러 노드의 경우 Puppet 실행은 구성을 동기화합니다.
      2. 다른 노드의 경우 Puppet에서 나머지 패키지를 업데이트하고 구성을 동기화합니다.
  7. 업데이트 프로세스가 시작됩니다. 이 프로세스 중에 director는 IN_PROGRESS 상태를 보고하고 중단 지점을 지우도록 정기적으로 프롬프트를 표시합니다. 예를 들면 다음과 같습니다.

    starting package update on stack overcloud
    IN_PROGRESS
    IN_PROGRESS
    WAITING
    on_breakpoint: [u'overcloud-compute-0', u'overcloud-controller-2', u'overcloud-controller-1', u'overcloud-controller-0']
    Breakpoint reached, continue? Regexp or Enter=proceed (will clear 49913767-e2dd-4772-b648-81e198f5ed00), no=cancel update, C-c=quit interactive mode:

    Enter를 눌러 on_breakpoint 목록의 마지막 노드에서 중단 지점을 지웁니다. 그러면 해당 노드의 업데이트가 시작됩니다.

  8. 스크립트는 노드의 업데이트 순서를 자동으로 미리 정의합니다.

    • 개별적으로 각 컨트롤러 노드
    • 개별 컴퓨팅 노드 각각
    • 각 Ceph Storage 노드 개별적으로
    • 다른 모든 노드 개별적으로

    이 주문을 사용하여 업데이트가 성공적으로 수행되도록 특히 다음 명령을 사용하는 것이 좋습니다.

    1. 각 컨트롤러 노드의 중단 지점을 개별적으로 지웁니다. 업데이트 후 노드의 서비스를 다시 시작해야 하는 경우 각 컨트롤러 노드에 개별 패키지 업데이트가 필요합니다. 이로 인해 다른 컨트롤러 노드의 고가용성 서비스로 중단이 줄어듭니다.
    2. 컨트롤러 노드를 업데이트한 후 각 컴퓨팅 노드의 중단 지점을 지웁니다. 컴퓨팅 노드 이름을 입력하여 특정 노드에서 중단 지점을 지우거나 Python 기반 정규 표현식을 사용하여 여러 컴퓨팅 노드에서 한 번에 중단 지점을 지울 수 있습니다.
    3. 각 Ceph Storage 노드의 중단 지점을 지웁니다. Ceph Storage 노드 이름을 입력하여 특정 노드에서 중단 지점을 지우거나 Python 기반 정규 표현식을 사용하여 여러 Ceph Storage 노드에서 한 번에 중단 지점을 지울 수 있습니다.
    4. 나머지 중단 지점을 지웁니다. 나머지 노드를 업데이트합니다. 노드 이름을 입력하여 특정 노드에서 중단 지점을 지우거나 Python 기반 정규 표현식을 사용하여 한 번에 여러 노드에서 중단 지점을 지울 수 있습니다.
    5. 모든 노드가 업데이트가 완료될 때까지 기다립니다.
  9. update 명령은 업데이트가 완료되면 COMPLETE 상태를 보고합니다.

    ...
    IN_PROGRESS
    IN_PROGRESS
    IN_PROGRESS
    COMPLETE
    update finished with status COMPLETE
  10. 컨트롤러 노드에 펜싱을 구성한 경우 업데이트 프로세스에서 해당 노드를 비활성화할 수 있습니다. 업데이트 프로세스가 완료되면 컨트롤러 노드 중 하나에서 다음 명령을 사용하여 펜싱을 다시 활성화합니다.

    $ sudo pcs property set stonith-enabled=true

업데이트 프로세스는 오버클라우드의 노드를 자동으로 재부팅하지 않습니다. 커널 및 기타 시스템 패키지를 업데이트하려면 재부팅해야 합니다. 각 노드에서 /var/log/yum.log 파일을 확인하여 kernel 또는 openvswitch 패키지가 해당 주 버전 또는 부 버전을 업데이트했는지 확인합니다. 있는 경우 다음 절차를 사용하여 각 노드를 재부팅합니다.