DockerWeave容器跨机通信网络部署

news2024/10/6 13:43:59

Docker Weave网络部署

Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加密传输。
Weave Net创建一个连接多个Docker主机的虚拟网络,类似于一个以太网交换机,所有的容器都连接到这上面,互相通信。
Weave Net由多个peer组成,Weave路由器运行不同Docker主机上,是一个用户空间的进程;每个peer都有一个名称,重启保持不变。它们通过TCP连接彼此,建立后交换拓扑信息。
Weave Net可以在具有编号拓扑的部分连接的网络中路由数据包。例如,在下面网络中,peer1直接连接2和3,但是如果1需要发送数据包到4和5,则必须先将其发送到peer3。

WeaveNet中的”fastdatapath”使用Linux内核的OpenvSwichdatapath模块。该模块使WeaveNet路由器能够告知内核如何处理数据包。OpenvSwichdatapath和VXLAN功能在Linux内核版本3.12+才支持,如果内核不支持,则WeaveNet使用”usermode”数据包路径。WeaveNet会自动选择两台主机之间最快的路径传输数据,提供近原生吞吐量和延迟。

docker weave网络是将多个宿主机上的docker应用容器进行建立连接相互访问。
Weave Net 路由器相互建立 TCP 连接,通过该连接执行协议握手并随后交换 拓扑信息。如果这样配置,这些连接将被加密。对等点还建立 UDP“连接”,可能是加密的,它携带封装的网络数据包。这些“连接”是双工的,可以穿越防火墙。

文章底部扫码,免费领取Linux云计算资料大礼包!

部署

使用前提:
1.确保Linux内核版本3.8+,Docker1.10+。
2.节点之间如果有防火墙时,必须彼此放行TCP 6783和UDP 6783/6784端口,这是Weave控制和数据端口。
3.主机名不能相同,通过主机名标识子网。
复制代码

安装Weave

(两个节点均执行)

机器一   es1  10.3.148.214
机器二   es2  10.3.148.213
复制代码
cd /usr/local
git clone https://github.com/weaveworks/weave
加速地址: https://ghproxy.com/https://github.com/weaveworks/weave.git
cd /usr/local/weave/
cp weave /usr/local/bin/
复制代码

文章底部扫码,免费领取Linux云计算资料大礼包!

启动并于其他主机连接

[root@es1 local]# weave launch 10.3.148.213
ec5c1688ec0cb03927faad019271d26dbae91ba5c71a4f2a54fa808329580341

[root@es2 ~]# weave launch 10.3.148.214
0ba9bc8a550a3b711aec7b6f64ae8568eabf27ff81fea730648be3ad355cb7c8
复制代码

注意:es1主机如果和es2之间有防火墙,您必须允许流量通过 TCP 6783 和 UDP 6783/6784,它们是 Weave 的控制和数据端口。

查看docker网络

新增了一个weave网络驱动

[root@es1 ~]# docker network ls
NETWORK ID     NAME      DRIVER      SCOPE
984f097b68fa   bridge    bridge      local
7762f55e7b2a   host      host        local
b4bf8bcd995e   none      null        local
e6e54df84186   weave     weavemesh   local

复制代码

查看 weave docker容器

[root@es1 ~]# docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED              STATUS              PORTS     NAMES
ec5c1688ec0c   weaveworks/weave:latest   "/home/weave/weaver …"   About a minute ago   Up About a minute             weave
复制代码

查看weave建立连接信息

weave status connections

[root@es1 ~]# weave status connections
<- 10.3.148.213:39903    established fastdp 2e:fa:0d:f9:26:ea(es2) mtu=1376
[root@es2 ~]# weave status connections
-> 10.3.148.214:6783     established fastdp 52:b6:e3:2e:57:2d(es1) mtu=1376
复制代码

文章底部扫码,免费领取Linux云计算资料大礼包!

docker容器使用加入weave网络

第一种方法指定网络驱动

[root@es2 ~]# docker run -itd --name test3 --net=weave busybox
1bb0f311a56e88c0c8b25f496956ebc5dd7b11aeef695e3f40600505207cfe75
[root@es2 ~]# docker attach test3
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
34: ethwe0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1376 qdisc noqueue 
    link/ether 12:78:b6:ab:0e:9c brd ff:ff:ff:ff:ff:ff
    inet 10.32.0.2/12 brd 10.47.255.255 scope global ethwe0
       valid_lft forever preferred_lft forever
36: eth0@if37: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
       valid_lft forever preferred_lft forever

复制代码

image-20230427213248647

跨级通信测试

[root@es1 ~]# docker run -it --name test1 --net=weave busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:02  
          inet addr:172.18.0.2  Bcast:172.18.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:656 (656.0 B)  TX bytes:0 (0.0 B)

