웹사이트 검색

Ubuntu 16.04에서 Pacemaker, Corosync 및 Crmsh를 사용하여 Nginx 고가용성을 설정하는 방법


이 페이지에서

  1. 1단계 - 호스트 파일 매핑\n
  2. 2단계 - Nginx 설치 및 구성
  3. 3단계 - Pacemaker, Corosync 및 Crmsh 설치
  4. 4단계 - Corosync 구성
  5. 5단계 - 모든 클러스터 서비스 시작
  6. 6단계 - 클러스터 생성 및 구성
  7. 7단계 - 테스트
  8. 참조

이 튜토리얼에서는 Pacemaker, Corosync 및 Crmsh를 사용하여 고가용성 클러스터 Nginx 웹 서버를 만드는 방법을 단계별로 보여드리겠습니다. Ubuntu 16.04에서 Pacemaker를 사용하여 활성-수동 클러스터 또는 장애 조치 클러스터 Nginx 웹 서버를 생성합니다.

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

Corosync Cluster Engine은 2008년 OpenAIS 프로젝트에서 파생되어 BSD 라이선스로 출시된 오픈 소스 프로젝트입니다. 응용 프로그램 내에서 고가용성을 구현하기 위한 추가 기능이 있는 그룹 통신 시스템입니다.

Pacemaker 인터페이스에 사용할 수 있는 여러 애플리케이션이 있으며 Crmsh가 그 중 하나입니다. Pacemaker 고가용성 스택을 관리하는 Pacemaker 명령줄 인터페이스입니다. Crmsh는 파이썬으로 작성되었습니다. Crmsh 명령줄 도구를 사용하여 Pacemaker HA 스택을 만들고 구성하고 문제를 해결할 수 있습니다.

