ZooKeeper 유지보수 정보

주키퍼 앙상블은 서비스가 손실되더라도 데이터 손실 없이 계속 작동하도록 주키퍼 노드가 하나 이상 있을 수 있습니다. 이러한 복원력을 활용하여 시스템 다운타임이 없는 ZaKeeper 노드

주키퍼 및 Edge 정보

Edge에서 ZaKeeper 노드에는 클러스터의 위치와 구성에 대한 구성 데이터가 포함되어 있습니다. 구성 변경을 서로 다른 구성요소에 알립니다. 전체 프로덕션 시스템에 지원되는 Edge 토폴로지는 최소 세 개의 동물원키퍼 사용 노드라는 두 가지 리소스가 있습니다

ZK_HOSTSZK_CLIENT_HOSTS 속성을 사용하여 ZooKeeper 노드를 지정하는 에지 구성 파일입니다. 예를 들면 다음과 같습니다.

ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

각 항목의 의미는 다음과 같습니다.

  • ZK_HOSTS는 주키퍼 노드의 IP 주소를 지정합니다. IP 주소 모든 ZaKeeper 노드에서 동일한 순서로 나열되어야 합니다.

    다중 데이터 센터 환경에서 모든 데이터 센터의 모든 주키퍼 노드를 나열합니다.

  • ZK_CLIENT_HOSTS는 이 노드에서 사용하는 주키퍼 노드의 IP 주소를 지정합니다. 데이터 센터 전용. IP 주소는 데이터 센터

    단일 데이터 센터 설치에서 이 노드들은 ZK_HOSTS에 의해 지정된 것과 동일한 노드입니다. 각 데이터 센터의 에지 구성 파일에는 주키퍼 노드.

기본적으로 모든 ZooKeeper 노드는 Voter 노드로 지정됩니다. 즉, 노드에는 모두 주키퍼의 리더를 선정하는 데 참여합니다. 이때 다음을 나타내는 ZK_HOSTS가 포함된 :observer 수정자 유권자가 아닌 관찰자 노드입니다. 관찰자 노드는 도움이 될 것입니다

여러 에지 데이터를 만들 때 일반적으로 :observer 수정자를 지정합니다. 센터 또는 단일 데이터 센터에 많은 동물원이 있는 경우 예를 들어 2개의 데이터 센터가 있는 12-호스트 Edge 설치, 데이터 센터 2의 노드 9에 있는 주키퍼는 관찰자:

그런 다음 데이터 센터 1의 구성 파일에서 다음 설정을 사용합니다.

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

데이터 센터 2의 경우:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

다음 섹션에는 리더, 유권자, 관찰자 노드를 살펴보고 투표자 및 관찰자 노드를 추가할 때 고려할 사항을 설명합니다.

리더, 팔로어, 유권자 및 관찰자

멀티 노드 ZooKeeper 설치에서 노드 중 하나가 리더로 지정됩니다. 다른 모든 ZaKeeper 노드는 팔로어로 지정됩니다. 읽기는 모든 리소스에서 발생할 수 있지만 ZooKeeper 노드에서 모든 쓰기 요청이 리더로 전달됩니다. 예를 들어 새 메시지 프로세서가 Edge에 추가됩니다. 이 정보는 주키퍼 리더에게 작성됩니다. 모든 팔로어 데이터를 복제합니다

Edge 설치 시 개발자는 각 주키퍼 노드를 유권자 또는 관찰자로 지정합니다. 이 그런 다음 모든 유권자 주키퍼 노드에 의해 리더가 선출됩니다. 한 가지 요구사항은 사용 가능한 주키퍼 투표자 노드의 쿼럼이 있어야 한다는 것이 리더의 선택입니다. 가 쿼럼은 모든 데이터 센터의 전체 유권자 주키퍼 노드 중 절반 이상이 있습니다.

사용 가능한 투표자 노드 쿼럼이 없는 경우 리더를 선출할 수 없습니다. 이 시나리오에서는 주키퍼는 요청을 처리할 수 없습니다. 즉, 에지 관리에 요청을 할 수 없습니다. 쿼럼이 복원될 때까지 서버를 관리하거나, Management API 요청을 처리하거나, Edge UI에 로그인해야 합니다.

