16.4. 예측 가능한 IP 주소를 사용하는 노드를 교체할 때 호스트 이름 유지 및 HostNameMap

예측 가능한 IP 주소를 사용하도록 오버클라우드를 구성하고 HostNameMap 을 사용하여 heat 기반 호스트 이름을 사전 프로비저닝된 노드의 호스트 이름에 매핑하려면 새 교체 노드 인덱스를 IP 주소와 호스트 이름에 매핑하도록 오버클라우드를 구성해야 합니다.

절차

  1. stack 사용자로 언더클라우드에 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  3. 교체하려는 리소스의 physical_resource_idremoved_rsrc_list 를 검색합니다.

    (undercloud)$ openstack stack resource show <stack> <role>
    • & lt;stack >을 리소스가 속한 스택의 이름으로 바꿉니다(예: overcloud ).
    • &lt ;role >을 노드를 교체할 역할의 이름으로 바꿉니다(예: Compute ).

      출력 예:

      +------------------------+-----------------------------------------------------------+
      | Field                  | Value                                                     |
      +------------------------+-----------------------------------------------------------+
      | attributes             | {u'attributes': None, u'refs': None, u'refs_map': None,   |
      |                        | u'removed_rsrc_list': [u'2', u'3']}          | 1
      | creation_time          | 2017-09-05T09:10:42Z                                      |
      | description            |                                                           |
      | links                  | [{u'href': u'http://192.168.24.1:8004/v1/bd9e6da805594de9 |
      |                        | 8d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e-          |
      |                        | 4d61-a5d8-9f964915d503/resources/Compute', u'rel':        |
      |                        | u'self'}, {u'href': u'http://192.168.24.1:8004/v1/bd9e6da |
      |                        | 805594de98d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e- |
      |                        | 4d61-a5d8-9f964915d503', u'rel': u'stack'}, {u'href': u'h |
      |                        | ttp://192.168.24.1:8004/v1/bd9e6da805594de98d4a1d3a3ee874 |
      |                        | dd/stacks/overcloud-Compute-zkjccox63svg/7632fb0b-        |
      |                        | 80b1-42b3-9ea7-6114c89adc29', u'rel': u'nested'}]         |
      | logical_resource_id    | Compute                                                   |
      | physical_resource_id   | 7632fb0b-80b1-42b3-9ea7-6114c89adc29                      |
      | required_by            | [u'AllNodesDeploySteps',                                  |
      |                        | u'ComputeAllNodesValidationDeployment',                   |
      |                        | u'AllNodesExtraConfig', u'ComputeIpListMap',              |
      |                        | u'ComputeHostsDeployment', u'UpdateWorkflow',             |
      |                        | u'ComputeSshKnownHostsDeployment', u'hostsConfig',        |
      |                        | u'SshKnownHostsConfig', u'ComputeAllNodesDeployment']     |
      | resource_name          | Compute                                                   |
      | resource_status        | CREATE_COMPLETE                                           |
      | resource_status_reason | state changed                                             |
      | resource_type          | OS::Heat::ResourceGroup                                   |
      | updated_time           | 2017-09-05T09:10:42Z                                      |
      +------------------------+-----------------------------------------------------------+
      1
      removed_rsrc_list 는 리소스에 대해 이미 제거된 노드의 인덱스를 나열합니다.
  4. resource_name 을 검색하여 heat가 이 리소스의 노드에 적용한 최대 인덱스를 결정합니다.

    (undercloud)$ openstack stack resource list <physical_resource_id>

    2단계에서 검색한 ID로 <physical_resource_id> 을 바꿉니다.

  5. resource_nameremoved_rsrc_list 를 사용하여 heat가 새 노드에 적용할 다음 인덱스를 확인합니다.

    • removed_rsrc_list 가 비어 있으면 다음 인덱스가 (current_maximum_index) + 1이 됩니다.
    • removed_rsrc_list 에 값(current_maximum_index) + 1이 포함된 경우 다음 인덱스는 사용 가능한 다음 인덱스가 됩니다.
  6. 대체 베어 메탈 노드의 ID를 검색합니다.

    (undercloud)$ openstack baremetal node list
  7. 교체 노드의 기능을 새 인덱스로 업데이트합니다.

    openstack baremetal node set --property capabilities='node:<role>-<index>,boot_option:local' <node>
    • &lt ;role >을 노드를 교체할 역할의 이름으로 바꿉니다(예: compute ).
    • & lt;index& gt;를 5단계에서 계산된 인덱스로 바꿉니다.
    • & lt;node& gt;를 베어 메탈 노드의 ID로 바꿉니다.

    Compute 스케줄러는 노드 기능을 사용하여 배포의 노드와 일치합니다.

  8. HostnameMap 구성에 인덱스를 추가하여 새 노드에 호스트 이름을 할당합니다. 예를 들면 다음과 같습니다.

    parameter_defaults:
      ControllerSchedulerHints:
        'capabilities:node': 'controller-%index%'
      ComputeSchedulerHints:
        'capabilities:node': 'compute-%index%'
      HostnameMap:
        overcloud-controller-0: overcloud-controller-prod-123-0
        overcloud-controller-1: overcloud-controller-prod-456-0 1
        overcloud-controller-2: overcloud-controller-prod-789-0
        overcloud-controller-3: overcloud-controller-prod-456-0 2
        overcloud-compute-0: overcloud-compute-prod-abc-0
        overcloud-compute-3: overcloud-compute-prod-abc-3 3
        overcloud-compute-8: overcloud-compute-prod-abc-3 4
        ....
    1
    제거하고 새 노드로 교체할 노드입니다.
    2
    새 노드.
    3
    제거하고 새 노드로 교체할 노드입니다.
    4
    새 노드.
    참고

    HostnameMap 에서 삭제된 노드의 매핑을 삭제하지 마십시오.

  9. 교체 노드의 IP 주소를 네트워크 IP 주소 매핑 파일의 각 네트워크 IP 주소 목록 끝에 추가합니다. ips-from-pool-all.yaml. 다음 예에서 새 인덱스의 IP 주소 overcloud-controller-3 은 각 ControllerIPs 네트워크의 IP 주소 목록 끝에 추가되고 overcloud-controller-1 을 대체하므로 overcloud-controller-1 과 동일한 IP 주소가 할당됩니다. 새 인덱스의 IP 주소 overcloud-compute-8 이 각 ComputeIPs 네트워크에 대해 IP 주소 목록 끝에 추가되며 대체 인덱스와 동일한 IP 주소가 할당됩니다. overcloud-compute-3:

    parameter_defaults:
      ControllerIPs:
        ...
        internal_api:
          - 192.168.1.10  1
          - 192.168.1.11  2
          - 192.168.1.12  3
          - 192.168.1.11  4
        ...
        storage:
          - 192.168.2.10
          - 192.168.2.11
          - 192.168.2.12
          - 192.168.2.11
        ...
    
      ComputeIPs:
        ...
        internal_api:
          - 172.17.0.10 5
          - 172.17.0.11 6
          - 172.17.0.11 7
        ...
        storage:
          - 172.17.0.10
          - 172.17.0.11
          - 172.17.0.11
        ...
    1
    인덱스 0에 할당된 IP 주소 overcloud-controller-prod-123-0.
    2
    인덱스 1에 할당된 IP 주소 overcloud-controller-prod-456-0. 이 노드는 인덱스 3으로 교체됩니다. 이 항목을 제거하지 마십시오.
    3
    인덱스 2에 할당된 IP 주소 overcloud-controller-prod-789-0 호스트 이름입니다.
    4
    인덱스 3에 할당된 IP 주소, 호스트 이름 overcloud-controller-prod-456-0. 인덱스 1을 대체하는 새 노드입니다.
    5
    인덱스 0에 할당된 IP 주소 overcloud-compute-0.
    6
    인덱스 1에 할당된 IP 주소 overcloud-compute-3. 이 노드는 인덱스 2로 교체됩니다. 이 항목을 제거하지 마십시오.
    7
    인덱스 2에 할당된 IP 주소, 호스트 이름 overcloud-compute-8. 인덱스 1을 대체하는 새 노드입니다.