전제 조건

  • 3개의 Ubuntu 16.04 서버
    • web01 10.0.15.11
    • web02 10.0.15.12
    • web03 10.0.15.13

    우리는 무엇을 할 것입니까?

    1. 호스트 파일 매핑.\n
    2. Nginx 설치 및 구성.
    3. Pacemaker, Corosync 및 Crmsh를 설치합니다.\n
    4. Corosync 키를 구성합니다.\n
    5. 모든 서비스 시작.
    6. 클러스터 생성 및 구성.
    7. 테스트 중.

    1단계 - 호스트 파일 매핑

    참고:
    3개의 서버 web01, web02, web03 모두에서 1 - 3단계를 실행하십시오.

    이 튜토리얼에서는 3개의 Ubuntu 16.04 서버를 사용하고 각 서버에는 web01, web02 및 web03이라는 고유한 호스트 이름이 있습니다. 각 서버는 서버의 호스트 이름으로 다른 서버에 연결할 수 있습니다.

    이를 달성하려면 vim을 사용하여 모든 서버에서 /etc/hosts 파일을 편집하십시오.

    vim /etc/hosts

    아래에 /etc/hosts 구성을 붙여넣습니다.

    10.0.15.11      web01
    10.0.15.12      web02
    10.0.15.13      web03
    10.0.15.15      ha-web.co

    파일을 저장하고 vim을 종료합니다.

    다음으로 각 호스트 이름을 통해 다른 서버를 ping하여 모든 서버를 테스트합니다.

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

    2단계 - Nginx 설치 및 구성

    이제 Pacemaker로 장애 조치 클러스터를 생성하여 Nginx 웹 서버의 고가용성 설정을 생성하기 시작합니다. 먼저 각 서버 노드에 Nginx를 설치해야 합니다.

    아래의 apt 명령으로 Nginx를 설치합니다.

    apt install -y nginx

    설치가 완료되면 아래 명령을 실행하여 nginx의 기본 페이지를 각 서버의 고유한 페이지로 교체하여 나중에 페이지를 전달한 서버를 식별할 수 있습니다.

    #Run Command on 'web01'
    echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html

    #Run Command on 'web02'
    echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html

    #Run Command on 'web03'
    echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html

    이제 웹 서버를 중지하십시오.

    systemctl stop nginx

    Nginx 설치 및 구성이 완료되었습니다.

    3단계 - Pacemaker, Corosync 및 Crmsh 설치

    Pacemaker는 오픈 소스 클러스터 관리자 앱입니다. Corosync는 Pacemaker용 클러스터 엔진이고 Crmsh는 Pacemaker 클러스터를 관리하는 Python 기반 도구입니다. 이러한 모든 응용 프로그램은 Uubuntu 저장소에서 사용할 수 있습니다.

    아래의 apt 명령을 사용하여 Pacemaker, Corosync 및 crmsh를 설치합니다.

    apt install -y pacemaker corosync crmsh

    설치 후 이러한 모든 서비스는 시스템에서 자동으로 실행됩니다. 아래의 systemctl 명령으로 중지하십시오.

    systemctl stop corosync
    systemctl stop pacemaker

    Nginx에 대한 고가용성을 제공하는 소프트웨어 스택이 설치되었습니다.

    4단계 - Corosync 구성

    참고:
    web01 서버에서만 4단계를 실행하십시오.

    Ubuntu에 pcsd를 사용하지 않았기 때문에 Corosync를 수동으로 구성해야 합니다. 클러스터 인증을 위한 Corosync 키를 생성하고 web01 서버에 새 Corosync 구성 파일을 만든 다음 키와 구성을 다른 서버 web02 및 web03에 복사합니다.

    Corosync 키를 생성하기 전에 새 패키지 haveged를 설치해야 합니다. Corosync 키 생성을 위해 더 나은 난수를 얻는 데 사용됩니다.

    apt 명령으로 저장소에서 haveged를 설치합니다.

    apt install -y haveged

    이제 아래 명령을 사용하여 새 Corosync 키를 생성합니다.

    corosync-keygen

    키 생성이 완료되면 /etc/corosync/ 디렉터리에서 새 키 authkey를 볼 수 있습니다.

    ls -lah /etc/corosync/

    그런 다음 /etc/corosync 디렉터리로 이동하여 기본 구성 파일 corosync.conf를 백업합니다.

    cd /etc/corosync/
    mv corosync.conf corosync.conf.bekup

    그런 다음 vim으로 새 corosync.conf 구성 파일을 만듭니다.

    vim corosync.conf

    아래 구성을 해당 파일에 붙여넣습니다.

    # Totem Protocol Configuration
    totem {
      version: 2
      cluster_name: hakase-cluster
      transport: udpu

    # Interface configuration for Corosync
      interface {
        ringnumber: 0
        bindnetaddr: 10.0.15.0
        broadcast: yes
        mcastport: 5407
      }
    }

    # Nodelist - Server List
    nodelist {
      node {
        ring0_addr: web01
      }
      node {
        ring0_addr: web02
      }
      node {
        ring0_addr: web03
      }
    }

    # Quorum configuration
    quorum {
      provider: corosync_votequorum
    }

    # Corosync Log configuration
    logging {
      to_logfile: yes
      logfile: /var/log/corosync/corosync.log
      to_syslog: yes
      timestamp: on
    }

    service {
      name: pacemaker
      ver: 0
    }

    파일을 저장하고 편집기를 종료합니다.

    다음으로 인증 키와 구성 파일을 web01 서버에서 web02 및 web03 서버로 복사합니다.

    scp /etc/corosync/* :/etc/corosync/

    모두 완료되면 web02 및 web03 서버로 이동한 다음 파일을 확인합니다.

    ssh 
    cd /etc/corosync/
    ls -lah

    Corosync 구성이 완료되었습니다.

    5단계 - 모든 클러스터 서비스 시작

    참고:
    모든 서버에서 5단계를 실행하십시오.

    모든 서버에서 HA 클러스터 소프트웨어 스택, pacemaker 및 corosync를 시작합니다. 그런 다음 부팅 시 자동으로 시작되도록 활성화합니다.

    Corosync를 시작하고 부팅 시 자동으로 시작되도록 추가합니다.

    systemctl start corosync
    systemctl enable corosync

    이제 맥박 조정기를 시작하고 부팅 시 시작되도록 활성화합니다.

    systemctl start pacemaker
    update-rc.d pacemaker defaults 20 01
    systemctl enable pacemaker

    모든 서비스가 시작되었습니다. 모든 노드를 확인하고 모든 노드에서 서버 상태가 온라인인지 확인하십시오.

    crm status

    또는 아래 corosync-cmapctl 명령으로 Corosync 구성원을 확인하여 상태를 확인할 수 있습니다.

    corosync-cmapctl | grep members

    모든 서버 IP 주소가 표시됩니다.

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

    참고:
    web01 서버에서만 6단계 실행

    이 단계에서는 crmsh 명령줄 도구를 사용하여 활성-수동 Nginx 클러스터를 구성합니다. STONITH 장치를 사용하지 않기 때문에 STONITH를 비활성화하고 클러스터의 쿼럼 정책을 무시하려고 합니다.

    아래의 crm 명령어를 실행하여 STONITH를 사용 중지하고 Quorum 정책을 무시하세요.

    crm configure property stonith-enabled=false
    crm configure property no-quorum-policy=ignore

    이제 아래의 crm 명령으로 STONITH 상태와 쿼럼 정책을 확인하십시오.

    crm configure show

    결과는 아래와 같습니다.

    다음으로 클러스터에 대한 몇 가지 새 리소스를 생성해야 합니다. Pacemaker는 다음 유형의 리소스 에이전트(RA)를 지원합니다.

    • LSB(Linux Standard Based) - Linux 배포판에서 제공합니다. 예: /etc/init.d/service 스크립트.
    • OCF(Open Cluster Framework) - 클러스터 컴퓨팅을 위한 도구 모음입니다. 이 프로젝트는 Linux Foundation의 일부입니다.\n

    Nginx HA 웹 서버의 경우 유동 IP용 virtual_ip와 nginx 서비스용 웹 서버라는 두 개의 OCF 리소스를 만들어야 합니다.

    아래의 crm 명령을 사용하여 유동 IP 구성을 위한 새 virtual_ip 리소스를 만듭니다.

    sudo crm configure primitive virtual_ip \
    ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
    cidr_netmask="32" op monitor interval="10s" \
    meta migration-threshold="10"

    그리고 nginx 웹서버의 경우 아래 명령어로 리소스를 생성합니다.

    sudo crm configure primitive webserver \
    ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
    op start timeout="40s" interval="0" \
    op stop timeout="60s" interval="0" \
    op monitor interval="10s" timeout="60s" \
    meta migration-threshold="10"

    이 작업이 완료되면 아래 명령으로 새 리소스 virtual_ip 및 webserver를 확인합니다. 모든 자원이 시작된 상태인지 확인하십시오.

    crm resource status

    마지막으로 Failover IP 서비스의 새 구성을 위한 그룹을 추가해야 합니다. virtual_ip 리소스의 유동 IP를 사용하여 웹 서버 리소스의 Nginx 서비스를 마이그레이션하려고 합니다.

    우리는 이미 부동 IP와 서비스를 만들었고 이제 아래 명령을 사용하여 hakase_balancing이라는 새 그룹에 해당 리소스를 추가합니다. 물론 여기에서 자신의 그룹 이름을 선택할 수 있습니다. 이름이 사용될 때마다 이름을 바꾸십시오.

    sudo crm configure group hakase_balancing virtual_ip webserver

    이름이 hakase_balancing인 새 리소스 그룹이 정의되었습니다. 아래 명령어로 확인할 수 있습니다.

    crm resource show

    virtual_ip 및 webserver 리소스 구성원이 있는 hakase_balancing이라는 그룹을 얻게 됩니다.

    클러스터 구성이 완료되었습니다.

    7단계 - 테스트

    노드 상태 및 클러스터 상태를 테스트합니다.

    crm status

    상태가 온라인인 Weve 3 노드.

    hakase_balancing이라는 리소스 그룹이 있으며 현재 web01 노드에서 실행 중입니다.

    웹 브라우저에서 Nginx 웹 서버를 테스트합니다. 유동 IP 주소를 방문하십시오. 내 테스트 서버의 이름은 - ha-web.co입니다. 여기에서 서버에 대해 선택한 이름을 사용하십시오.

    모든 리소스는 web01 노드에 있습니다.

    능동-수동 클러스터 또는 장애 조치 테스트

    web01 노드에서 아래 명령을 실행하여 web01 서버에서 클러스터를 중지합니다.

    crm cluster stop

    INFO: Cluster services started라는 결과가 표시됩니다.

    이제 web02 노드에 로그인하고 클러스터 상태를 확인합니다.

    crm status


    이제 web01 노드가 오프라인이고 virtual_ip와 webserver의 리소스가 web02 노드로 전환된 결과를 얻습니다.

    유동 IP ha-web.co를 다시 방문하면 web02 페이지가 표시됩니다.

    Ubuntu 16.04에서 Pacemaker, Corosync 및 Crmsh를 사용하는 Nginx 고가용성이 성공적으로 설치 및 테스트되었습니다.

    참조

    • http://linuxlasse.net/linux/howtos/Pacemaker_and_Corosync_HA_-_2_Node_setup