Swarm集群使用overlay实现容器负载均衡

avatar 2023年2月27日18:31:47 评论 412 次浏览

服务挺多的,但是业务量没有那么大,所以使用kubernetes不太适合,原本环境已经使用docker跑服务了,所以想着是否可以使用swarm集群管理docker,然后通过调用api的方式做容器的自动伸缩和node节点的自动伸缩,但是目前遇到的第一个问题就是服务的负载均衡。举例,我有一个服务,服务中跑了很多个容器,容器可能在一台机器上也可能在多台机器上,是访问任何一台都能成功访问即可。搭建swarm可以参考:https://www.wulaoer.org/?p=942

 [root@master1 ~]# docker node ls
 ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
 06lm9u7684nbe4mprdoby6rc0    node1     Ready   Active                //172.16.10.51
 ficd4pijxut7rpvuodnhb3pdc    node2     Ready   Active                //172.16.10.52
 wc2k7v17opfwty9ozlzhzm5n2 *  master1   Ready   Active        Leader   //172.16.10.50

我的swarm集群有三台机器,已经标注了一下IP地址。我在Leader机器上创建一个网络,然后在创建一个服务并加入到我创建的网络中。

 [root@master1 ~]# docker network create -d overlay wulaoer_net
 oxph2cjdiya4dyfb521z6l1y5
 [root@master1 ~]# docker service create --replicas 1 --network wulaoer_net --name wulaoer_web -p 80:80 nginx
 65wav6u4v7m46s4po7lm49f4i
 [root@master1 ~]# docker service ls
 ID            NAME         MODE        REPLICAS  IMAGE
 65wav6u4v7m4  wulaoer_web  replicated  1/1       nginx:latest

测试,在本地访问三个节点的ip是否能够请求nginx的页面,刚创建好会有个别访问不了的情况,不过不用担心,这个是swarm在接入网络,稍等即可。

 [root@master1 ~]#  curl -I -m 10 -o /dev/null -s -w %{http_code}  http://172.16.10.50
 200[root@master1 ~]#  curl -I -m 10 -o /dev/null -s -w %{http_code}  http://172.16.10.51
 200[root@master1 ~]#  curl -I -m 10 -o /dev/null -s -w %{http_code}  http://172.16.10.52
 200[root@master1 ~]#

三个节点都可以正常访问,这样在实际环境中,只需要在服务前加一个反向代理即可。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: