控制器必须在具有较低延迟的磁盘上运行。群集要求每个节点的磁盘存储系统具有小于 300 毫秒的峰值写入延迟以及小于 100 毫秒的平均写入延迟。
问题
- 部署的 NSX Controller 与控制器群集断开连接。
- 由于磁盘分区已满,无法收集任何控制器日志。
- 如果存储系统不满足这些要求,则群集可能变得不稳定,并且导致系统停机时间。
- 在 show network connections of-type tcp 命令输出中不再显示适用于正常工作的 NSX Controller 的 TCP 侦听器。
- 断开连接的控制器尝试使用无效的全零 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 建议将一个逻辑单元号 (Logical Unit Number, LUN) 明确专用于控制群集以及/或者将存储阵列移到离控制群集更近的位置以降低延迟。
- 您可以查看读取延迟和写入延迟计算结果(默认情况下,计入 5 秒移动平均值),而该结果用于在违反延迟限制时触发警报。在平均值降到低水位线后,将关闭警报。默认情况下,高水位线设置为 200 毫秒,低水位线设置为 100 毫秒。您可以使用 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。
- 每个控制器应使用自己的磁盘存储服务器。不要在两个控制器之间共享同一磁盘存储服务器。
下一步做什么
有关如何查看警报的详细信息,请参阅查看磁盘延迟警报。