系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

详解Docker 跨服务器通讯 Ambassador原理

时间:2020-03-09来源:电脑系统城作者:电脑系统城

 

先看拓扑图:Ambassador 主要用来解决跨服务器通讯,因为同服务器通讯相对简单,直接用--link参数,或者用bridge网络即可。

服务器B的Docker2:centos想要访问服务器A的Docker1:nginx,但是不知道对方的端口和ip,这时就需要通过Ambassador来解决。(Ambassador后续版本应该会被抛弃,overlay网络应该是趋势)

1、先建立Docker1:nginx

  docker run -d --name nginx1   nginx 

2、建立Ambassador 1

  docker run -d  --name a1 --link nginx1:nginx1 -p 8000:80  svendowideit/ambassador

3、建立Ambassador 2

  docker run -d  --name a2  --expose 8001  -e   A2__PORT_8001_TCP=tcp://172.16.16.201:8000    svendowideit/ambassador 

  (暴露8001端口给centos,然后将8001端口的流量转到服务器1的8000端口,即间接访问了Ambassador1)

4、建立Docker2:centos

  docker run -it  --name centos1 --link a2:a2 centos /bin/bash

至此所有的步骤完成。

那么此时centos如何访问nginx呢?

  curl a2:8001 访问ambassador2的8001端口即可,不需要知道服务器A的任何信息。(截图中用a200,由于之前已经弄好环境,不想改了)

具体的流量途径如下:

1、centos访问Ambassador2的时候将直接访问它的8001端口。

2、Ambassador2 中参数 -e   A200__PORT_8001_TCP=tcp://172.16.16.201:8000    将访问8001端口的流量重新转到服务器A的8000端口。

    A2__PORT_8001_TCP=tcp://172.16.16.201:8000  其中A2你可以随便命名,为什么呢。我们进入到Ambassador2中看看原因:

    

    输入env查看环境变量,和创建时的参数一致。

    

    输入top,如图,系统只会对8001端口的流量转发到172.16.16.201:8000上,也就是服务器A的8000端口,压根不在乎会上边说的A2,原因如下:

      Ambassador Dockrfile中有如下参数:

      CMD env | grep _TCP= | sed 's/.*_PORT_\([0-9]*\)_TCP=tcp:\/\/\(.*\):\(.*\)/socat TCP4-LISTEN:\1,fork,reuseaddr TCP4:\2:\3 \&/' | sh && top

    我们按照此参数用A2__PORT_8001_TCP=tcp://172.16.16.201:8000执行sed 如下:

    

   该shell语句只是单独提取其中的8001端口和后边的ip地址部分,其他的字段全部忽略,所以,其他字段只需要按照Docker 中环境变量的格式即可。

3、Ambassador1中,-p 8000:80 参数中的80要和nginx的端口80一致,因为--link nginx1:ngxin1后,Ambassador1中的环境变量如下

    

    此时会将80端口的流量转到nginx服务器上的80端口。假设我们使用 -p 8000:81参数,那么Ambassador1中并没有对应的81端口的转发规则,当然其他服务器器也服务访问到nginx了。

  

    网上很多教程全程采用同一个端口,初学者很难理解其中的原理,在实践中会遇到很大的麻烦,我这边整体梳理一下,希望帮到大家。

 

 


每篇随笔都来自工作经验并亲自试验,确保每位读者能够接触到正确的知识。部分随笔多平台发布,谢绝转载!!!
分享到:

相关信息

  • linux 文件权限怎么解析

    常用权限linux系统内有档案有三种身份 u:拥有者 g:群组 o:其他人这些身份对于文档常用的有下面权限:r:读权限,用户可以读取文档的内容,如用cat,more查看w:写权限,用户可以编辑文档x...

    2024-07-07

  • 如何使用WPSeku找出 WordPress 安全问题?

    然而,如果我们遵循通常的 WordPress 最佳实践,这些安全问题可以避免。在本篇中,我们会向你展示如何使用 WPSeku,一个 Linux 中的 WordPress 漏洞扫描器,它可以被用来找出你安装...

    2024-07-03

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载