如何从外部访问 consul UI

How to access externally to consul UI

如何从外部访问 consul UI?

我想访问 consul UI 写作

<ANY_MASTER_OR_SLAVE_NODE_IP>:8500

我已经尝试通过 ssh 隧道访问: ssh -N -f -L 8500:localhost:8500 root@172.16.8.194

然后如果我访问 http://localhost:8500 它有效,但这不是我想要的。我需要外部访问,没有ssh隧道。

我的 config.json 文件是下一个:

{
"bind_addr":"172.16.8.216",
"server": false,
"datacenter": "nyc2",
"data_dir": "/var/consul",
"ui_dir": "/home/ikerlan/dist",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.16.8.211","172.16.8.212","172.16.8.213"]
}

有什么帮助吗? 谢谢

如果没有用户界面就无法获得用户界面) Classic UI 它是一些桌面环境(x-term....),所以在获取之前,你需要将它安装在 node

我还没有使用 Consul 的实践经验,但这里有一些提示:

  • 运行 sudo netstat -peanut | grep :8500 并检查 Consul 是否绑定到 0.0.0.0 或显式 ip。如果这是可配置的,应该检查文档。
  • 在每个节点上安装 Squid, Nginx 或任何其他可以充当 HTTP 代理的软件

添加

{
  "client_addr": "0.0.0.0"
}

到您的配置或将选项 -client 0.0.0.0 添加到 consul 的命令行以使您的 Web UI 可从外部访问 (see the docs for more information)。

请注意,这也会使您的 Consul REST API 可以从外部访问。根据您的环境,您可能希望激活 Consul 的 ACL 以限制访问。

终于找到解决办法了。 添加到配置文件中,bind addr 是机器的 IP,client_addr 是他收听的主机。所以我用0.0.0.0来监听所有IP。

"bind_addr":"<machine-ip>",
"client_addr":"0.0.0.0",

在这种情况下,您可以使用 socat。

socat -d -d TCP-L:8500,bind=172.16.93.128,fork TCP:localhost:8500 &

其中 172.16.93.12 是我的 IP。

我运行它作为docker图像,我给

docker pull consul

docker run -p 8500:8500 consul

并且我可以在 http://<hostname>:8500/ui

访问领事 ui