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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux的企业-docker的集群Compose和高可用Docker swarm相关的知识,希望对你有一定的参考价值。

一.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下,并做软链接和加可执行权限,方便调用命令

技术分享


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


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

技术分享

技术分享

技术分享


4.创建后端服务

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

技术分享

技术分享

技术分享

技术分享


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

技术分享

技术分享


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

技术分享

技术分享


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


docker-compose完成结构

技术分享



技术分享

技术分享


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

技术分享

技术分享

技术分享

技术分享

技术分享


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

技术分享

技术分享


技术分享

技术分享



三.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并启动服务

技术分享


3.创建集群

技术分享

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

技术分享


技术分享


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

技术分享


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

server1,server2,server3导入nginx镜像

技术分享

技术分享

技术分享



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

技术分享


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

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

技术分享



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

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

技术分享


提交保存

技术分享


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

技术分享


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

技术分享

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

关闭容器并导出

技术分享


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

技术分享

技术分享



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

技术分享



10.启动后浏览器测试

技术分享

技术分享

3台后端服务轮询

技术分享


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

技术分享


显示轮询

技术分享



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

1.导入visualizer镜像

技术分享


2.创建

技术分享

查看容器

技术分享


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

技术分享



4.定时更新

技术分享

update-parallelism 2     每次更新2个

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

nginx                         每次更新nginx镜像

更新 名为flask的集群


图形变化image:nginx

技术分享



以上是关于Linux的企业-docker的集群Compose和高可用Docker swarm的主要内容,如果未能解决你的问题,请参考以下文章

Linux企业运维——Docker三剑客之docker-compose

docker-compose搭建Redis哨兵模式

Linux 安装 Docker Compose

docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot图文完整版

docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot图文完整版

Docker-compose 容器集群