一.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.启动后浏览器测试
11.将后端服务变为8个节点
显示轮询
四.Docker swarm可视化web监控界面
1.导入visualizer镜像
查看容器
3.浏览器输入地址,查看监控界面
4.定时更新
update-parallelism 2 每次更新2个
update-delay 10s 每十秒更新1次
nginx 每次更新nginx镜像
更新 名为flask的集群
图形变化image:nginx
Linux的企业-docker的集群Compose和高可用Docker swarm
原文地址:http://anfishr.blog.51cto.com/8534000/1977919