Linux的企业-docker的集群Compose和高可用Docker swarm

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

一.Docker Compose

          Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。Docker Compose 运行的目录下的所有文件(docker-compose.yml, extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
          Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose 首先需要编写
Compose 文件来描述多个容器服务以及之间的关联,然后通过命令根据配置启动所有的容器。
           Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个包含多个相互关联容器的应用。Compose 项目使用 python 编写,基于后面的实验中我们将学习的 Docker API 实现。


二.Docker Compose配置测试

配置环境redhat7.2

1.将docker-compose-linux-x86_64的文件放置到/bin下,并做软链接和加可执行权限,方便调用命令

7413fd4903f62436355cee16a41a4e63.png


2.测试导入haproxy和nginx镜像,做负载均衡


3.在tmp下编写compose配置文件

32e65442323707e0c9f00bef6122f7b7.png

cc4a397e98430b1f57ae03f62809a33b.png

059fc8c52c8a1046547ad10ce6430434.png


4.创建后端服务

web1为httpd,web2和web3为nginx,分别创建默认访问目录

98a2ca899ca49b5efaad8ef0a0875578.png

299d23c757e83714f9eb2f141d0d131b.png

6b1170ca6716efe6b5322863078e120d.png

c784882c864dbc52799e36fb4b3766f0.png


5.在web1 httpd服务里建立配置安装httpd服务和启动httpd服务文件

4fe49694d16a6ae9dc60fa50b609df64.png

43b20273a6987408a1157ab10e6509ae.png


6.在haproxy里建立haroxy.cfg负载均衡配置文件

a8a30407851c3ae7d1ecdba58fa9a524.png

7e1a5c262c363d6bc6ca384ef7609961.png


7.在该compose目录下执行 docker-compose up 命令,会整合输出所有容器的输出


docker-compose完成结构

3da850dd5a5fa0fcdd3d4ffd9b67db87.png



7a079bb56dfc85202bcbf0587d1c65e7.png

519923e50c287ab6e24527474d0407f8.png


8.配置完成,实现负载均衡

84f7b31a79bf62a53ac56db049154e26.png

666d346464460ecc20c5bf98bbe510e2.png

c057acc4c881958d6126514554d632fb.png

0474285fe1d60e8f1e83b1e02efdcc78.png

8160f3b30c3e96320369ad7e338aea29.png


9.健康检查,关闭web3,访问正常,重新启动web3,服务正常

167d4308f6ce1545e1f8dd95e5b8affc.png

a8f440b8a093c8b4e16d66cb0f7e23f7.png


9aa22a18cbd98fb5e21e6f8700eac50e.png

47b8e147f8d730078d8434df084a542e.png



三.Docker swarm的负载均衡高可用

       Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集
群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API
接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。Swarm deamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复运行之后,它会收集重建集群信息。


1.配置环境

redhat7.2,7.2自带swarm工具

server1 主

server2 从

server3 从


2.安装

server1,server2,server3安装docker并启动服务

f7bbcc9ca98832770f106329c3a99c6a.png


3.创建集群

60c0c991367ec42c827d791e803d1725.png

将docker swarm join 到172.25.29.1:2377 进行复制,分别复制到server2和server3的shell里

1d0d057174f80fd24987c465ab45b653.png


7c555a99b8ed8ee109f93eb37bd316d0.png


完成后在server1上查看节点状态,集群配置完成

50cfdb119be088c5bd3aeec20726a570.png


4.Docker swarm 负载均衡高可用实验

server1,server2,server3导入nginx镜像

918be8c43882df25eb86228b6beabd53.png

7524f8cc64ec3dd703b3a2c55f5f3883.png

8b0fee32afbbd765f3c1cf6fc9c55987.png



5.导入flask框架镜像,server1,server2,server3都要导

40dafd535025fd62e60325c6a3ab395d.png


由于实现负载均衡,需要在nginx的网页上显示主机名,以区分不同后端的负载均衡

用python写的一个显示主机名的语句,导入flask和os

2a03c57860748dcdbfd47fbd3b3063d4.png



6.server1单机运行读取python文件,看是否能查看到主机名

打开flask镜像,将demo.py脚本放到root下

02e2472be81236b99965023dfe1c93a4.png


提交保存

2baa516ef8f9df8b4485fc8ae15d6884.png


测试写的显示主机名的python脚本是否正常

a7bd98a128e5cc6444cf09c45d2c7fad.png


可以显示容器名,测试正常,可以封装提交

3e161054b9b0497fe09bcc377a9eec7e.png

7.将测试好的加入demo.py脚本的镜像python:demo镜像导出为demo.tar

关闭容器并导出

e589b625d017becc409d31d5d79f38b8.png


8.server2和server3分别导入flask和demo镜像

418e92b07abcdd0bbdc8713b5b1e6941.png

eb3f9a890e00de4bb634e31de41cd370.png



9.创建名为flask集群,并启动3个后端服务节点,读取python下的demo.py脚本

a3ffeb895fee1aac64311d71d7f86dd0.png



10.启动后浏览器测试

90effcdde72e061baf6fc4358017b423.png

ecf58364d6196e36f048f34bfd94b911.png

3台后端服务轮询

f3040cda7f64e9892d28ec6b583cb712.png


11.将后端服务变为8个节点

7867c9e10ee0e7f6ab7d535dc75090aa.png


显示轮询

6f8ab379cf2425816042481f8f1ad0a2.png



四.Docker swarm可视化web监控界面

1.导入visualizer镜像

6680fafde6b696fdf700028060ab094f.png


2.创建

ad9bff7c8dd26e88df65bfea53cec5a0.png

查看容器

7fbdbb259cc9ce41dae7626340bd944e.png


3.浏览器输入地址,查看监控界面

d902d1aa1560cc884f4656000d7b1fcf.png



4.定时更新

bbfa179374f849d754245deae56d9018.png

update-parallelism 2     每次更新2个

update-delay 10s          每十秒更新1次

nginx                         每次更新nginx镜像

更新 名为flask的集群


图形变化image:nginx

a245cbaa2fc19e269957f8f0cee38391.png



      本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1977919,如需转载请自行联系原作者




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
2月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
297 1
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
6月前
|
安全 Linux 数据安全/隐私保护
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
799 36
Red Hat Enterprise Linux 9.6 (x86_64, aarch64) - 红帽企业 Linux (RHEL)
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
259 5
|
2月前
|
运维 数据可视化 开发者
2025年 三个 Docker Compose 可视化管理器测评
本文对比了三款主流的 Docker Compose 可视化管理工具。随着 Docker 的普及,Compose 已成为多容器应用部署的标准,但 YAML 配置复杂、协作困难等问题也日益突出。三款工具各有侧重:Docker Desktop 适合个人本地开发,Portainer 适合小团队运维管理,而 Websoft9 则通过 GitOps 实现了强大的版本控制与团队协作能力。文章从可视化编辑、部署便捷性、版本管理等方面进行评测,为不同使用场景提供了推荐方案,展望了未来 Compose 管理向 GitOps 深度融合的发展趋势。
304 1
2025年 三个 Docker Compose 可视化管理器测评
|
数据可视化 开发工具 git
GitOps 驱动的 Docker Compose 可视工具化来了,图形化编辑器上玩转容器编排
Docker Compose 简化了多容器应用的部署,但随着应用复杂度上升,文本配置方式逐渐暴露出维护难、协作效率低等问题。基于 GitOps 的可视化 Docker Compose 工具应运而生,通过图形界面降低使用门槛,提升配置准确性和团队协作效率。结合 GitOps,实现配置变更的版本追踪、自动化部署与环境一致性,为多容器应用管理提供高效、安全的解决方案。
|
4月前
|
NoSQL Redis Docker
使用Docker Compose工具进行容器编排的教程
以上就是使用Docker Compose进行容器编排的基础操作。这能帮你更有效地在本地或者在服务器上部署和管理多容器应用。
422 11
|
4月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
307 1
|
6月前
|
网络协议 NoSQL Redis
Docker Compose--模板文件
Docker Compose--模板文件
374 29
|
6月前
|
关系型数据库 MySQL 数据库
Docker Compose-实战
Docker Compose-实战
210 5

热门文章

最新文章