컨트롤러는 낮은 지연 시간을 가진 디스크에서 작동해야 합니다. 클러스터는 각 노드에 대한 디스크 스토리지 시스템이 300ms보다 작은 최대 쓰기 지연 시간과 100ms보다 작은 평균 쓰기 지연 시간을 갖도록 요구합니다.
문제
- 배포된 NSX Controller의 연결이 컨트롤러 클러스터에서 끊깁니다.
- 디스크 파티션이 꽉 차 있으므로 컨트롤러 로그를 수집할 수 없습니다.
- 스토리지 시스템이 이러한 요구 사항을 충족하지 못하면 클러스터가 불안정해지며 시스템 다운타임이 발생할 수 있습니다.
- 작동하는 NSX Controller에 적용되는 TCP 수신기는 더 이상 show network connections of-type tcp 명령의 출력에 나타나지 않습니다.
- 연결이 끊긴 컨트롤러는 유효하지 않은, 모두 0으로 구성된 UUID를 사용하여 클러스터에 연결하려고 합니다.
- show control-cluster history 명령을 실행하면 다음과 비슷한 메시지가 표시됩니다.
INFO.20150530-000550.1774:D0530 13:25:29.452639 1983 zookeeper_client.cc:774] Zookeeper client disconnected!
- NSX Controller 콘솔에서 show log cloudnet/cloudnet_java-zookeeper*.log 명령을 실행하면 다음과 비슷한 항목이 포함됩니다.
cloudnet_java-zookeeper.20150530-000550.1806.log-2015-05-30 13:25:07,382 47956539 [SyncThread:1] WARN org.apache.zookeeper.server.persistence.FileTxnLog - fsync-ing the write ahead log in SyncThread:1 took 3219ms which will adversely effect operation latency. See the ZooKeeper troubleshooting guide
- NSX Controller 로그에는 다음과 비슷한 항목이 포함됩니다.
D0525 13:46:07.185200 31975 rpc-broker.cc:369] Registering address resolution for: 20.5.1.11:7777 D0525 13:46:07.185246 31975 rpc-tcp.cc:548] Handshake complete, both peers support the same protocol D0525 13:46:07.197654 31975 rpc-tcp.cc:1048] Rejecting a connection from peer 20.5.1.11:42195/ef447643-f05d-4862-be2c-35630df39060, cluster 9f7ea8ff-ab80-4c0c-825e-628e834aa8a5, which doesn't match our cluster (00000000-0000-0000-0000-000000000000) D0525 13:46:07.222869 31975 rpc-tcp.cc:1048] Rejecting a connection from peer 20.5.1.11:42195/ef447643-f05d-4862-be2c-35630df39060, cluster 9f7ea8ff-ab80-4c0c-825e-628e834aa8a5, which doesn't match our cluster (00000000-0000-0000-0000-000000000000)
원인
이 문제는 디스크 성능 저하로 인해 발생할 수 있으며 NSX Controller 클러스터에 좋지 않은 영향을 미칩니다.
- /var/log/cloudnet/cloudnet_java-zookeeper log 파일에서 fsync 메시지를 찾아 느린 디스크를 확인합니다. fsync가 1초보다 오래 걸리면 ZooKeeper는 fsync 경고 메시지를 표시하며, 이는 디스크가 너무 느리다는 의미입니다. VMware에서는 제어 클러스터용으로 LUN(논리적 단위 번호)을 특별히 지정하고, 지연 시간 측면에서 제어 클러스터에 더 가깝게 스토리지 어레이를 이동하는 것을 권장합니다.
- 5초(기본값) 이동 평균에 입력된 읽기 지연 시간 및 쓰기 지연 시간 계산을 볼 수 있습니다. 이 값은 지연 시간 제한을 위반할 때 경고를 트리거하는 데 사용됩니다. 평균 시간이 낮은 워터마크에 도달하면 경고가 해제됩니다. 기본적으로 높은 워터마크는 200ms로, 낮은 워터마크는 100ms로 설정됩니다. show disk-latency-alert config 명령을 사용할 수 있습니다. 출력은 다음과 같이 표시됩니다.
enabled=True low-wm=51 high-wm=150 nsx-controller # set disk-latency-alert enabled yes nsx-controller # set disk-latency-alert low-wm 100 nsx-controller # set disk-latency-alert high-wm 200
- GET /api/2.0/vdn/controller/<controller-id>/systemStats REST API를 사용하여 컨트롤러 노드의 지연 시간 경고 상태를 가져옵니다.
- GET /api/2.0/vdn/controller REST API를 사용하여 디스크 지연 시간 경고가 컨트롤러 노드에서 감지되는지 여부를 나타냅니다.
해결책
- 지연 시간이 낮은 디스크에 NSX Controller를 배포합니다.
- 각 컨트롤러는 자체 디스크 스토리지 서버를 사용해야 합니다. 두 컨트롤러 간에 동일한 디스크 스토리지 서버를 공유하지 마십시오.
다음에 수행할 작업
경고를 보는 방법에 대한 자세한 내용은 디스크 지연 시간 경고 보기를 참조하십시오.