跨主机Docker容器通信的学习

主机,docker,容器,通信,学习 · 浏览次数 : 221

小编点评

## Building a Redis Cluster Using Docker **Step 1: Download and Install Consul** * Download the Consul binary for your system: `wget https://releases.hashicorp.com/consul/1.13.3/consul_1.13.3_linux_amd64.zipunzip consul_1.13.3_linux_amd64.zipscp consul /usr/bin/` **Step 2: Run Consul in Docker on Two Nodes** * On two different machines, run Consul in Docker using the following commands: * `docker run -d --network host -h consul01 --name=consul01 --restart=always -e CONSUL_BIND_INTERFACE=ens192 harbor.xxxx.online/xxxx/consul` * `docker run -d --network host -h consul02 --name=consul02 --restart=always -e CONSUL_BIND_INTERFACE=ens192 harbor.xxxx.online/xxxx/consul` **Step 3: Configure Docker and Consul Services** * On the first machine, modify the `docker.service` file to configure the cluster: * `ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store consul://10.110.139.194:8500 --cluster-advertise ens192:2376` * `--iptables=false \\--live-restore=false` * On the second machine, modify the `docker.service` file to configure the cluster: * `ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store consul://10.110.139.194:8500 --cluster-advertise ens192:2376` **Step 4: Create the Overlay Network Card** * Run the following command on the first machine: * `docker network create -d overlay multi_host基于Kylin银河麒麟的镜像进行地址连通性检查` **Step 5: Add Nodes to the Cluster** * On another machine, run the following command to join the cluster: * `consul join 10.110.139.94` **Step 6: Verify the Cluster is Up and Running** * On both nodes, run the following command to check the cluster status: * `consul operator raft list-peers` **Step 7: Test Redis Cluster Connectivity** * On both nodes, run the following commands to check if they can ping each other: * `docker run -it --net=multi_host harbor.xxxx.online/xxxx/redis /bin/bash` * `ip addr` * `ping 10.110.139.194`

正文

背景

骨折在家找自己的人比较少.
又因为出不去也没法做运动,就不如将之前没学习深入的地方学习下
先是进行Docker 搭建 redis cluster的处理.
当时发现必须使用 --net=host进行.
本来想尝试进行 overlay的网咯进行搭建
当然有一个目的是验证 overlay的性能损耗
结果使用了很多招都没有成功
但是想着至少可以记录下 跨主机 容器通信. 

第一步学习consul
https://www.jb51.net/article/237838.htm

下载与安装

wget https://releases.hashicorp.com/consul/1.13.3/consul_1.13.3_linux_amd64.zip
unzip consul_1.13.3_linux_amd64.zip
scp consul /usr/bin/
第一台机器执行
docker run -d --network host -h consul01 --name=consul01  --restart=always -e CONSUL_BIND_INTERFACE=ens192  harbor.xxxx.online/xxxx/consul
第台机器执行
docker run -d --network host -h consul02 --name=consul02  --restart=always -e CONSUL_BIND_INTERFACE=ens192  harbor.xxxx.online/xxxx/consul

修改 Docker 与consul通信

  • 第一台机器的修改
  • 注意需要修改 docker 的 /usr/lib/systemd/system/docker.service 配置文件
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store consul://10.110.139.194:8500 --cluster-advertise ens192:2376
  • 另外一台机器的修改
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --cluster-store consul://10.110.139.194:8500 --cluster-advertise ens192:2376
  • 注意 还需要增加几个条件
--iptables=false \
--live-restore=false \
  • 注意需要重启
    systemctl daemon-reload && systemctl restart docker

创建consul的简单集群

主要命令如下:
consul01 节点不需要做任何操作可以进行查看
consul operator  raft list-peers
另外一个机器执行命令就可以加入
但是我搞不明白谁是主谁是从.
consul join 10.110.139.94
然后再查看一下 list 就有了. 
 consul operator  raft list-peers
