WojonsTech Asked: 2012-11-21 19:21:03 +0800 CST2012-11-21 19:21:03 +0800 CST 2012-11-21 19:21:03 +0800 CST 分片 Mongodb 通信 772 我想知道我需要为分片 mongodb 集群打开哪些端口。例如,mongos 是否需要能够接受与 mongoc 的连接。我不想有很多我不需要的开放端口。 mongodb 1 个回答 Voted Best Answer Adam C 2012-11-22T06:49:30+08:002012-11-22T06:49:30+08:00 TL;DR 版本: 您应该假设所有 mongod 进程(包括配置服务器)和所有 mongos 进程都需要相互通信。当然,这仅适用于实际的数据库端口(默认为 27017),而不适用于 HTTP 控制台 (+1000) 或 REST(如果已启用)。 更详细地说: mongos 需要与每个分片(通常是副本集)的每个成员进行读写操作。mongos 还需要与配置服务器通信——这是它获取配置的地方,以及它如何锁定、保留管理员用户等等。 副本集的成员都需要相互交谈(复制/选举)。所有初选都需要与配置服务器以及其他分片中的其他初选进行通信。由于所有辅助设备都可以成为主要设备,因此它们都应该打开与主要设备相同的端口。 此外,请确保权限是双向的,无需深入了解很多细节,连接的来源通常会让人们感到惊讶(例如,块迁移中的拉与推)。 事实上,我能想到的唯一可以通过限制端口而逃脱的进程是仲裁者——他们只需要能够与集合的成员交谈并且永远不会成为主要的。然而,mongos 确实将它作为健康检查线程的一部分进行了 ping,所以最后我认为覆盖所有的策略的简单性比你可以为仲裁器特殊情况省略的几个端口更有好处。
TL;DR 版本:
您应该假设所有 mongod 进程(包括配置服务器)和所有 mongos 进程都需要相互通信。当然,这仅适用于实际的数据库端口(默认为 27017),而不适用于 HTTP 控制台 (+1000) 或 REST(如果已启用)。
更详细地说:
mongos 需要与每个分片(通常是副本集)的每个成员进行读写操作。mongos 还需要与配置服务器通信——这是它获取配置的地方,以及它如何锁定、保留管理员用户等等。
副本集的成员都需要相互交谈(复制/选举)。所有初选都需要与配置服务器以及其他分片中的其他初选进行通信。由于所有辅助设备都可以成为主要设备,因此它们都应该打开与主要设备相同的端口。
此外,请确保权限是双向的,无需深入了解很多细节,连接的来源通常会让人们感到惊讶(例如,块迁移中的拉与推)。
事实上,我能想到的唯一可以通过限制端口而逃脱的进程是仲裁者——他们只需要能够与集合的成员交谈并且永远不会成为主要的。然而,mongos 确实将它作为健康检查线程的一部分进行了 ping,所以最后我认为覆盖所有的策略的简单性比你可以为仲裁器特殊情况省略的几个端口更有好处。