Red Hat Training

A Red Hat training course is available for RHEL 8

2장. Pacemaker 시작하기

Pacemaker 클러스터를 생성하는 데 사용하는 툴과 프로세스를 숙지하려면 다음 절차를 실행합니다. 클러스터 소프트웨어의 모양과 관리 방법을 확인하고 작업 클러스터를 구성할 필요 없이 사용자를 위한 것입니다.

참고

다음 절차에서는 2개 이상의 노드가 필요한 Red Hat 클러스터를 생성하고 펜싱 장치를 구성하지 않습니다. RHEL High Availability 클러스터에 대한 Red Hat 지원 정책, 요구 사항 및 제한 사항에 대한 자세한 내용은 RHEL 고가용성 클러스터에 대한 지원 정책을 참조하십시오.

2.1. Pacemaker 사용 학습

이 절차를 통해 Pacemaker를 사용하여 클러스터를 설정하는 방법, 클러스터 상태를 표시하는 방법 및 클러스터 서비스 구성 방법에 대해 알아봅니다. 이 예제에서는 Apache HTTP 서버를 클러스터 리소스로 생성하고 리소스가 실패하면 클러스터가 응답하는 방법을 보여줍니다.

이 예제에서는 다음을 수행합니다.

  • 노드는 z1.example.com 입니다.
  • 유동 IP 주소는 192.168.122.120입니다.

사전 요구 사항

  • RHEL 8을 실행하는 단일 노드
  • 노드의 정적으로 할당된 IP 주소 중 하나와 동일한 네트워크에 상주하는 유동 IP 주소
  • 실행 중인 노드의 이름은 /etc/hosts 파일에 있습니다.

