使用Docker Compose部署ZooKeeper集群时,为何无需暴露2888和3888端口?
为什么Docker Compose部署ZooKeeper集群无需暴露2888和3888端口
先明确ZooKeeper这几个端口的作用:
- 2181:供外部客户端连接集群的端口,需要映射到宿主机,让外部应用能访问到集群。
- 2888:集群内部follower节点同步leader节点数据的通信端口,仅在ZooKeeper节点之间使用。
- 3888:集群选举leader时的通信端口,同样只用于节点间交互。
再看Docker Compose的默认特性:同一compose配置里的所有服务会被纳入一个专属内部网络,服务之间能直接通过服务名(比如配置里的zoo1、zoo2、zoo3)访问对方容器内的端口,完全不需要把这些内部通信端口映射到宿主机。
简单来说,zoo1、zoo2、zoo3这三个节点在内部网络里,直接就能通过2888和3888完成数据同步与leader选举,根本不需要把这两个端口暴露给宿主机外部。只有面向外部客户端的2181端口,才需要做宿主机端口映射。
内容的提问来源于stack exchange,提问作者dingqinglei
相关产品推荐
相关产品推荐