ethwe0    Link encap:Ethernet  HWaddr C6:9C:5A:3C:AB:A6  
          inet addr:10.40.0.0  Bcast:10.47.255.255  Mask:255.240.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1376  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1440 (1.4 KiB)  TX bytes:700 (700.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # ping 10.32.0.2
PING 10.32.0.2 (10.32.0.2): 56 data bytes
64 bytes from 10.32.0.2: seq=0 ttl=64 time=0.811 ms
64 bytes from 10.32.0.2: seq=1 ttl=64 time=1.045 ms
^C
--- 10.32.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.811/0.928/1.045 ms
复制代码

文章底部扫码,免费领取Linux云计算资料大礼包!

第二种方法使用docker api:

weave env的结果就是连接docker的api,运行往export设置完环境变量,后续启动的容器都会使用这个api。

[root@es1 ~]# weave env
export DOCKER_HOST=unix:///var/run/weave/weave.sock ORIG_DOCKER_HOST=
[root@es1 ~]# eval $(weave env)
加入环境变量后可以直接启动docker,默认使用weave网络
# env
DOCKER_HOST=unix:///var/run/weave/weave.sock
ORIG_DOCKER_HOST=

[root@es1 ~]# docker run -it --name test2 busybox
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:586 (586.0 B)  TX bytes:0 (0.0 B)

ethwe     Link encap:Ethernet  HWaddr D6:B1:6F:7A:39:CD  
          inet addr:10.40.0.1  Bcast:10.47.255.255  Mask:255.240.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1376  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:488 (488.0 B)  TX bytes:42 (42.0 B)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # ping 10.32.0.1
PING 10.32.0.1 (10.32.0.1): 56 data bytes
64 bytes from 10.32.0.1: seq=0 ttl=64 time=2.321 ms
64 bytes from 10.32.0.1: seq=1 ttl=64 time=1.632 ms
^C
--- 10.32.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 1.632/1.976/2.321 ms

 

 如果上面的文章看着比较枯燥,点击下面的链接直接观看:
千锋教育新版Docker教程, 从零学会Docker容器化核心技术,通俗易懂无废话

 也可以扫码直接观看视频哦!绝对的干货满满,更多精彩视频B站搜索“千锋教育” 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数组或结构体赋值时memcpy与直接赋值的效率比较

先上结论&#xff1a; 二者不一定谁快通常情况下&#xff0c;数组维度越大&#xff0c;使用memcpy效率更高数组维度越大&#xff0c;直接赋值耗时主体是循环耗时 Note&#xff1a; “等号赋值”被编译器翻译成一连串的MOV指令&#xff0c;而memcpy则是一个循环。“等号赋值”比…

05mysql---函数

目录 1:日期函数 2:字符函数 3:数值函数 4:流程函数 1:日期函数 select 函数(参数) 函数功能举例curdate()返回当前日期2023-05-17curtime()返回当前时间14:44:33now()返回当前日期和时间2023-05-17 14:44:33year(date)获取指定date的年份month(date)获取指定date的月份day…

【简介】限流

限流 为什么要限流限流算法单机限流计数器算法滑动窗口算法漏桶算法令牌桶算法 分布式限流配额算法 限流策略限流位置 为什么要限流 作为有追求的程序员&#xff0c;我们都希望自己的系统跑的飞快&#xff0c;但是速度再快&#xff0c;系统处理请求耗时也不可能为0&#xff0c…

线程池下载4K壁纸

学习记录 学习记录 一、目标 aHR0cHM6Ly9waWMubmV0Ymlhbi5jb20vDQo 拿到每张图片的href 和 标题&#xff0c;跳转到详情页进行图片下载地址的提取并请求实现图片本地下载 二、代码实现 """ CSDN: 抄代码抄错的小牛马 mailbox&#xff1a;yxhlhm2002163.com…

计算机毕业论文内容参考|基于java的房产营销系统的设计与实现

文章目录 导文摘要前言绪论课题背景课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望本文总结后续工作展望导文 计算机毕业论文内容参考|基于java的房产营销系统的设计与实现 摘要 当今社会,随着经济的快速发展和人们对生活品质的不断提高,房地产行业正在面临…

Java --- docker安装redis

目录 一、拉取redis容器镜像 二、新建目录 三、拷贝redis.conf文件模板进/app/redis目录 四、修改redis.conf文件 五、启动redis镜像服务 一、拉取redis容器镜像 docker pull redis:7.0.0 二、新建目录 mkdir -p /app/redis 三、拷贝redis.conf文件模板进/app/redis目录 cp …

Java面试(4)面向对象

文章目录 概念1. 面向对象和面向过程的区别2. 面向对象三大特征 类1. 接口和抽象类有什么共同点和区别&#xff1f;2. 深拷贝和浅拷贝区别了解吗&#xff1f;什么是引用拷贝&#xff1f;3. 内部类1. 内部类2. 内部类的优点3. 内部类有哪些应用场景4. 局部内部类和匿名内部类访问…

python 3.8 + tensorflow 2.4.0 + cuda11.0 的问题

版本匹配 &#x1f517;从源代码构建 | TensorFlow 报错&#xff1a;Could not load dynamic library ‘cupti64_110.dll’; dlerror: cupti64_110.dll not found 是因为我电脑中的 cuda 版本以前是 10&#xff0c;现在是 11.4 &#xff0c;所以需要安装对应版本的 cudatoolk…

基于粒子群算法的微网经济优化调度——附Matalb代码

目录 摘要&#xff1a; 代码主要内容&#xff1a; 研究背景&#xff1a; 微电网模型&#xff1a; 粒子群算法&#xff1a; 运行结果&#xff1a; Matlab代码分享&#xff1a; 摘要&#xff1a; 提出了一种经济与环保相协调的微电网优化调度模型&#xff0c;针对光伏电池…

SAP入门到放弃系列之需求管理的基本要素

需求管理目标&#xff1a; 一般而言&#xff0c;生产计划&#xff08;PP&#xff09;的总体目标&#xff0c;特别是需求管理的总体目标是通过减少以下内容来更好地为客户服务&#xff1a; 补货提前期存货成本 需求管理的要素&#xff1a; 需求管理工作的主要要素广义上可分…

2013蓝桥杯真题省赛翻硬币 C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果…

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区&#xff0c;游戏内容则是社区内受众较为广泛的存在&#xff0c;而星铁作为面向年轻群体的回合制游戏&#xff0c;自然是赢得B站核心用户群体的青睐。 4月26日&#xff0c;暌违已久的手游《崩坏&#xff1a;星穹铁道》&#xff08;后文简称…

【Java】平时开发中遇到的问题你是否遇到过?

文章目录 前言一、六类典型空指针问题1.1包装类型的空指针问题1.2 级联调用的空指针问题1.3 Equals方法左边的空指针问题1.4 ConcurrentHashMap 这样的容器不支持 Key&#xff0c;Value 为 null。1.5 集合&#xff0c;数组直接获取元素1.6 对象直接获取属性 二、日期YYYY格式设…

Linux和UNIX的关系及区别(详解)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中&#xff0c;UNIX 诞生于 20 世纪 60 年代末&#xff0c;Windows 诞生于 20 世纪 80 年代中期&#xff0c;Linux 诞生于 20 世纪 90 年代初&#xff0c;可以说 UNIX 是操作系统中的"老大哥&…

Fortinet FortiNAC RCE漏洞复现(CVE-2022-39952)

0x01 产品简介 FortiNAC(Network Access Control) 是Fortinet的一种零信任网络访问控制解决方案&#xff0c;可增强用户对企业网络上的物联网 (IoT) 设备的监控。NAC 是零信任网络访问安全模型的重要组成部分&#xff0c;在该模型中&#xff0c;IT 团队可以轻松了解正在访问网络…

低代码让开发变得不再复杂

文章目录 前言低代码 VS 传统开发为什么选择IVX&#xff1f;平台比对总结 前言 在数字化的时代背景下&#xff0c;企业都面临巨大的数字化转型的挑战。为了应对这样的挑战&#xff0c;企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生&#xff0c;成为了…

面向对象编程与面向过程编程的区别

面向过程&#xff1a; 以坦克飞机大战为例&#xff0c;如果按面向过程的思路去书写代码&#xff0c;则需要按如下顺序进行编码&#xff1a; 游戏初始化确定一台坦克的位置绘制坦克确定多架飞机的位置绘制飞机为坦克设置上下左右四个转向为坦克添加按下键盘k键发射子弹为所有飞…

ATFX国际:国内成品油价格下调,国际油价仍维持震荡态势

ATFX国际&#xff1a;5月16日&#xff0c;发改委发布成品油价格下调通知&#xff0c;其中提到&#xff1a;国内汽、柴油价格每吨分别降低380元和365元。以上海地区为例&#xff0c;价格下调后&#xff0c;每吨汽油的售价为9255元&#xff0c;每吨柴油的价格为8225元。经计算&am…

【容器适配器的认识与模拟】

目录&#xff1a; 前言一、引入二、容器适配器&#xff08;一&#xff09;stackdequestack模拟实现 &#xff08;二&#xff09;queuequeue模拟实现为什么栈和队列要使用deque &#xff08;三&#xff09;priority_queuepriority_queue模拟实现 总结 前言 打怪升级&#xff1a…

小程序获取用户信息实现一键登录

文章目录 旧版获取用户信息实现登录流程login页面代码个人中心页面代码全局app.vue代码下面是小程序获取用户信息最新调整的方式 温馨提示 &#xff1a;以下小程序登录方式只适用于2.27.1版本库以下使用 详情请看微信官方文档调整 旧版获取用户信息实现登录流程 由于我是在hbu…