首页 > 解决方案 > 在多个ec2节点上设置zookeeper集群时0.0.0.0是什么意思

问题描述

我在为超级账本结构订购者设置 Zookeeper集群时遇到了困难。通过 docker zookeeper 用户论坛 [ https://forums.docker.com/t/cannot-get-zookeeper-to-work-running-in-docker-using-swarm-mode/27109],它说我必须使用0.0 .0.0作为服务器的主机。

我不明白为什么 127.0.0.1 或 localhost 不起作用。此外,如果0.0.0.0用作子网掩码,则 255.255.255.0 或 0.0.0.1 也不起作用。

那么docker zookeeper上的0.0.0.0对于宿主机上的服务器来说是什么意思。

version: '2'
services:
    zk-1:
        extends:
            file: docker-compose-zkbase.yml # common setting for zookeepers
            service: zookeeper
        container_name: zk-1
        hostname: zk-1
        environment:
            - ZOO_MY_ID=1
            - ZOO_SERVERS=server.1=0.0.0.0:2888:3888 server.2=13.125.46.185:2888:3888 server.3=54.180.152.130:2888:3888

最后 0.0.0.0 对我来说是好的,但是我还是不明白 0.0.0.0 对于 docker zookeeper 的确切含义。

标签: dockerhyperledger-fabricapache-zookeeper

解决方案


这就是关于网络的全部内容。当您“打开”一个套接字时,这意味着您创建了任何类型的 tcp/udp 服务器,您bind将套接字连接到本地 PC 上的某个接口。

这意味着你告诉你的服务器只接受来自指定接口的连接。例如,您可能有多个板载以太网卡,并且您希望您的 Web 服务器仅在特定的一个上可用。

为了实现你bind的服务器到那个接口,指定IP地址。

同时似乎还有一些特殊的价值,它们是:

0.0.0.0- 表示您的服务可以在所有界面上访问。您可以从本地计算机和连接到任何以太网适配器的任何 PC 进行连接。

localhost/127.0.0.1- 表示您在本地打开您的服务。这使您的服务仅可用于来自本地 PC 的连接。不接受外部连接。出于安全原因,此选项很有价值。它通常用于反向代理架构中,当不安全(http)连接在本地打开并且安全(https)时 - 在0.0.0.0绑定时nginx作为反向代理促进者。


推荐阅读