예를 들어 단일 데이터 센터 설치에서 다음을 수행합니다.

  • 주키퍼 노드 3개를 설치했습니다.
  • 모든 주키퍼 노드는 유권자임
  • 2개의 작동하는 투표자 노드가 있는 쿼럼
  • 투표자 노드가 하나만 있을 경우 주키퍼 앙상블이 작동할 수 없습니다.

2개의 데이터 센터가 있는 설치:

  • 데이터 센터당 3개의 주키퍼 노드를 설치하여 총 6개의 노드를 설치했습니다.
  • 데이터 센터 1에 3개의 투표자 노드가 있음
  • 데이터 센터 2에 2개의 투표자 노드와 1개의 관찰자 노드가 있음
  • 쿼럼은 두 데이터 센터의 투표자 5명을 기준으로 결정되므로 작동하는 투표자 노드 3개
  • 사용할 수 있는 유권자 노드가 두 개 이하인 경우 주키퍼 앙상블은 함수

노드를 투표자로 추가할 때 고려할 사항 관찰자

시스템 요구사항으로 인해 Edge에 ZuKeeper 노드를 더 추가해야 할 수 있습니다. 설치해야 합니다 ZooKeeper 노드 추가 문서 Edge에 추가적인 주키퍼 노드를 추가하는 방법을 설명합니다. 주키퍼 노드를 추가할 때 다음을 수행해야 합니다. 에서는 추가할 노드 유형(투표자 또는 관찰자)을 고려합니다.

하나 이상의 유권자 노드가 다운되어도 충분한 유권자 노드가 있어야 합니다. 주키퍼 앙상블은 여전히 작동할 수 있습니다. 즉, 투표자 노드 수가 여전히 있습니다. 투표자 노드를 추가하면 쿼럼 크기가 증가하므로 더 많은 유권자 노드가 중단되는 것을 용인할 수 있습니다

하지만 추가 투표자 노드를 추가하면 쓰기 성능에 부정적인 영향을 줄 수 있습니다. 쿼럼이 리더에 합의해야 합니다. 주요 변수를 결정하는 데 걸리는 시간 유권자 노드 수를 기준으로 하며, 유권자 노드를 추가하면 증가합니다. 따라서 모든 노드 투표자로 만들고 싶지는 않습니다.

투표자 노드를 추가하는 대신 관찰자 노드를 추가할 수 있습니다. 관찰자 노드를 추가하면 증가 리더 선정에 따른 오버헤드를 추가하지 않고 전체 시스템 읽기 성능을 줄일 수 있습니다 관찰자 노드는 응답하지 않으며 쿼럼 크기에 영향을 미치지 않습니다. 따라서 관찰자 노드가 리더를 선택하는 앙상블의 능력에 영향을 미치지 않습니다. 관찰자 손실 노드의 경우 주Keeper 앙상블의 읽기 성능이 저하될 수 있습니다. 더 적은 수의 노드가 가능합니다

Apigee는 단일 데이터 센터에서 투표자가 5명 이하일 것을 권장합니다. 관찰자 노드 수를 나타냅니다 Apigee는 두 개의 데이터 센터에 9명 (데이터 센터에서 5명, 다른 데이터 센터 4명)보다 높습니다. 그런 다음 관찰자 노드를 직접 만들 수 있습니다

주키퍼 노드 삭제

주키퍼 노드를 제거해야 하는 이유는 다양합니다. 예를 들어 노드에 손상되었거나 잘못된 환경에 추가되었을 수 있습니다.

이 섹션에서는 노드가 다운되고 노드가 다운되지 않을 때 Zookeeper 노드를 삭제하는 방법을 설명합니다. 있습니다.

Zookeeper 노드를 삭제하려면 다음 안내를 따르세요.

  1. 자동 구성 파일을 수정하고 사용자가 생성한 Zookeeper 노드의 IP 주소를 삭제합니다. 있습니다.
  2. 주키퍼에 대한 setup 명령어를 다시 실행하여 나머지 주키퍼를 재구성합니다. 노드:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. 모든 Zakeeper 노드를 다시 시작합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. 관리 서버 노드를 재구성합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. 모든 라우터를 재구성합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. 모든 메시지 프로세서를 재구성합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. 모든 Qpid 노드를 재구성합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. 모든 Postgres 노드를 재구성합니다.
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

