docker swarm 跨网络连接

一、如何访问service

    1.查看网络配置:

 docker inspect 3efaf04300

     

ip地址为172.17.0.2,实际上连接到的是docker默认bridge网络。

可以直接在swarm1 上访问网络

     

这样的访问仅仅是在容器层面访问,服务器没有暴露给外部网络,只能在docker主机上访问。

二、从外部访问service

 要将service暴露在外部,方法很简单

docker  service update --publish-add 8080:80 web_server
docker  servuce create --name web_server --publish 8080:80 --replicas=2 httpd

容器在端口上监听http请求 --publish-add 8080:80 将容器的80映射到主机的8080端口,这样外部网络就可以访问service了

   

三、routing mesh

 当我们访问任何节点的8080端口时,swarm内部的load balancer 会将请求转发给web_server其中的一个副本。这就是routing mesh的作用。所以,无论访问那个节点,及时该节点上没有运行service的副本,最终都能访问到service。

  我们还可以配置一个外部load balancer 将请求路由到swarm service。 比如配置HAProxy,将请求分发到各个节点的8080端口。

  1.ingress网络

当我们应用--publish--add 8080:80时 swarm会从新配置 service,我们看看容器都发生了哪些重要变化。

容器的网络与--pubilish-add之前不一样了,而且有两块网卡,每块网卡连接不同的docker网络。

 实际上:

      eth33连接的是一个overlay类型网络名字为ingress 其作用让运行在不同主机上的容器可以互相通信

      eth1 连接的是一个bridge类型的网络,名字为docker_gwbridge,其作用是让容器能够访问到外网。

      

   ingress网络是 swarm创建时docker为自动我们创建的,swarm中的每个node都能使用ingress。

四、service之间如何通信。

       微服务架构的应用由若干service组成。比如有运行httpd的web前端。有提供缓存的memcached,有存放数据的mysql,每一层都是swarm的一个service,每个service运行了若干容器。

    1.服务发现

        一种实现办法是将所有service都publish出去,然后通过routing mesh访问,但明显的缺点是把memcache和mysql也暴露到外网,增加了安全隐患。

    如果不publish,那么swarm就要提供了一种机制,能够:

          1.让service通过简单的方法访问到其他的service。

          2.当service副本的ip发生变化时,不会影响到访问该service的其他service。

          3.当service的副本数发生变化时,不会影响访问该service的其他service

2.创建overlay网络

     要使用服务发现,需要相互通信的service必须属于用一个overlay网络,所以我们先得创建一个新的overlay网络

docker network create  --driver  overlay  myapp

3.部署service到overlay

      ①、 部署一个web服务,并将其挂载到新创建的overlay网络

docker service create --name my_web --replicas=3 --network myapp 192.174.1.43:5000/httpd

    

  ②、部署一个服务用于测试,挂载到同一个overlay网络 

docker service create --name util --network myapp  busybox sleep 10000000

 sleep 10000000的作用是保持busybox容器处于运行状态,我们才能够进入容器访问service my_web

4.验证

  可以查看到util在的节点是node2

 

 如果ping服务名ping不同 但是ping容器名、IP地址 vip的ip都可以通的情况是因为dns导致。

我们可以看到my_web的ip为10.0.2.2 这是my_web service的vip swarm将会对vip访问负载均衡到每一个副本。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值