发布时间:2022-12-12 文章分类:编程知识 投稿人:王小丽 字号: 默认 | | 超大 打印

开心一刻

  某次住酒店,晚上十点多叫了个外卖

  过了一阵儿,外卖到了

  因为酒店电梯要刷卡,所以我下楼去接

  到了电梯口看到个模样不错的妹纸

  我:是你么?

  妹纸愣了下:嗯!

  于是拉上进电梯回房间,正准备开始呢

  我俩的电话同时响了

  按下接听键,一男一女同时问:我到电梯口了,你人呢?

  尴尬了,取错外卖了

  然后一起回电梯口,四个人一起上电梯,电梯里非常尴尬

  我:呵呵,你的妹纸不错

  他:呵呵,你也是

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

前情回顾

  在当 xxl-job 遇上 docker → 它晕了,我也乱了!,有两个场景没给大家演示,先补上

  executor 和 admin 在同一台宿主机上通过 docker 部署

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  这里有必要给大家简单讲一下Dockerbridge网络模式

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  docker0类似一个交换机,它有很多接口,每个接口叫veth,在宿主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair

  每个容器实例内部也有一块网卡,其接口叫eth0docker0上面的每个veth匹配某个容器内部的eth0,两两配对,一一匹配

  如此,将同个宿主机上的所有容器都连接到同个内部网络上,那么这些容器之间的网络是互通的

  所以这种情况下,xxl-job-admin是可以掉通xxl-admin-executor的,因为它们在同一个内部网络上

  executor 和 admin 都通过 docker 部署,但不在同一个宿主机

  上一篇提到了,但没告诉大家结果,也不知道大家有没有去验证,这里再给大家演示下

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  从结果来看,xxl-job-admin是访问不通xxl-job-executor的,想知道为什么吗?

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  两台宿主机的docker0分别构成了一个内部网络,但这两个内部网络是隔离的、不通的!

  这就好比我的局域网的192.168.1.115访问你的局域网的192.168.1.118,你说能访问得通吗?

自动注册

  关于自动注册的问题,很多小伙伴在上一篇的评论区给出一些解决方案,我来给大家试试水

  docker compose

  xxl-job-admin镜像不需要改动,以docker-compose进行编排部署即可,docker-compose.yml内容如下

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  xxl-job-executor需要修改下配置

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  用服务名替换具体的ip

  改完之后重新生成xxl-job-executor的镜像sample-executor-compose:1.2

  然后以docker-compose进行编排部署,docker-compose.yml内容如下

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  我们来看下效果

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  额,自动注册好了!你们是不是爱上我了?

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  etcd + flannel

  配置过程就不演示了,可参考:docker使用 Flannel(etcd+flannel)网络、etcd安装和所遇到的坑

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  当IP情况类似如上所示,则说明配置成功了

  我们再来看看xxl-job的自动注册

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  xxl-job-executor自动注册的IP10.10.96.2xxl-job-admin可以正常调度xxl-job-executor

  k8s

  k8s集群搭建过程不是那么简单,但也不是很复杂;搭建好的集群信息如下

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  在k8s集群部署xxl-job-adminxxl-job-executor成功后,我们来看下xxl-job的自动注册

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  如你所见,自动注册是可以正常调度的!

  我们再来看下xxl-job-adminxxl-job-executor所在节点

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

  sample-xxl-job-admin-56bb76f846-7rnmw在节点docker221

  sample-xxl-job-executor-78c4997dd4-562hw在节点docker220

  不在同一个节点哦!

总结

  1、三种方式(docker compose、etcd+flannel、k8s)选哪一种,需要结合具体情况来定

    如果想实现简单点,那就选docker compose

    如果已经使用了k8s,那就用k8s方式就行了

    实现方式肯定还有其他的,比如etcd + flannel只是属于打通内部网络的一种

  2、环境的搭建,楼主都省略了,有两点目的

    2.1 考虑到篇幅问题,如果把搭建环境的详细过程都加进来,整篇篇幅就太长了,担心你们看的累

    2.2 希望大家都去尝试搭建一下,受过伤才会刻骨铭心,楼主是深有感触

当 xxl-job 遇上 docker → 它晕了,但我不能乱!

    你们不要觉得我坏,我就是坏!!!

当 xxl-job 遇上 docker → 它晕了,但我不能乱!