22.5. 리소스 제약 조건을 사용하여 고가용성 클러스터 구성

다음 절차에서는 ha_cluster 시스템 역할을 사용하여 리소스 위치 제한 조건, 리소스 공동 배치 제한 조건, 리소스 순서 제약 조건, 리소스 티켓 제약 조건을 포함하는 고가용성 클러스터를 생성합니다.

사전 요구 사항

  • 플레이북을 실행할 노드에 ansible-core 가 설치되어 있어야 합니다.

    참고

    클러스터 멤버 노드에 ansible-core 를 설치할 필요가 없습니다.

  • 플레이북을 실행할 시스템에 rhel-system-roles 패키지가 설치되어 있습니다.
  • 클러스터 구성원으로 사용할 시스템에는 RHEL 및 RHEL 고가용성 애드온에 대한 유효한 서브스크립션 적용 범위가 있어야 합니다.
주의

ha_cluster 시스템 역할은 지정된 노드의 기존 클러스터 구성을 대체합니다. 역할에 지정되지 않은 설정은 모두 손실됩니다.

절차

  1. ha_cluster 시스템 역할에 대한 인벤토리 지정에 설명된 대로 클러스터에서 노드를 지정하는 인벤토리파일을 생성합니다.
  2. 플레이북 파일(예: new-cluster.yml )을 생성합니다.

    참고

    프로덕션용 플레이북 파일을 생성할 때 Ansible Vault를 사용하여 콘텐츠 암호화에 설명된 대로 암호를 암호화하는 것이 좋습니다.

    다음 예제 플레이북 파일은 리소스 위치 제한 조건, 리소스 위치 제한 조건, 리소스 순서 제약 조건 및 리소스 티켓 제약 조건을 포함하는 클러스터를 구성합니다.

    - hosts: node1 node2
      vars:
        ha_cluster_cluster_name: my-new-cluster
        ha_cluster_hacluster_password: password
        # In order to use constraints, we need resources the constraints will apply
        # to.
        ha_cluster_resource_primitives:
          - id: xvm-fencing
            agent: 'stonith:fence_xvm'
            instance_attrs:
              - attrs:
                  - name: pcmk_host_list
                    value: node1 node2
          - id: dummy-1
            agent: 'ocf:pacemaker:Dummy'
          - id: dummy-2
            agent: 'ocf:pacemaker:Dummy'
          - id: dummy-3
            agent: 'ocf:pacemaker:Dummy'
          - id: dummy-4
            agent: 'ocf:pacemaker:Dummy'
          - id: dummy-5
            agent: 'ocf:pacemaker:Dummy'
          - id: dummy-6
            agent: 'ocf:pacemaker:Dummy'
        # location constraints
        ha_cluster_constraints_location:
          # resource ID and node name
          - resource:
              id: dummy-1
            node: node1
            options:
              - name: score
                value: 20
          # resource pattern and node name
          - resource:
              pattern: dummy-\d+
            node: node1
            options:
              - name: score
                value: 10
          # resource ID and rule
          - resource:
              id: dummy-2
            rule: '#uname eq node2 and date in_range 2022-01-01 to 2022-02-28'
          # resource pattern and rule
          - resource:
              pattern: dummy-\d+
            rule: node-type eq weekend and date-spec weekdays=6-7
        # colocation constraints
        ha_cluster_constraints_colocation:
          # simple constraint
          - resource_leader:
              id: dummy-3
            resource_follower:
              id: dummy-4
            options:
              - name: score
                value: -5
          # set constraint
          - resource_sets:
              - resource_ids:
                  - dummy-1
                  - dummy-2
              - resource_ids:
                  - dummy-5
                  - dummy-6
                options:
                  - name: sequential
                    value: "false"
            options:
              - name: score
                value: 20
        # order constraints
        ha_cluster_constraints_order:
          # simple constraint
          - resource_first:
              id: dummy-1
            resource_then:
              id: dummy-6
            options:
              - name: symmetrical
                value: "false"
          # set constraint
          - resource_sets:
              - resource_ids:
                  - dummy-1
                  - dummy-2
                options:
                  - name: require-all
                    value: "false"
                  - name: sequential
                    value: "false"
              - resource_ids:
                  - dummy-3
              - resource_ids:
                  - dummy-4
                  - dummy-5
                options:
                  - name: sequential
                    value: "false"
        # ticket constraints
        ha_cluster_constraints_ticket:
          # simple constraint
          - resource:
              id: dummy-1
            ticket: ticket1
            options:
              - name: loss-policy
                value: stop
          # set constraint
          - resource_sets:
              - resource_ids:
                  - dummy-3
                  - dummy-4
                  - dummy-5
            ticket: ticket2
            options:
              - name: loss-policy
                value: fence
    
      roles:
        - linux-system-roles.ha_cluster
  3. 파일을 저장합니다.
  4. 1단계에서 생성한 인벤토리 파일 인벤토리 의 경로를 지정하여 플레이북을 실행합니다.

    # ansible-playbook -i inventory new-cluster.yml