开心一刻

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

  过了一阵儿,外卖到了

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

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

  我:是你么?

  妹纸愣了下:嗯!

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

  我俩的电话同时响了

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

  尴尬了,取错外卖了

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

  我:呵呵,你的妹纸不错

  他:呵呵,你也是

前情回顾

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

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

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

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

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

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

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

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

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

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

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

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

自动注册

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

  docker compose

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

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

  用 服务名 替换具体的ip

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

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

  我们来看下效果

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

  etcd + flannel

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

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

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

   xxl-job-executor 自动注册的IP 10.10.96.2 , xxl-job-admin 可以正常调度 xxl-job-executor

  k8s

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

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

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

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

   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 → 它晕了,但我不能乱!的更多相关文章

  1. .NET遇上Docker - 使用Docker Compose组织Ngnix和.NETCore运行

    本文工具准备: Docker for Windows Visual Studio 2015 与 Visual Studio Tools for Docker 或 Visual Studio 2017 ...

  2. .NET遇上Docker - Harbor的安装与基本使用

    Harbor是一个开源企业级Docker注册中心,可以用于搭建私有的Docker Image仓库.可以实现权限控制等. 安装Harbor 首先,需要安装Docker和Docker Compose,参考 ...

  3. .NET遇上Docker - Docker集成Cron定时运行.NETCore(ConsoleApp)程序.md

    配置项目的Docker支持 对于VS中Docker的配置,依旧重复一些废话. 给项目添加Docker支持,VS2015可以直接使用Docker for VS插件,VS2017在安装时选择容器支持.VS ...

  4. 当DOCKER遇上ESXI

    特别是你要为DOCKER窗口设置静态IP,且和公司局域网打成一片的时候, 苦逼的测试就会开始,我差不多前前后后测试了四五天,一百多个容器报废. NETNS,NSENTER,PIPWORK,各种镜像合下 ...

  5. LoadRunner - 当DiscuzNT遇上了Loadrunner(中) (转发)

    当DiscuzNT遇上了Loadrunner(中) 在上文中,介绍了如果录制脚本和设置脚本执行次数.如果经过调试脚本能够正常工作的话,就可以设置并发用户数并进行压力测试了. 首先我们通过脚本编辑界面上 ...

  6. 前端遇上Go: 静态资源增量更新的新实践

    前端遇上Go: 静态资源增量更新的新实践https://mp.weixin.qq.com/s/hCqQW1F8FngPPGZAisAWUg 前端遇上Go: 静态资源增量更新的新实践 原创: 洋河 美团 ...

  7. 微服务中台落地 中台误区 当中台遇上DDD,我们该如何设计微服务

    小结: 1. 微服务中台不是 /1堆砌技术组件就是中台 /2拥有服务治理就是中台 /3增加部分业务功能就是中台 /4Cloud Native 就是中台 https://mp.weixin.qq.com ...

  8. MVC遇上bootstrap后的ajax表单模型验证

    MVC遇上bootstrap后的ajax表单验证 使用bootstrap后他由他自带的样式has-error,想要使用它就会比较麻烦,往常使用jqueyr.validate的话只有使用他自己的样式了, ...

  9. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...

  10. 敏捷遇上UML—软创基地马年大会(广州站 2014-4-19)

        我们将在广州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧. 时间:2 ...

随机推荐

  1. k8s中yaml文件常见参数含义

    apiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本 kind: Deployment #该配置的类型,我们使用的 ...

  2. Docker Compose的安装及命令补全

    安装Compose Compose的安装有多种方式,例如通过shell安装.通过pip安装.以及将compose作为容器安装等等.本文讲解通过shell安装的方式.其他安装方式如有兴趣,可以查看Doc ...

  3. 驱动开发:通过Async反向与内核通信

    在前几篇文章中给大家具体解释了驱动与应用层之间正向通信的一些经典案例,本章将继续学习驱动通信,不过这次我们学习的是通过运用Async异步模式实现的反向通信,反向通信机制在开发中时常被用到,例如一个杀毒 ...

  4. Codeforces Round #442 (Div. 2) B. Nikita and string

    题意:求最长可以分a b a为三部分子串,a b a可以为空 思路在代码里 1 #include<cstdio> 2 #include<iostream> 3 #include ...

  5. 动态编译库 Natasha 5.0 兼容版本发布

    Natasha 5.0 版本已于 2022/10/10 日发布, 此次大版本更迭带来了兼容性支持, 目前 Natasha 可以兼容 standard2.0 及 coreapp3.1 以上版本. 下载使 ...

  6. Js实现一键复制小功能

    function copyToClipboard(textToCopy) { // navigator clipboard 需要https等安全上下文 if (navigator.clipboard ...

  7. (Java初学篇)IDEA项目新建流程和软件配置优化以及怎么彻底删除项目

    相信很多小伙伴们在初学 Java 时都会出现这样的情况,就是在网上一顿搜索加捣鼓终于把 JDK 和IDEA 这两款软件安装配置好,但是发现面对这个陌生的软件此时却无从下手,那么接下来我就给大家简单地介 ...

  8. java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 增样将jar包导入

    2021-9-30-17:28 遇到的一个bug.以前遇到过,这次又遇到.就离谱,结果还忘记怎样解决了.这捣鼓一下,那捣鼓一下,又给搞好了.为了记录这次bug,又试图还原bug. 1.解决办法file ...

  9. git 多个commit 如何合并

    git 多个commit 如何合并 本篇主要介绍一下 git 中多个commit 如何合并, 因为commit 太多 会导致提交记录混乱, 所以有时候会把多个commit 合并成一个 保持提交记录干净 ...

  10. 谷歌拼音输入法扩展API开发指南

    为了帮助开发者在谷歌拼音输入法的基本输入功能基础上,开发和定义更丰富的扩展输入功能,谷歌拼音输入法提供了以Lua脚本编程语言为基础的输入法扩展API.利用输入法扩展API,开发者可以编写自定义的输入功 ...