Node      ID                                    Address              State     Voter  RaftProtocol
consul02  2edd71b2-85dc-6c25-0000-5af80e10318e  10.110.139.196:8300  leader    true   3
consul01  59e32106-916c-bafc-7d5d-19f19679ac92  10.110.139.194:8300  follower  false  3

创建overlay的网卡

docker network create -d overlay multi_host

基于Kylin银河麒麟的镜像进行地址连通性检查

分别再两台机器上面执行命令:
docker run -it --net=multi_host harbor.xxxx.online/xxxx/kylinv10sp2:withFonts /bin/bash
然后执行
ip addr
然后可以验证可以互相ping同.

Redis Cluster的验证

我用了很多招,发现不行...

与跨主机Docker容器通信的学习相似的内容:

跨主机Docker容器通信的学习

背景 骨折在家找自己的人比较少. 又因为出不去也没法做运动,就不如将之前没学习深入的地方学习下 先是进行Docker 搭建 redis cluster的处理. 当时发现必须使用 --net=host进行. 本来想尝试进行 overlay的网咯进行搭建 当然有一个目的是验证 overlay的性能损耗

[转帖]如何使用Calico实现跨主机Docker网络通信

https://blog.csdn.net/sanhewuyang/article/details/122004156 写在前面 学习K8s,学到这里,整理记忆,本文用于理解K8s网络中Calico网路方案的原理优缺点内容包括:常见的容器跨主机通信方案简介Caliao实现Container跨主机通信

[转帖]Docker容器跨主机通信overlay网络的解决方案

https://www.jb51.net/article/237838.htm 一、Docker主机间容器通信的解决方案 Docker网络驱动 Overlay: 基于VXLAN封装实现Docker原生Overlay网络 Macvlan: Docker主机网卡接口逻辑上分为多个子接口,每个子接口标识一

[转帖]docker容器跨主机网络overlay

https://www.cnblogs.com/machangwei-8/p/15757120.html 目录 拉取镜像,运行容器 浏览器上访问Consul 修改host1,host2的docker daemon配置文件 创建网络 验证 在overlay中运行容器 运行 查看一下这两个网卡 查看生成

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

[转帖]Flannel 环境搭建与分析

https://switch-router.gitee.io/blog/flanenl/ 介绍 Flannel是CoreOS团队针对Kubernates设计的跨主机容器网络解决方案, 它可以使集群中不同节点上运行的docker容器都具有全集群唯一的虚拟IP地址。 举个例子,在一个由3台主机节点组成系

[转帖]macvlan 网络模式实现跨主机 Docker 通信

https://www.jianshu.com/p/cc481870236b macvlan 网络模式概念 macvlan 本身是 linux 内核的模块,本质上是一种网卡虚拟化的技术,其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的 MAC 地址在数据链路层进行网络数据的转发。 一块网卡上

体验.NET与文件存储服务MinIO

对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势: 跨服务器可用 兼容Amazon S3 API 横向扩容 高可用 支持加密 MinIO就是一个高性能的文件服务,我们使用.NET来操作一下。 部署MinIO 最简单的办法,就是在Docker上运行Mi

k8s容器互联-flannel host-gw原理篇

k8s容器互联-flannel host-gw原理篇 容器系列文章 容器系列视频 简析host-gw 前面分析了flannel vxlan模式进行容器跨主机通信的原理,但是vxlan模式需要对数据包进行额外的封包解包处理,带来的开销较大。 所以flannel提供了另外一种纯3层转发的通信模式,叫做h

【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连访问失败

问题描述 跨区域无法访问Azure Redis服务, Redis 启用了Network并设置在一个VNET中,现在客户端部署在另一个区域数据中心中,两个数据中心区域使用VNET Peer(对等互连)访问。但是为什么不能访问Redis服务呢? 问题解答 根据Azure Redis的官方介绍,因为Red