使用Docker-Compose搭建consul集群环境
一.Compose consul的概述
1.什么是Compose
Docker Compose的前身是fig,他是一个定义及运行多个Docker容器的工具,使用Docker Compose不需要使用shell脚本来启动容器;Docker Compose非常适合组合多个容器进行开发的场景
2.Docker Compose容器编排
YAML是一种标记语言很直观的数据序列化格式
文件格式及编写注意事项:
不支持制表符tab键缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如冒号、逗号、横杆
用#号注释
如果包含特殊字符用单引号弓|起来
布尔值必须用引号括起来
3.Docker Compose配置常用字段字段 描述
4.Docker Compose常用命令
二.Consul的概述
1.什么是consul
Consul是HashiCorp公司推出的开源工具, 用于实现分布式系统的服务发现与配置
2.Consul的特性
支持健康检查,允许存储键值对
基于Golong语言,可移植性强
支持ACL访问控制
同时可与Docker等轻量级容器可无缝配合
3.Consul容器服务更新与发现
consul服务端:
(1)consul template:通过变量定义模板;定义的内容就是upstream地址池,通过变量的形式,并在接收到指令的时候动态更新web_01中ng的配置文件
(2)consul server:管理consul template
(3)consul agent:获取服务发现的机制;UI界面也可以看到新更新的服务
compose:
consul registrator:监听;部署在server端上
过程:
设置registrator监控,监听服务端口,有新的端口监控会注册到agent,交给server端,把后端真实的容器和ip写入template模板内,模板更新到nginx.conf内,再重载配置文件,从而对外识别新加的服务后端的节点:docker服务器
三.Compose的部署
1.服务器准备
192.168.206.177
安装服务docker concul agent/server/template nginx手工编译安装
192.168.206.188
安装服务docker nginx httpd
2.两台服务器安装docker,并设置镜像加速
3.上传Compose
[root@docker1 ~]# ls
1.sh anaconda-ks.cfg initial-setup-ks.cfg test.sh 视频 下载
2.sh docker-compose mm.sh 公共 图片 音乐
3.sh first.sh qiuhe.sh 模板 文档 桌面
[root@docker1 ~]# cp docker-compose /usr/local/bin
[root@docker1 ~]# chmod +x /usr/local/bin/docker-compose
4.创建目录,编写nginx的dockerfile
[root@docker1 ~]# mkdir /root/compose_nginx
[root@docker1 ~]# cd compose_nginx/
[root@docker1 compose_nginx]# mkdir nginx wwwroot
[root@docker1 compose_nginx]# cd nginx/
[root@docker1 nginx]# touch Dockerfile
[root@docker1 nginx]# ls #上传软件包
Dockerfile nginx-1.12.2.tar.gz
[root@docker1 nginx]# vim Dockerfile #编写dockerfile
FROM centos:7
ADD nginx-1.12.2.tar.gz /mnt
WORKDIR /mnt/nginx-1.12.2
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
yum clean all && \
sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
./configure --prefix=/usr/local/nginx &> /dev/null && \
make &> /dev/null && make install &> /dev/null &&\
rm -rf /mnt/nginx-1.12.2
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
5.编写站点网页
[root@docker1 nginx]# cd ..
[root@docker1 compose_nginx]# ls
nginx wwwroot
[root@docker1 compose_nginx]# cd wwwroot/
[root@docker1 wwwroot]# vim index.html
this is NG web!!!
6.编写docker-compose.yml文件
[root@docker1 wwwroot]# vim /root/compose_nginx/docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 1216:80
- 1217:443
networks:
- cluster
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
cluster:
[root@docker1 wwwroot]# cd ..
[root@docker1 compose_nginx]# docker-compose -f docker-compose.yml up -d #基于yml文件运行启动
[root@docker1 compose_nginx]# docker-compose ps #使用Compose容器编排
Name Command State Ports
-----------------------------------------------------------------------------------------
compose_nginx_nginx_1 /usr/local/nginx/sbin/ngin Up 0.0.0.0:1217->443/tcp,:::12
... 17->443/tcp,