在多个ec2节点上设置zookeeper群集时,0.0.0.0的含义是什么

问题描述 投票:1回答:2

我为在hyperledger fabric orderers中设置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对我有好处,但我仍然不理解docker zookeeper的0.0.0.0的确切含义。

docker hyperledger-fabric apache-zookeeper
2个回答
2
投票

多数民众赞成网络。当你“打开”一个套接字,这意味着你创建了任何类型的tcp / udp服务器,你可以将套接字qzxswpoi到本地PC上的某个接口。

这意味着您要求服务器仅接受来自指定接口的连接。例如,您可以在板上安装多个以太网卡,并且您希望Web服务器仅在特定的一个上可用。

为了实现这一目标,您需要将服务器bind指向该接口,并指定IP地址。

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

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

0.0.0.0 - 意味着您在本地开设服务。这使您的服务仅适用于本地PC的连接。不接受外部连接。出于安全原因,此选项很有用。通常它用于反向代理体系结构,当不安全(localhost/127.0.0.1)连接在本地打开并且安全(http)时 - 在https绑定0.0.0.0作为反向代理服务器。


0
投票

最后0.0.0.0对我有好处,但我仍然不理解docker zookeeper的0.0.0.0的确切含义。

例如,如果它使用localhost网络nginx而不是zookeeper将无法在端口127.0.0.1上的容器外访问。

这个2888非常出色地解释了0.0.0.0和127.0.0.1之间的区别。

127.0.0.1和0.0.0.0之间有什么区别?

  • answer是环回地址(也称为localhost)。
  • 127.0.0.1是一个不可路由的元地址,用于指定无效的,未知的或不适用的目标(没有特定的地址占位符)。

在路由条目的上下文中,它通常表示默认路由。

在服务器的上下文中,0.0.0.0表示“>本地计算机上的所有IPv4地址”。如果主机有两个IP地址,192.168.1.1和> 10.1.2.1,>并且主机上运行的服务器侦听0.0.0.0,那么这两个IP都将>可访问>。

© www.soinside.com 2019 - 2024. All rights reserved.