IP 配置
Contents
IP 配置#
物理环境 IP#
跨主机访问OpenMLDB服务,需要将OpenMLDB配置中的endpoint配置127.0.0.1
改为0.0.0.0
或公网IP,再启动OpenMLDB服务。请保证端口没有被防火墙阻挡。
Attention
单机版中,不只是需要改endpoint,nameserver的配置中还有tablet ip --tablet=
,此处也需要修改。
Docker IP#
希望从容器的外部(无论是同一主机还是跨主机)访问容器内,请先
更改endpoint127.0.0.1
为 0.0.0.0
(单机版中tablet
配置项也需要更改),以避免不必要的麻烦。
容器外部访问(同一主机)#
在同一主机中,想要从容器的外部(物理机或者是其他容器)访问容器内启动的OpenMLDB服务端,可以直接使用bridge的方式连接,也可以暴露端口,还可以直接使用host网络模式。
Caution
Docker Desktop for Mac无法支持从物理机访问容器(以下任何模式都不能),参考i-cannot-ping-my-containers。
但macOS中,可以从容器内访问其他容器。
bridge连接#
bridge连接不需要更改docker run命令,只需要查询一下bridge ip。
docker network inspect bridge
查看“Containers”字段,可以看到每个容器绑定的ip,客户端使用该ip就可以进行访问。
例如,启动容器并运行OpenMLDB单机版后,inspect结果为172.17.0.2
,那么CLI连接可以使用:
../openmldb/bin/openmldb --host 172.17.0.2 --port 6527
暴露端口#
在启动容器时通过 -p
暴露端口,客户端可以使用本机ip地址或回环地址进行访问。
单机版需要暴露三个组件(nameserver,tabletserver,apiserver)的端口:
docker run -p 6527:6527 -p 9921:9921 -p 8080:8080 -it 4pdosc/openmldb:0.5.3 bash
集群版需要暴露zk端口与所有组件的端口:
docker run -p 2181:2181 -p 7527:7527 -p 10921:10921 -p 10922:10922 -p 8080:8080 -p 9902:9902 -it 4pdosc/openmldb:0.5.3 bash
Tip
-p
将“物理机端口”和“容器内端口”进行绑定,可能出现“容器端口号”在物理机上已被使用的情况。
如果OpenMLDB服务仅在单个容器内,只需要改变一下暴露的物理机端口号,客户端相应地改变访问端口。各个服务进程的配置项不需要更改。
如果OpenMLDB服务进程是分布式的,在多个容器内,出现“端口号被占用”,我们不推荐“切换暴露端口号”的方式,请改变配置的端口号,暴露时使用同样的端口号。
host network#
或者更方便地,使用 host networking,不进行端口隔离,例如:
docker run --network host -it 4pdosc/openmldb:0.5.3 bash
但这种情况下,很容易出现端口已被主机中其他进程占用。如果出现占用,请仔细更改端口号。
跨主机访问本机容器#
除了bridge模式无法做到跨主机访问,暴露端口和host network的方法均可以实现跨主机访问本机容器。