웹사이트 검색

CentOS 7에서 Pacemaker 및 Corosync로 Nginx 고가용성을 설정하는 방법


이 페이지에서

  1. 1단계 - 호스트 파일 매핑\n
  2. 2단계 - Epel 저장소 및 Nginx 설치
  3. 3단계 - Pacemaker, Corosync 및 Pcsd 설치 및 구성
  4. 4단계 - 클러스터 생성 및 구성
  5. 5단계 - STONITH 비활성화 및 쿼럼 정책 무시\n
  6. 6단계 - 유동 IP 및 리소스 추가
  7. 7단계 - 클러스터에 제약 규칙 추가
  8. 8단계 - 방화벽 구성\n
  9. 9단계 - 테스트
  10. 참조

이 튜토리얼에서는 Pacemaker, Corosync 및 Pcsd를 사용하여 고가용성 클러스터 Nginx 웹 서버를 만드는 방법을 단계별로 안내합니다. CentOS 7 시스템에서 Pacemaker를 사용하여 활성-수동 클러스터 또는 장애 조치 클러스터 Nginx 웹 서버를 생성합니다.

Pacemaker는 서비스의 최대 고가용성을 달성하는 오픈 소스 클러스터 관리자 소프트웨어입니다. ClusterLabs에서 배포하는 확장 가능한 고급 HA 클러스터 관리자입니다.

Corosync Cluster Engine은 새로운 BSD 라이선스에 따라 OpenAIS 프로젝트에서 파생된 오픈 소스 프로젝트입니다. 애플리케이션 내에서 고가용성을 구현하기 위한 추가 기능이 있는 그룹 통신 시스템입니다.

Pacemaker 인터페이스에 대한 몇 가지 응용 프로그램이 있습니다. Pcsd는 Pacemaker 명령줄 인터페이스 중 하나이며 Pacemaker를 관리하기 위한 GUI입니다. pcsd 명령 pcs를 사용하여 클러스터에 새 노드를 생성, 구성 또는 추가할 수 있습니다.

