Private Cloud용 Edge v. 4.17.01
ZooKeeper 앙상블은 하나 이상의 ZooKeeper 노드가 손실되더라도 데이터 손실 없이 계속 작동하도록 설계되었습니다. 이러한 복원력은 시스템 다운타임 없이 동물원Keeper 노드에서 유지보수를 수행하는 데 효과적으로 사용될 수 있습니다.
ZooKeeper 및 에지에 대한 정보
Edge에서 ZooKeeper 노드는 다양한 Edge 구성요소의 위치 및 구성에 관한 구성 데이터를 포함하고 구성 변경사항을 다양한 구성요소에 알립니다. 프로덕션 시스템에 지원되는 모든 Edge 토폴로지는 ZooKeeper 노드를 3개 이상 사용하도록 지정합니다.
Edge 구성 파일에서 ZK_HOSTS 및 ZK_CLIENT_HOSTS 속성을 사용하여 ZooKeeper 노드를 지정합니다. 예를 들면 다음과 같습니다.
ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
각 항목의 의미는 다음과 같습니다.
- ZK_HOSTS: ZooKeeper 노드의 IP 주소를 지정합니다. IP 주소는 모든 주키퍼 노드에서 동일한 순서로 나열되어야 합니다.
멀티 데이터 센터 환경에서 모든 데이터 센터의 모든 ZooKeeper 노드를 나열합니다. - ZK_CLIENT_HOSTS - 이 데이터 센터에서만 사용하는 주키퍼 노드의 IP 주소를 지정합니다. IP 주소는 데이터 센터의 모든 ZooKeeper 노드에 동일한 순서로 나열되어야 합니다.
단일 데이터 센터 설치에서 이는 ZK_HOSTS에서 지정한 것과 동일한 노드입니다. 다중 데이터 센터 환경에서 각 데이터 센터의 Edge 구성 파일에는 해당 데이터 센터의 ZooKeeper 노드만 나열되어야 합니다.
기본적으로 모든 ZooKeeper 노드는 Voter 노드로 지정됩니다. 즉, 모든 노드가 ZooKeeper 리더를 선출하는 데 참여합니다. ':observer' 수정자를 ZK_HOSTS와 함께 포함하여 메모가 투표자가 아닌 관찰자 노드임을 나타낼 수 있습니다. 관찰자 노드는 리더 선출에 참여하지 않습니다.
일반적으로 여러 Edge 데이터 센터를 만들 때 또는 단일 데이터 센터에 ZooKeeper 노드가 많은 경우 ':observer' 수정자를 지정합니다. 예를 들어 2개의 데이터 센터가 있는 12개의 호스트 Edge 설치에서 데이터 센터 2의 노드 9에 있는 동물원은 관찰자입니다.
그런 다음 데이터 센터 1의 구성 파일에서 다음 설정을 사용합니다.
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
데이터 센터의 경우
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
리더, 팔로어, 투표자, 관찰자 정보
멀티 노드 ZooKeeper 설치에서 노드 중 하나가 리더로 지정됩니다. 다른 모든 ZooKeeper 노드는 후속 노드로 지정됩니다. 읽기는 모든 ZooKeeper 노드에서 실행할 수 있지만 모든 쓰기 요청은 리더로 전달됩니다. 예를 들어 Edge에 새 메시지 프로세서가 추가됩니다. 이 정보는 ZooKeeper 리더에 기록됩니다. 그런 다음 모든 팔로어가 데이터를 복제합니다.
Edge 설치 시 각 ZooKeeper 노드를 투표자 또는 관찰자로 지정합니다. 그런 다음 모든 투표자 ZooKeeper 노드에서 리더를 선출합니다. 리더를 선출하기 위한 한 가지 요구사항은 작동하는 ZooKeeper 투표 노드의 과반수가 있어야 한다는 것입니다. 과반수(quorum)는 모든 데이터 센터의 모든 투표자 ZooKeeper 노드 중 절반 이상이 작동한다는 것을 의미합니다.
사용 가능한 투표 노드 수가 과반수가 아니면 리더를 선출할 수 없습니다. 이 시나리오에서는 Zookeeper가 요청을 처리할 수 없습니다. 즉, 과반수가 복원될 때까지 Edge 관리 서버에 요청하거나, Management API 요청을 처리하거나, Edge UI에 로그인할 수 없습니다.
예를 들어 단일 데이터 센터 설치의 경우:
- ZooKeeper 노드 3개를 설치했습니다.
- 모든 ZooKeeper 노드가 투표자임
- 과반수는 작동하는 투표 노드 2개입니다.
- 투표자 노드가 하나만 있을 경우 주키퍼 앙상블이 작동할 수 없습니다.
데이터 센터가 두 개인 설치의 경우:
- 데이터 센터당 ZooKeeper 노드 3개를 설치하여 총 6개의 노드를 설치했습니다.
- 데이터 센터 1에 3개의 투표자 노드가 있음
- 데이터 센터 2에는 투표 노드 2개와 관찰자 노드 1개가 있습니다.
- 다수결은 두 데이터 센터의 5개 투표자를 기준으로 하므로 작동하는 투표자 노드 3개입니다.
- 사용 가능한 투표 노드가 2개 이하인 경우 ZooKeeper 앙상블이 작동할 수 없습니다.
투표자 또는 관찰자로 노드 추가
시스템 요구사항에 따라 Edge 설치에 ZooKeeper 노드를 추가해야 할 수 있습니다. ZooKeeper 노드 추가 문서에서는 Edge에 ZooKeeper 노드를 추가하는 방법을 설명합니다. ZooKeeper 노드를 추가할 때는 추가할 노드 유형(투표자 또는 관찰자)을 고려해야 합니다.
하나 이상의 투표 노드가 다운되더라도 ZooKeeper 앙상블이 계속 작동할 수 있도록 충분한 투표 노드가 있어야 합니다. 즉, 사용 가능한 투표 노드 과반수가 있어야 합니다. 유권자 노드를 추가하면 쿼럼 크기가 증가하므로 더 많은 유권자 노드가 중단되어도 괜찮아집니다.
그러나 쓰기 작업에는 리더에 동의하는 과반수가 필요하므로 투표 노드를 추가하면 쓰기 성능에 부정적인 영향을 미칠 수 있습니다. 리더를 결정하는 데 걸리는 시간은 투표 노드 수에 따라 달라지며 투표 노드를 추가할수록 늘어납니다. 따라서 모든 노드를 투표자로 만들지는 않습니다.
투표 노드를 추가하는 대신 관찰자 노드를 추가할 수 있습니다. 관찰자 노드는 투표하지 않으며 쿼럼 크기에 영향을 미치지 않으므로 관찰자 노드를 추가하면 리더를 선출하는 오버헤드가 추가되지 않고 전반적인 시스템 읽기 성능이 향상됩니다. 따라서 관찰자 노드가 다운되어도 앙상블이 리더를 선택하는 능력에는 영향을 미치지 않습니다. 그러나 관찰자 노드가 손실되면 서비스 데이터 요청에 사용할 수 있는 노드 수가 적어지므로 주키퍼 앙상블의 읽기 성능이 저하될 수 있습니다.
단일 데이터 센터에서 Apigee는 관찰자 노드 수와 관계없이 투표자를 5명 이하로 유지하는 것이 좋습니다. Apigee에서는 두 데이터 센터에서 투표자를 9명 (데이터 센터 하나에 5명, 다른 데이터 센터에 4명) 이하로 유지하는 것이 좋습니다. 그런 다음 시스템 요구사항에 맞게 필요한 만큼 관찰자 노드를 추가할 수 있습니다.
유지보수 고려사항
ZooKeeper 유지보수는 한 번에 하나의 노드에서 실행되는 경우 다운타임 없이 완전히 작동하는 앙상블에서 실행할 수 있습니다. 한 번에 하나의 ZooKeeper 노드만 다운되도록 하면 리더를 선출할 수 있는 과반수의 투표 노드가 항상 있는지 확인할 수 있습니다.
여러 데이터 센터에서의 유지보수
여러 데이터 센터에서 작업하는 경우 ZooKeeper 앙상블은 데이터 센터를 서로 구별하지 않는다는 점에 유의하세요. ZooKeeper 어셈블리는 모든 데이터 센터의 모든 ZooKeeper 노드를 하나의 앙상블로 봅니다.
ZooKeeper에서 과반수 계산을 실행할 때는 특정 데이터 센터의 투표 노드 위치가 고려되지 않습니다. 개별 노드는 데이터 센터 전반에서 다운될 수 있지만 전체 어셈블리에서 과반수가 유지되는 한 ZooKeeper는 계속 작동합니다.
유지보수 관련 고려사항
유지보수를 위해 투표자 노드 또는 관찰자 노드 중 하나로 동물원키퍼 노드를 중단시켜야 할 때도 있습니다. 예를 들어 노드에서 Edge 버전을 업그레이드해야 하거나, 주키퍼를 호스팅하는 머신이 실패할 수 있으며, 네트워크 오류와 같은 다른 이유로 노드를 사용할 수 없게 될 수도 있습니다.
다운되는 노드가 관찰자 노드인 경우 노드가 복원될 때까지 주키퍼 앙상블의 성능이 약간 저하될 수 있습니다. 노드가 투표 노드인 경우 리더 선출 프로세스에 참여하는 노드가 손실되어 ZooKeeper 앙상블의 실행 가능성에 영향을 줄 수 있습니다. 유권자 노드가 다운되는 이유에 관계없이 사용 가능한 투표자 노드의 쿼럼을 유지하는 것이 중요합니다.
유지보수 절차
ZooKeeper 앙상블이 작동하는지 확인한 후에만 유지보수 절차를 수행하는 것이 좋습니다. 여기서는 관찰자 노드가 작동하고 있으며 유지보수 중에 쿼럼을 유지하기에 충분한 투표자 노드가 있다고 가정합니다.
이러한 조건이 충족되면 임의 크기의 ZooKeeper 앙상블은 데이터 손실이나 성능에 의미 있는 영향 없이 언제든지 단일 노드의 손실을 허용할 수 있습니다. 즉, 한 번에 하나의 노드에 있는 한 앙상블의 모든 노드에서 자유롭게 유지보수를 실행할 수 있습니다.
유지보수의 일환으로 다음 절차에 따라 ZooKeeper 노드의 유형 (리더, 투표자, 관찰자)을 확인합니다.
- ZooKeeper 노드에 설치되어 있지 않으면 nc를 설치합니다.
> sudo yum install nc - 노드에서 다음 nc 명령어를 실행합니다.
> echo stat | nc localhost 2181
여기서 2181은 ZooKeeper 포트입니다. 다음과 같은 형식의 출력이 표시됩니다.
Zookeeper 버전: 3.4.5-1392090, 2012년 9월 30일 17:52 GMT에 빌드됨
클라이언트: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
지연 시간 최솟값/평균/최대값: 0/0/0
수신됨: 1
전송됨: 0
연결: 1
미완료: 0
Zxid: 0xc00000044
모드: 후속 노드
노드 수: 653
노드 출력의 모드 행에는 노드 구성에 따라 관찰자, 리더 또는 후속 노드 (리더가 아닌 투표자)가 표시됩니다.
참고: ZooKeeper 노드가 하나인 Edge의 독립형 설치에서는 모드가 독립형으로 설정됩니다. - 각 주키퍼 노드에서 1단계와 2단계를 반복합니다.
요약
ZooKeeper 앙상블에 유지보수를 수행하는 가장 좋은 방법은 한 번에 한 노드씩 유지보수를 수행하는 것입니다. 주의:
- ZooKeeper 앙상블이 계속 작동하도록 하려면 유지보수 중에 투표 노드의 과반수를 유지해야 합니다.
- 관찰자 노드를 종료해도 쿼럼 또는 리더 선택 기능에 영향을 미치지 않습니다.
- 쿼럼은 모든 데이터 센터의 모든 ZooKeeper 노드에서 계산됩니다.
- 이전 서버가 작동한 후 다음 서버의 유지보수 진행
- nc 명령어를 사용하여 ZooKeeper 노드 검사