유지보수 고려사항

다음과 같은 경우 다운타임 없이 완벽하게 작동하는 앙상블에서 주키퍼 유지관리를 수행할 수 있습니다. 단일 노드에서 수행한다는 것을 명심해야 합니다 주키퍼 노드가 단 한 개만 다운되었는지 확인하여 한 번이라도 주를 선출할 수 있는 유권자 노드 쿼럼이 항상 있도록 할 수 있습니다. 있습니다

유지보수 전반 여러 데이터 센터

여러 데이터 센터에서 작업하는 경우, ZooKeeper 앙상블은 구별합니다. 주키퍼 어셈블리에는 전체 데이터 센터를 하나의 앙상블로 통합

주어진 데이터 센터에서 유권자 노드의 위치는 주키퍼가 수행할 때 고려되는 요소가 아닙니다. 쿼럼 계산을 수행합니다. 개별 노드는 데이터 센터 간에 다운될 수 있지만 쿼럼이 주키퍼는 계속 작동합니다.

유지보수 영향

유권자이거나 유권자인 경우 유지보수를 위해 주키퍼 노드를 중단시켜야 하는 경우도 많습니다. 관찰자 노드와는 다릅니다 예를 들어 노드에서 Edge 버전을 업그레이드해야 할 수 있습니다. 주키퍼를 호스팅하는 머신이 실패할 수도 있고, 또는 다른 몇몇 서비스가 노드를 사용할 수 없게 될 수도 있습니다. 네트워크 오류와 같은 원인이 있을 수 있습니다.

중단되는 노드가 관찰자 노드인 경우 주키퍼 앙상블의 성능이 계속 유지됩니다. 노드가 유권자인 경우 노드를 삭제하면 다른 모든 노드에서 실행되는 노드의 손실로 인해 동물원키퍼 앙상블의 실행 가능성에 영향을 리더 선택 프로세스에 참여합니다. 투표자 노드가 사용할 수 있는 유권자 노드의 쿼럼을 유지하는 것이 중요합니다.

유지보수 절차

주키퍼(ZooKeeper)가 작동한다는 것입니다. 이때 관찰자 노드가 작동하고 있고 쿼럼을 유지하기 위해 유지보수 중에 사용할 수 있는 유권자 노드 수를 줄일 수 있습니다.

이러한 조건이 충족되면 임의의 크기의 주키퍼 앙상블이 데이터 손실이나 성능에 유의미한 영향 없이 언제든지 단일 노드의 손실을 야기할 수 있습니다. 이 앙상블에 있는 노드 중 하나에 있는 한 어떤 노드에서든 자유롭게 노드 단위로만 지정할 수 있습니다

유지보수 수행의 일환으로 다음 절차에 따라 주키퍼 노드 (리더, 투표자 또는 관찰자):

  1. ZooKeeper 노드에 이 앱이 설치되어 있지 않으면 nc를 설치합니다.
    sudo yum install nc
  2. 노드에서 다음 nc 명령어를 실행합니다. 여기서 2181은 주키퍼 포트입니다.
    echo stat | nc localhost 2181

    양식에 다음과 같이 출력이 표시됩니다.

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    노드 출력의 Mode 줄에 observer이 표시됩니다. leader 또는 follower (지도자가 아닌 유권자) 노드 구성에 따라 달라집니다

  3. 각 주키퍼 노드에서 1단계와 2단계를 반복합니다.

요약

ZooKeeper 앙상블에 대한 유지관리를 수행하는 가장 좋은 방법은 한 번에 한 노드씩 유지관리하는 것입니다. 있습니다. 주의:

  • 주키퍼가 유지될 수 있도록 유지보수 중에 유권자 노드 쿼럼을 유지해야 합니다. 기능을 유지합니다.
  • 관찰자 노드를 종료해도 쿼럼 또는 리더 선택 기능에는 영향을 미치지 않습니다.
  • 쿼럼은 모든 데이터 센터의 모든 주키퍼 노드에서 계산됩니다.
  • 이전 서버가 작동하면 다음 서버로 유지보수를 진행합니다.
  • nc 명령어를 사용하여 주키퍼 노드를 검사합니다.