xuxueli / xxl-job

A distributed task scheduling framework.(分布式任务调度平台XXL-JOB)
http://www.xuxueli.com/xxl-job/
GNU General Public License v3.0
27.47k stars 10.86k forks source link

请教下,如果执行器用docker的方式来运行,执行的IP怎么处理? #191

Closed utopro closed 5 years ago

utopro commented 6 years ago

Please answer some questions before submitting your issue. Thanks!

Which version of XXL-JOB do you using?

Expected behavior

Actual behavior

Steps to reproduce the behavior

Other information

xuxueli commented 6 years ago

你好,感谢关注! 执行器会自动获取IP地址的,然后自动注册到调度中心,不需要人工干预的。

utopro commented 6 years ago

docker方式下,执行器获取的是内部的IP,注册到调度中心也是用的内部IP,调度中心调度执行器的时候访问不到。

dhyang commented 6 years ago

直接将xx-job运行在Docker容器中, 与执行器在同一个网络中,就不会有问题。 比如直接运行tomcat镜像,然后将xx-job运行在tomcat中。

jinhuisheng commented 6 years ago

xxl.job.executor.ip ,这个地址,Jetty会根据它启动,同时,注册调用中心时,也要用这个ip区注册,能把它们分开吗?或者就用来注册调度中心时使用,jetty启动时使用本地ip或容器ip。如果指定一个外网ip,Jetty启动就会报错。 @xuxueli

lanhuai commented 6 years ago

xxl.job.executor.ip ,这个地址,Jetty会根据它启动,同时,注册调用中心时,也要用这个ip区注册,能把它们分开吗?或者就用来注册调度中心时使用,jetty启动时使用本地ip或容器ip。如果指定一个外网ip,Jetty启动就会报错。 @xuxueli

我也打算改这个呢

jinhuisheng commented 6 years ago

期待中

itliusir commented 6 years ago

同样遇到这个问题,添加执行器时候要手动注册需要写容器内部IP

cheocs commented 6 years ago

如果是使用K8S编排Docker的话,调度中心地址配Service名字就解决了。

yuniansheng commented 6 years ago

我也遇到类似问题,我的执行器所部署的机器会存在有多个ip的情况 1.我机器上有多个网卡,一个是虚拟机创建的网卡(ip:192.168.99.1),一个是本地连接(ip:172.18.23.137),192.168.99.1这个地址域中其它机器是不能访问的 2.线上环境使用了LVS因此有vip和实际ip 而执行器自动注册的时候会使用192.168.99.1这个ip,但是这个ip调度中心其实是访问不到的,调度中心只能访问172.18.23.137这个地址,以至于现在我只能通过手动录入的方式注册。 这里能改成调度中心接收执行器注册请求的时候使用TCP连接的客户端ip吗?这样注册的ip就是可访问的了。

Hinsteny commented 6 years ago

可以考虑修改注册中心,直接获取执行器的对外请求ip和端口

xuxueli commented 6 years ago

@yuniansheng 你好,这种情况可以通过指定IP方式部署实现,指定为外网IP即可。

@jinhuisheng @lanhuai 你好,在即将发布的 v1.9.2 该问题已经修复,可参考升级文档: “ 执行器手动设置IP时取消绑定Host的操作,该IP仅供执行器注册使用;修复指定外网IP时无法绑定执行器Host的问题;”

xuxueli commented 5 years ago

合并至:https://github.com/xuxueli/xxl-job/issues/630 (提供docker IP获取方案)

Veitor commented 4 years ago

问一下,如果使用docker运行执行器,并且要执行php脚本,那么这个执行器容器中是不是还要再安装php环境?

itliusir commented 4 years ago

@Veitor 不然呢 你怎么运行?

Veitor commented 4 years ago

@Veitor 不然呢 你怎么运行?

不太熟悉java,所以没有运行执行器= =!调度器是直接用的docker跑的。。所以还在等执行器的docker出来

目前我就大致的了解一下设计思路,他的这调度器应该是类似客户端的性质是吧,执行的代码是在客户端机器上执行的吧,所以执行器客户端所在环境需要对应脚本的可执行程序是吧

itliusir commented 4 years ago

@Veitor 关于服务端客户端的架构,官方文档都有的

lvzhihao commented 3 years ago

xxl-job-admin docker network: xxl-net driver: bridge

xxl-job-executor docker network: xxl-net external: true

sunqb commented 4 months ago

docker里面跑调度器,虚拟机跑执行器。调度器获取不到执行器地址,获取的是docker内的地址,提示找不到,使用的是最新版xxl-job