idoop/docker-apollo

config server地址问题

Closed this issue · 8 comments

我的config server在内网中,因此注册到Eureka的地址为内网地址,客户端通过外网连接到meta server后,就获取了config server的内网地址,然后就无法连接config server了,这个如何解决?

idoop commented

请参考Wiki的线上线下的例子。即两种方式,一个是直接在数据库中指定你的外网地址;另一个则设置对应环境变量,例如是DEV的则设置DEV_LB为外网的IP或网址。

DEV_LB的方式我试过,如果做了端口映射就不能用了,DEV_LB只能设置IP,不能设置端口,数据库中指定不知道怎么设置,我尝试设置了ApolloConfigDBPro.ServerConfig中的eureka.service.url不起作用

idoop commented

设置了DEV_LB的话,请将内外的端口同步一致,因为容器可以开放多个端口,所以再在容器启动时多映射添加一个网关端口即可,或者直接设置网络模式为host模式,然后直接指定DEV_CONFIG_PORT和DEV_ADMIN_PORT。

设置DEV_LB的方法我比较清楚,网络模式无论是host还是bridge,都存在路由器端口映射的问题,数据库指定的方式能否指导一下?

idoop commented

数据库中指定的地址,就是启动admin和config后从数据库中获取到的Eureka地址,那么假设你的网关IP为1.1.1.1,映射Port为80,那么其实就是指连接config服务中的Eureka的地址和端口是这个。因此,只需要将数据库中的localhost和8080改为1.1.1.1和80。然后设置下网关对外的80转发进内外config容器启动后暴露的地址和端口即可。

原理上明白了,具体怎么配置能否提供一下?试了半天也没弄成,先谢了

idoop commented

这个就是直接在数据库ServerConfig表改好了,启动容器,然后在路由网关上改转发就好。

我再试试,多谢了 @idoop