절차

  1. 고가용성 채널에서 Red Hat High Availability Add-On 소프트웨어 패키지를 설치하고 pcsd 서비스를 시작하고 활성화합니다.

    # yum install pcs pacemaker fence-agents-all
    ...
    # systemctl start pcsd.service
    # systemctl enable pcsd.service

    firewalld 데몬을 실행하는 경우 Red Hat High Availability Add-On에 필요한 포트를 활성화합니다.

    # firewall-cmd --permanent --add-service=high-availability
    # firewall-cmd --reload
  2. 클러스터의 각 노드에서 hacluster 사용자의 암호를 설정하고 pcs 명령을 실행할 노드의 클러스터에 있는 각 노드에 대해 사용자 hacluster 를 인증합니다. 이 예에서는 명령을 실행 중인 노드인 단일 노드만 사용하지만 지원되는 Red Hat High Availability 다중 노드 클러스터를 구성하는 데 필요한 단계이므로 이 단계는 여기에 포함됩니다.

    # passwd hacluster
    ...
    # pcs host auth z1.example.com
  3. 하나의 멤버로 my_cluster 라는 클러스터를 생성하고 클러스터 상태를 확인합니다. 이 명령은 한 단계에서 클러스터를 생성하고 시작합니다.

    # pcs cluster setup my_cluster --start z1.example.com
    ...
    # pcs cluster status
    Cluster Status:
     Stack: corosync
     Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
     Last updated: Thu Oct 11 16:11:18 2018
     Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z1.example.com
     1 node configured
     0 resources configured
    
    PCSD Status:
      z1.example.com: Online
  4. Red Hat High Availability 클러스터에서는 클러스터의 펜싱을 구성해야 합니다. 이러한 요구 사항의 이유는 Red Hat High Availability Cluster의 Fencing에 설명되어 있습니다. 그러나 이 도입에서는 기본 Pacemaker 명령을 사용하는 방법만 표시하기 위한 경우 stonith 사용 클러스터 옵션을 false로 설정하여 펜싱을 비활성화합니다.

    주의

    stonith-enabled=false 를 사용하는 것은 프로덕션 클러스터에 전혀 부적절합니다. 실패한 노드가 안전하게 펜싱되었다고 가정하면 클러스터에 지시합니다.

    # pcs property set stonith-enabled=false
  5. 시스템에서 웹 브라우저를 구성하고 간단한 텍스트 메시지를 표시하는 웹 페이지를 만듭니다. firewalld 데몬을 실행하는 경우 httpd 에 필요한 포트를 활성화합니다.

    참고

    systemctl enable를 사용하여 시스템을 부팅할 때 클러스터에서 관리하는 서비스를 활성화하지 마십시오.

    # yum install -y httpd wget
    ...
    # firewall-cmd --permanent --add-service=http
    # firewall-cmd --reload
    
    # cat <<-END >/var/www/html/index.html
    <html>
    <body>My Test Site - $(hostname)</body>
    </html>
    END

    Apache 리소스 에이전트가 Apache의 상태를 얻기 위해 기존 구성에 다음 추가를 생성하여 상태 서버 URL을 활성화합니다.

    # cat <<-END > /etc/httpd/conf.d/status.conf
    <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    </Location>
    END
  6. 클러스터가 관리할 IPaddr2apache 리소스를 만듭니다. 'IPaddr2' 리소스는 유동 IP 주소이며 물리적 노드와 이미 연결되어 있지 않아야 합니다. 'IPaddr2' 리소스의 NIC 장치가 지정되지 않은 경우 유동 IP는 노드에서 사용하는 정적으로 할당된 IP 주소와 동일한 네트워크에 있어야 합니다.

    pcs resource list 명령을 사용하여 사용 가능한 모든 리소스 유형 목록을 표시할 수 있습니다. pcs resource describe resourcetype 명령을 사용하여 지정된 리소스 유형에 대해 설정할 수 있는 매개변수를 표시할 수 있습니다. 예를 들어 다음 명령은 apache 유형의 리소스에 대해 설정할 수 있는 매개변수를 표시합니다.

    # pcs resource describe apache
    ...

    이 예에서 IP 주소 리소스와 apache 리소스는 모두 apachegroup 그룹의 일부로 구성되어 있으므로 작동 중인 다중 노드 클러스터를 구성할 때 동일한 노드에서 리소스가 함께 실행되도록 합니다.

    # pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.122.120 --group apachegroup
    
    # pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" --group apachegroup
    
    # pcs status
    Cluster name: my_cluster
    Stack: corosync
    Current DC: z1.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum
    Last updated: Fri Oct 12 09:54:33 2018
    Last change: Fri Oct 12 09:54:30 2018 by root via cibadmin on z1.example.com
    
    1 node configured
    2 resources configured
    
    Online: [ z1.example.com ]
    
    Full list of resources:
    
    Resource Group: apachegroup
        ClusterIP  (ocf::heartbeat:IPaddr2):       Started z1.example.com
        WebSite    (ocf::heartbeat:apache):        Started z1.example.com
    
    PCSD Status:
      z1.example.com: Online
    ...

    클러스터 리소스를 구성한 후에는 pcs resource config 명령을 사용하여 해당 리소스에 대해 구성된 옵션을 표시할 수 있습니다.

    # pcs resource config WebSite
    Resource: WebSite (class=ocf provider=heartbeat type=apache)
     Attributes: configfile=/etc/httpd/conf/httpd.conf statusurl=http://localhost/server-status
     Operations: start interval=0s timeout=40s (WebSite-start-interval-0s)
                 stop interval=0s timeout=60s (WebSite-stop-interval-0s)
                 monitor interval=1min (WebSite-monitor-interval-1min)
  7. 구성한 유동 IP 주소를 사용하여 생성한 웹 사이트를 브라우저를 가리킵니다. 정의한 텍스트 메시지가 표시되어야 합니다.
  8. apache 웹 서비스를 중지하고 클러스터 상태를 확인합니다. killall -9 를 사용하면 애플리케이션 수준 충돌을 시뮬레이션합니다.

    # killall -9 httpd

    클러스터 상태를 확인합니다. 웹 서비스를 중지하면 작업이 실패했지만 클러스터 소프트웨어가 서비스를 다시 시작했으며 웹 사이트에 계속 액세스할 수 있어야 합니다.

    # pcs status
    Cluster name: my_cluster
    ...
    Current DC: z1.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
    1 node and 2 resources configured
    
    Online: [ z1.example.com ]
    
    Full list of resources:
    
    Resource Group: apachegroup
        ClusterIP  (ocf::heartbeat:IPaddr2):       Started z1.example.com
        WebSite    (ocf::heartbeat:apache):        Started z1.example.com
    
    Failed Resource Actions:
    * WebSite_monitor_60000 on z1.example.com 'not running' (7): call=13, status=complete, exitreason='none',
        last-rc-change='Thu Oct 11 23:45:50 2016', queued=0ms, exec=0ms
    
    PCSD Status:
        z1.example.com: Online

    서비스가 시작되어 다시 실행되면 실패한 리소스의 실패 상태를 삭제할 수 있으며 클러스터 상태를 볼 때 실패한 작업 알림이 더 이상 표시되지 않습니다.

    # pcs resource cleanup WebSite
  9. 클러스터 및 클러스터 상태를 확인한 후 노드에서 클러스터 서비스를 중지합니다. 이 도입을 위해 한 노드에서만 서비스를 시작했지만 --all 매개 변수는 실제 다중 노드 클러스터의 모든 노드에서 클러스터 서비스를 중지하므로 포함됩니다.

    # pcs cluster stop --all