使用docker容器部署powerjob-server,发现powerjob-server读取的ip地址不正确。导致我的worker无法注册进去

1. 需求

最近有个需求,是要把powerjob-server集成进系统里面。我在本地做测试完全没有问题,但是当我把powerjob移到虚拟机的容器里面去部署,发现我的worker无法访问进去。

2. 发现问题

这里我就感觉非常奇怪了,我本地没问题,并且我部署了server之后,我在网页上也能访问到,但是为什么就是注册不进去呢?

3. 排查问题

我就去看了一下日志和官方文档,大概率多网卡导致 可以在worker看下current serve的地址,然后应该发现和你的nat地址不在同一段。
然后我访问http://192.168.116.128:7700/server/hello,把ip换成你的ip地址,神奇的出现了,我本来server是192.168开头的,访问这个ur,赫然发现成了172.19。

于是我去ping了一下,肯定是ping不通的啦。

我看官网的解决方法,是绑定address的地址

于是我去试了一下,没有任何用,我指定了参数,但是还是和之前一样。

4. 解决问题

经过百般思索,然后我就尝试了一下,指定虚拟机的ip与本地通用,意思就是指定容器的网络模式为host。

yml文件贴在下面:

  powerjob:
    image: tjqq/powerjob-server:latest
    container_name: powerjob-server
    restart: always
    ports:
      - 7700:7700
      - 10010:10010
      - 10086:10086
    network_mode: host
    volumes:
      - /data/docker-compose/powerjob:/root/powerjob/server
      - ~/.m2:/root/.m2
    environment:
      JVMOPTIONS: "-Xmx512m -Dpowerjob.network.local.address=192.168.116.128"
      PARAMS: "--oms.mongodb.enable=false --spring.profiles.active=product --spring.datasource.core.jdbc-url=jdbc:mysql://ip:3306/powerjob-product?useUnicode=true&characterEncoding=UTF-8 --spring.datasource.core.username=root  --spring.datasource.core.password=your_password"

 在host模式下,好像不用指定端口,我没在意,就这样部署上去了。

再去查看日志,可以看到日志出现了变化, 现在7700/10010/10086这三个端口都是绑定在正确的虚拟机上面,然后访问网页,可以注册进去了!

5. 友情提醒

最后提醒一下大家哈,每个人可能遇到的情况不一样,这只是我个人的解决方法,欢迎大家来交流!

后续:不使用host模式,进行部署,一样实现调度

除了host模式,一般我们在部署的时候,为了满足集群部署,docker容器化的特性。我们需要它在桥接模式下也能正常使用

经过反复的配置和测试,终于发现了,可以根据这个来实现应用在本地,server在服务器的调度了

这个配置需要在worker和server两端都进行配置

在idea中,我在VM options中配置了启动参数

-Dpowerjob.network.external.address=172.16.***.*** -Dpowerjob.network.external.port=27777

这个是我本机的IP地址。

然后我在启动server的时候,在docker-compose文件中,同样添加JVM启动参数

JVMOPTIONS: "-Xmx512m -Dpowerjob.network.external.address=192.168.***.*** -Dpowerjob.network.external.port.http=10010 -Dpowerjob.network.external.port.akka=10086"

这个启动参数中的IP是我服务器的地址,而不是docker网络的地址。

然后访问下面这个地址,你可以看到下面的externalAddress这个地址不再是你容器的地址,而是你服务器的地址。到这基本上就成功了!

其他的就是按照官网的部署方式来就行

猜你喜欢

转载自blog.csdn.net/Libigtong/article/details/133123852