当前位置: 首页 > news >正文

Docker容器的跨节点通信

安装ZooKeeper之前需要先安装Java的JDK环境。下面的步骤将部署一个单节点的ZooKeeper实例。

(1)解压缩JDK的安装介质,这里使用的版本是jdk-8u181-linux-x64.tar.gz。

$ tar -zxvf jdk-8u181-linux-x64.tar.gz -C /root/

(2)编辑文件“/root/.bash_profile”设置Java的环境变量。输入下面的内容:

JAVA_HOME=/root/jdk1.8.0_181 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH

(3)生效Java的环境变量。

$ source /root/.bash_profile

(4)解压缩ZooKeeper的安装介质,这里使用的版本是zookeeper-3.4.10.tar.gz。

$ tar -zxvf zookeeper-3.4.10.tar.gz -C /root

(5)进入ZooKeeper目录生成ZooKeeper的配置文件。

$ cd zookeeper-3.4.10 $ cp conf/zoo_sample.cfg conf/zoo.cfg

(6)启动ZooKeeper实例。

$ bin/zkServer.sh start

(7)查看ZooKeeper实例的状态,如下图所示。这时ZooKeeper是standalone状态,说明这是一个单节点的ZooKeeper实例。

有了ZooKeeper注册中心的支持,就可以进一步实现Docker容器的跨节点通信了。下表显示了部署的环境信息。

具体的操作步骤如下:
(1)在master节点上修改文件“/usr/lib/systemd/system/docker.service”的内容,将参数“ExecStart”改为下面的内容。

ExecStart=/usr/bin/dockerd-current \ --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \ --default-runtime=docker-runc \ --exec-opt native.cgroupdriver=systemd \ --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ --init-path=/usr/libexec/docker/docker-init-current \ --seccomp-profile=/etc/docker/seccomp.json \ -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \ --cluster-store zk://192.168.79.11:2181 \ --cluster-advertise 192.168.79.11:2375 \ $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY \ $REGISTRIES # 其中增加的主要参数如下。 # --cluster-store:指定ZooKeeper的地址和端口。 # --cluster-advertise:将Docker注册到ZooKeeper中的地址信息。

(2)重启master节点上的Docker服务。

$ systemctl daemon-reload $ systemctl restart docker

(3)在node1节点上修改文件“/usr/lib/systemd/system/docker.service”的内容,将参数“ExecStart”改为下面的内容。

ExecStart=/usr/bin/dockerd-current \ --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \ --default-runtime=docker-runc \ --exec-opt native.cgroupdriver=systemd \ --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \ --init-path=/usr/libexec/docker/docker-init-current \ --seccomp-profile=/etc/docker/seccomp.json \ -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \ --cluster-store zk://192.168.79.11:2181 \ --cluster-advertise 192.168.79.12:2375 \ $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $ADD_REGISTRY \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY \ $REGISTRIES

(4)重启node1节点上的Docker服务。

$ systemctl daemon-reload $ systemctl restart docker

(5)进入ZooKeeper目录,启动ZooKeeper命令行客户端。

$ cd /root/zookeeper-3.4.10 $ bin/zkCli.sh

(6)查看master和node1在ZooKeeper中的注册信息,如下图所示。

(7)在任意节点上创建overlay网络,例如在master上执行下面的语句。

$ docker network create -d overlay my_multi_hosts # 其中的参数-d 用于指定创建网络的类型,这里指定的是overlay。 # 在node1节点上此时会自动同步新创建的网络my_multi_hosts。

(8)在master或者node1上查看Docker的网络信息,如下图所示。这时可以看到新创建的网络“my_multi_hosts”。

(9)在master节点上,使用my_multi_hosts的overlay网络启动一个容器,并确定容器的IP地址,如下图所示。从图中可以看成box1的IP地址是“10.0.0.2”。

$ docker run -it --net=my_multi_hosts --name box1 busybox $ ifconfig eth0

(10)在node1节点上,使用my_multi_hosts的overlay网络启动一个容器,并确定容器的IP地址,如下图所示。从图中可以看成box2的IP地址是“10.0.0.3”。

$ docker run -it --net=my_multi_hosts --name box2 busybox $ ifconfig eth0

(11)现在box1和box2既可以通过虚拟IP地址进行通信,也可以通过DNS Server进行通信,如下图所示。

(12)使用ZooKeeper的图形化工具ZooInspector登录ZooKeeper。这时就可以完整看到Overlay网络在ZooKeeper中的注册信息,如下图所示。

http://www.jsqmd.com/news/1106841/

相关文章:

  • Linux基础文件与目录实操学习笔记
  • 塞尔达传说:旷野之息存档编辑器终极指南 - 5分钟掌握海拉鲁世界修改秘籍
  • 云手机技术详解:原理、自动化 API 实战代码与商用选型指南
  • 说明Svcb到外部服务的通信被打通了!
  • 【毕业设计】基于 SpringBoot 的学生日常表现评分登记管理系统的设计与实现 基于 SpringBoot 的中小学行为规范考核管理系统(源码+文档+远程调试,全bao定制等)
  • 返回主页I WOULD NEVER DIE FOR MY BELIEFS BECAUSE I MIGHT BE WRONG
  • 机器学习模型生产就绪:从Notebook到高可用服务的系统化实践
  • 临床AI风险分层模型:从电子病历挖掘生存期预测信号
  • 让AI读懂你的企业:云境标书AI在招投标场景下RAG与知识图谱的工程实践
  • 3分钟掌握OFD转PDF:免费开源工具Ofd2Pdf完全指南
  • Claude 实战: AI 自动帮你“加班“:/loop 完全指南
  • 职场人迈入 35 岁别再盲目内卷!提前做好职业长期布局规划,避开中年危机实现稳步增值
  • 轻量化DenseNet胸片肺炎AI模型临床部署实践
  • WaveTools鸣潮工具箱:免费解锁游戏帧率与抽卡分析的终极指南
  • ISP算法工程师面试--3A之AE篇
  • AI工程师简历与作品集构建全攻略
  • 微信聊天记录备份:数字记忆的守护者与数据自主权的思考
  • 【CTF 竞赛干货】计算机专业夺旗赛全流程攻略,新手入门学习、赛场解题实战技巧,附赠工具包与完整赛事汇总表
  • 陕西市场靠谱的电瓶观光车制造商找哪家
  • 大模型量化-rr
  • MES如何对接PLC?从OPC UA、Modbus到MQTT,一文讲透设备数据采集架构(附系统架构图)
  • 自动化Web性能测试:从核心指标到CI/CD实践
  • 拍卖系统架构拆解:从用户端到竞价引擎需要哪些核心功能?
  • 国内可用电商AI作图工具技术横评与选型方案:从实测数据到自动化工作流
  • 现在,我们可以通过ILDASM工具(一款查看程序集IL代码的软件,在Microsoft SDKs目录中的子目录中)来查看该程序集的元数据表和Main方法中间码。
  • 技术Leader备考PMP:从交付实践到方法论的4个关键转换
  • 慈溪珠宝定制哪家靠谱
  • Java毕设项目:基于 SpringBoot 的医药器械库存与销售管控系统的设计与实现 基于 SpringBoot 的智慧医疗用品电商销售系统 (源码+文档,讲解、调试运行,定制等)
  • 打爆散度、旋度、梯度的小狗头
  • lru记录的是对象最后一次被命令程序访问的时间,占据的比特数不同的版本有所不同(如4.0版本占24比特,2.6版本占22比特)。