验证 Docker Swarm 集群的负载均衡
2023-09-27 14:25:57 时间
Docker Swarm 集群的内部会为容器的各个节点之间负责负载均衡的管理,现在我们来验证一下 Docker Swarm 的负载均衡特性。
Docker 多容器编排Swarm(六) Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
后端进阶 微信公众号「后端进阶」作者,技术博客(https://objcoding.com/)博主,Seata Committer,GitHub ID:objcoding。
Docker Swarm 集群的内部会为容器的各个节点之间负责负载均衡的管理 现在我们来验证一下 Docker Swarm 的负载均衡特性。
func main() { resp, _ : http.Get( http://myexternalip.com/raw ) defer resp.Body.Close() content, _ : ioutil.ReadAll(resp.Body) r : gin.Default() r.GET( /addr , func(c *gin.Context) { c.JSON(200, gin.H{ addr : string(content), r.Run( :8081 ) }
FROM golang:latest WORKDIR $GOPATH/src/go-gin-demo COPY . $GOPATH/src/go-gin-demo RUN go get github.com/gin-gonic/gin go build . EXPOSE 8081 ENTRYPOINT [ ./go-gin-demo ]
$ docker build -t chenghuizhang/go-gin-demo:v3 . $ docker push chenghuizhang/go-gin-demo:v3
首先初始化一个管理节点
$ docker swarm init --advertise-addr 193.xxx.61.178
这里需要说明一下 由于我的两台服务器都同于一个内网环境 所以这里需要指定外网 ip 得到以下命令
$ docker swarm join --token xxxxxxxxxxxxxxxx 193.xxx.61.178:2377
另一台服务器加入 现在得到了拥有两个节点的 swarm 集群
docker swarm
这里特别注意一下 由于是加入管理节点需要通过外网 所以docker swarm join加个地址参数
$ docker swarm join --token xxxxxxxxxxxxxxxx 193.xxx.61.178:2377 --advertise-addr 111.xxx.254.127
$ docker network create -d overlay mynet
$ docker service create -p 8081:8081 --network mynet --replicas 1 --name go-gin-demo chenghuizhang/go-gin-demo:v3
查看服务
$ docker service ps go-gin-demo
发现 go-gin-demo 部署到工作节点了 这时我们通过管理节点 ip 访问 结果如下
docker swarm
说明即使管理节点没有部署该服务 仍然是可以通过 overlay 跨主机网络进行调用的。
同时我们查看管理节点的 8081 是否有被监听
$ lsof -i:8081
docker swarm
发现 go-gin-demo 虽然没有部署到管理节点上 但其端口在其他节点上面依然被监听着 所以我们得出 整个 overlay 网络中 每个服务都可以通过任意一台集群内服务器访问。
这里需要注意一下 服务器防火墙需要开通 docker 相关的端口 这里为了方便 就把服务器的防火墙关闭了
$ systemctl stop firewalld.service # centos 7 关闭防火墙
$ docker service scale go-gin-demo 2
docker swarm
这时我们随意访问一台服务器 多访问几次 会出现返回来的是另一台服务器的地址 说明 swarm 集群具备负载均衡的特性。
Docker 多容器编排Swarm(六) Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
后端进阶 微信公众号「后端进阶」作者,技术博客(https://objcoding.com/)博主,Seata Committer,GitHub ID:objcoding。
相关文章
- Java架构师-容器化(一):服务容器化技术-Docker、Cloud Foundry
- Docker继续完善生态布局,收购云服务Tutum
- Docker镜像细节
- Docker从入门到进阶之进阶操作(5) —— 实战演练【nginx负载均衡-轮询】
- 容器学习笔记之CentOS7安装Docker(安装指定版本的Docker,加速,卸载)
- 【Docker】Dockerfile 解析器指令
- docker 修改容器时间 和时区 的方法 (linux也能用)
- docker in all
- 学习 Docker 如何查看镜像信息?
- Docker Workflow(四):服务发现与负载均衡
- 如何检查 Docker 守护进程或容器是否正在运行
- 结合Docker Compose,将Nginx反向代理和负载均衡使用于ASP.NET 5应用
- DockOne微信分享(七十一):基于Docker的负载均衡和服务发现
- 去哪儿网利用Mesos和Docker构建dev—beta环境
- ubuntu docker 安装 Redis
- Docker & Kubernetes : Pods and Service definitions
- Docker上运行MySQL服务
- centos7安装docker
- [ 解决问题篇 ] 解决 docker 报错 Cannot connect to the Docker daemon