전제 조건

  • 2개 이상의 CentOS 7 서버
    • web01 10.0.15.10
    • web02 10.0.15.11
    • web03 10.0.15.12

    우리가 할 일:

    1. 호스트 파일 매핑\n
    2. Epel 저장소 및 Nginx 설치
    3. Pacemaker, Corosync 및 Pcsd 설치 및 구성
    4. 클러스터 생성 및 구성
    5. STONITH 비활성화 및 쿼럼 정책 무시\n
    6. Floating-IP 및 리소스 추가
    7. 클러스터에 규칙 추가
    8. 방화벽 구성\n
    9. 설정 테스트

    1단계 - 호스트 파일 매핑

    참고: 모든 서버 web01, web02 및 web03에서 1~3단계를 실행합니다.

    우리가 해야 할 첫 번째 단계는 모든 서버의 호스트 이름을 매핑하기 위해 각 서버에서 호스트 파일을 수정하는 것입니다. weve web01, web02 및 web03 서버는 ssh 계정으로 각 서버에 로그인합니다.

    ssh [01,02,03]

    vim으로 /etc/hosts 파일을 편집합니다.

    vim /etc/hosts

    다음 구성을 거기에 붙여넣으십시오.

    10.0.15.10      web01
    10.0.15.11      web02
    10.0.15.12      web03

    저장 및 종료.

    이제 호스트 매핑 구성을 테스트합니다.

    ping -c 3 web01
    ping -c 3 web02
    ping -c 3 web03

    web01, web02, web03이 올바른 IP 주소에 매핑되어 있는지 확인하세요.

    2단계 - Epel 리포지토리 및 Nginx 설치

    이 단계에서는 epel 리포지토리를 설치한 다음 Nginx 웹 서버를 설치합니다. Nginx 패키지를 설치하려면 Enterprise Linux 리포지토리용 EPEL 또는 추가 패키지가 필요합니다.

    다음 yum 명령어를 사용하여 EPEL Repository를 설치합니다.

    yum -y install epel-release

    이제 EPEL 저장소에서 Nginx 웹 서버를 설치합니다.

    yum -y install nginx

    설치가 완료되면 각 서버의 기본 index.html 페이지를 새 페이지로 변경합니다.

    #Run Command on 'web01'
    echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

    #Run Command on 'web02'
    echo '<h1>web02 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

    #Run Command on 'web03'
    echo '<h1>web03 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

    EPEL Repository 및 Nginx 웹 서버가 이제 시스템에 설치되었습니다.

    3단계 - Pacemaker, Corosync 및 Pcsd 설치 및 구성

    Pacemaker, Corosync, Pcsd는 기본 시스템 저장소에서 사용할 수 있습니다. 따라서 다음 yum 명령어를 사용하여 CentOS 저장소에서 모두 설치할 수 있습니다.

    yum -y install corosync pacemaker pcs

    설치가 완료되면 아래의 systemctl 명령을 사용하여 시스템 부팅 시 모든 서비스가 자동으로 실행되도록 설정합니다.

    systemctl enable pcsd
    systemctl enable corosync
    systemctl enable pacemaker

    이제 모든 서버에서 pcsd Pacemaker 명령줄 인터페이스를 시작합니다.

    systemctl start pcsd

    다음으로 hacluster 사용자의 새 암호를 만들고 모든 서버에 동일한 암호를 사용합니다. 이 사용자는 소프트웨어 설치 중에 자동으로 생성되었습니다.

    hacluster 사용자의 암호를 구성하는 방법은 다음과 같습니다.

    passwd hacluster
    Enter new password:

    고가용성 소프트웨어 스택 Pacemaker, Corosync 및 Pcsd가 시스템에 설치됩니다.

    4단계 - 클러스터 생성 및 구성

    참고: web01에서만 4~7단계를 실행합니다.

    이 단계에서는 3개의 centos 서버로 새 클러스터를 생성합니다. 그런 다음 유동 IP 주소를 구성하고 새 Nginx 리소스를 추가합니다.

    클러스터를 생성하려면 pcs 명령과 hacluster 사용자를 사용하여 모든 서버에 권한을 부여해야 합니다.

    pcs 명령과 hacluster 사용자 및 비밀번호를 사용하여 모든 서버에 권한을 부여하십시오.

    pcs cluster auth web01 web02 web03
    Username: hacluster
    Password:

    이제 클러스터를 설정할 시간입니다. 클러스터 이름과 클러스터의 일부가 될 모든 서버를 정의합니다.

    pcs cluster setup --name hakase_cluster web01 web02 web03

    이제 모든 클러스터 서비스를 시작하고 활성화하십시오.

    pcs cluster start --all
    pcs cluster enable --all

    다음으로 클러스터 상태를 확인합니다.

    pcs status cluster

    5단계 - STONITH 비활성화 및 쿼럼 정책 무시

    펜싱 장치를 사용하지 않았으므로 STONITH를 비활성화합니다. STONITH 또는 Shoot The Other Node In The Head는 Pacemaker의 펜싱 구현입니다. 생산 중인 경우 STONITH를 활성화하는 것이 좋습니다.

    다음 pcs 명령으로 STONITH를 비활성화합니다.

    pcs property set stonith-enabled=false

    다음으로 쿼럼 정책에 대해 무시합니다.

    pcs property set no-quorum-policy=ignore

    속성 목록을 확인하고 stonith 및 쿼럼 정책이 비활성화되어 있는지 확인하십시오.

    pcs property list

    STONITH 및 쿼럼 정책이 비활성화됩니다.

    6단계 - 유동 IP 및 리소스 추가

    유동 IP는 동일한 데이터 센터에 있는 한 서버에서 다른 서버로 자동으로 마이그레이션/이동할 수 있는 IP 주소입니다. 그리고 이미 Pacemaker High-Availability의 유동 IP 주소를 10.0.15.15로 정의했습니다. 이제 이름이 virtual_ip인 부동 IP 주소 리소스와 webserver라는 Nginx 웹 서버용 새 리소스의 두 리소스를 추가하려고 합니다.

    아래와 같이 pcs 명령을 사용하여 새 리소스 유동 IP 주소 virtual_ip를 추가합니다.

    pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

    다음으로 Nginx 웹 서버에 대한 새 리소스를 추가합니다.

    pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

    오류 결과가 없는지 확인한 다음 사용 가능한 리소스를 확인하십시오.

    pcs status resources

    두 개의 리소스 virtual_ip와 웹 서버가 표시됩니다. 유동 IP 및 Nginx 웹 서버에 대한 새 리소스가 추가되었습니다.

    7단계 - 클러스터에 제약 규칙 추가

    이 단계에서는 고가용성 규칙을 설정하고 pcs 명령줄 인터페이스로 리소스 제약 조건을 설정합니다.

    점수가 INFINITY인 webserver 및 virtual_ip 리소스에 대한 데이터 정렬 제약 조건을 설정합니다. 또한 webserver 및 virtual_ip 리소스를 모든 서버 노드에서 동일하게 설정합니다.

    pcs constraint colocation add webserver virtual_ip INFINITY

    virtual_ip 및 webserver 자원을 항상 동일한 노드 서버에 설정하십시오.

    pcs constraint order virtual_ip then the webserver

    그런 다음 클러스터를 중지한 다음 다시 시작합니다.

    pcs cluster stop --all
    pcs cluster start --all

    이제 리소스를 다시 확인하면 해당 상태가 동일한 서버 web01에서 시작됨으로 표시됩니다.

    pcs status resources

    virtual_ip 및 webserver 리소스가 동일한 서버/노드 web01에서 시작되었습니다.

    8단계 - 방화벽 구성

    HA-Cluster는 방화벽 구성 firewalld에서 실행됩니다. 패키지가 없는 경우 설치하십시오.

    yum -y install firewalld

    firewalld를 시작하고 다음 systemctl 명령을 사용하여 시스템 부팅 시마다 자동으로 실행되도록 설정합니다.

    systemctl start firewalld
    systemctl enable firewalld

    다음으로 firewall-cmd 명령을 사용하여 방화벽에 새 서비스를 추가합니다. Nginx용 고가용성 서비스, HTTP 및 HTTPS 서비스를 추가합니다.

    firewall-cmd --permanent --add-service=high-availability
    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https

    방화벽 구성을 다시 로드하고 모든 서비스를 확인합니다.

    firewall-cmd --reload
    firewall-cmd --list-all

    HTTP 및 https가 포함된 ha 서비스가 목록에 있는지 확인하십시오.

    9단계 - 테스트

    이 단계에서는 클러스터에 대한 몇 가지 테스트를 수행했습니다. 노드 상태(온라인 또는 오프라인)를 테스트하고 corosync 구성원 및 상태를 테스트한 다음 유동 IP 주소에 액세스하여 Nginx 웹 서버의 고가용성을 테스트합니다.

    다음 명령을 사용하여 노드 상태를 테스트합니다.

    pcs status nodes

    모든 노드가 온라인 상태입니다.

    corosync 구성원을 테스트합니다.

    corosync-cmapctl | grep members

    Corosync 회원 IP 주소를 받게 됩니다.

    Corosync 구성원을 확인하면 아래와 같은 결과가 표시됩니다.

    pcs status corosync

    마지막으로 웹서버 고가용성을 확인합니다. 웹 브라우저를 열고 유동 IP 주소 10.0.15.15를 입력합니다.

    web01 서버에서 웹 페이지가 표시됩니다.

    다음으로 아래 명령을 사용하여 web01 서버에서 클러스터를 중지합니다.

    pcs cluster stop web01

    그리고 페이지를 다시 확인하면 아래와 같이 web02 서버에서 페이지를 가져옵니다.

    추가의:

    아래 명령으로 클러스터 상태를 확인합니다.

    pcs status

    그러면 아래와 같은 결과를 얻을 수 있습니다.

    CentOS 7 서버에서 Pacemaker, Corosync 및 Pcsd를 사용하여 Nginx 웹 서버 고가용성 설정이 성공적으로 완료되었습니다.

    참조

    • http://www.alexlinux.com/pacemaker-corosync-nginx-cluster/