Docker私有仓库部署Compose搭建consul环境

Compose与Consul深度集成:服务发现与容器编排实战
本文介绍了Compose容器编排工具如何配合Consul进行服务注册与发现,包括Compose配置详解、Consul的使用场景、服务更新与发现流程,以及在实践中如何部署和测试Consul-template与nginx的集成。

一, Compose概述
1.Compose是用于定义和运行多容器的工具。通过Compose可以使用YAML文件来配置容器。然后,使用个命令就可以从配置中创建并启动所有服务。
2. Docker Compose容器编排
YAML是一种标记语言很直观的数据序列化格式
文件格式及编写注意事项:
不支持制表符tab键缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如冒号、逗号、横杆
用#号注释
如果包含特殊字符用单引号弓|起来
布尔值必须用引号括起来
3.docker-compose常用字段

build	 ##重新构建服务
ps	     ##列出容器
up	     ##创建和启动容器
exec	 ##在容器里面执行命令
scale	 ##指定一个服务容器启动数量
top	     ##显示容器进程
logs	 ##查看容器输出
down	 ##删除容器、网络、数据卷和镜像
stop/start/restart	   ##停止/启动/重启服务

4.Docker Compose配置常用字段

build dockerfile context	##指定Dockerfile文件名构建镜像.上下文路径
image	        ##指定镜像
command	          ##执行命令,覆盖默认命令
container name	  ##指定容器名称,由于容器名称是唯一的, 如果指定自定义名称,则无法scale
deploy	          ##指定部署和运行服务相关配置,只能在Swarm模式使用
environment	       ##添加环境变量
networks	##加入网络
ports	    ##暴露容器端口,与-p相同,但端口不能低于60
volumes	      ##挂载宿主机路径或命令卷
restart	         ##重启策略,默认no,always, no-failure,unless-stoped
hostname	   ##容器主机名

二,Consul简介
1.Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式”,内置了服务注册与发现框 架、具有以下性质:
分布一致性协议实现、
健康检查、
Key/Value存储、
多数据中心方案,
不再需要依赖其他工具(比如ZooKeeper等)。
2. Consul 的使用场景
docker 实例的注册与配置共享
coreos 实例的注册与配置共享
vitess 集群
SaaS 应用的配置共享
与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件
3.2Consul容器服务更新与发现

consul服务端:
①consul template:通过变量定义模板;定义的内容就是upstream地址池,通过变量的形式,并在接收到指令的时候动态更新web_01中ng的配置文件
②consul server:管理consul template
③consul agent:获取服务发现的机制;UI界面也可以看到新更新的服务
compose:
①consul registrator:监听;部署在server端上
过程:
设置registrator监控,监听服务端口,有新的端口监控会注册到agent,交给server端,把后端真实的容器和ip写入template模板内,模板更新到nginx.conf内,再重载配置文件,从而对外识别新加的服务后端的节点:docker服务器

4.部署
4.1实验环境

主机	   操作系统	 IP地址	         主要软件及版本
consul	centos7	192.168.189.15	Docker 、Consul、Consul-template
registrator	centos7	192.168.133.16	Docker、registrator

1.安装consul

[root@dacker-consul ~]# mkdir /root/consul
[root@dacker-consul ~]# cd /root/consul
[root@dacker-consul consul]# rz -E
rz waiting to receive.
[root@dacker-consul consul]# ls
consul_0.9.2_linux_amd64.zip
[root@dacker-consul consul]# unzip consul_0.9.2_linux_amd64.zip
Archive:  consul_0.9.2_linux_amd64.zip
  inflating: consul                  
[root@dacker-consul consul]# ls
consul  consul_0.9.2_linux_amd64.zip
[root@dacker-consul consul]# mv consul /usr/bin
[root@dacker-consul consul]# consul agent \
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.189.15 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 16681
[root@dacker-consul consul]# 

1.2.查看集群信息

consul members
consul info | grep leader
这里查询到的8300端口用于集群内数据的读写和复制

在这里插入图片描述
1.3.通过httpd api获取集群信息

curl 127.0.0.1:8500/v1/status/peers       //查看集群server成员
curl 127.0.0.1:8500/v1/status/leader      //集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services   //注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nginx      //查看nginx服务信息
curl 127.0.0.1:8500/v1/catalog/nodes      //集群节点详细信息

在这里插入图片描述
1.4.端口作用

netstat -natp |grep consul
这5个端口的作用:
8300:集群内数据的读写和复制
8301:单个数据中心gossip协议通讯
8302:跨数据中心gossip协议通讯
8500:提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务
8600:采用DNS协议提供服务发现功能

在这里插入图片描述
2…配置client部署

安装Gliderlabs/Registrator
docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.189.16\
consul://192.168.189.15:8500

在这里插入图片描述
在这里插入图片描述
2.2测试服务发现功能是否正常

docker run -itd -p:81:80 --name test-01 -h test01 nginx
docker run -itd -p:82:80 --name test-02 -h test02 nginx
docker run -itd -p:91:80 --name test-03 -h test03 httpd
docker run -itd -p:92:80 --name test-04 -h test04 httpd

在这里插入图片描述
在这里插入图片描述
2.3验证http和nginx服务是否注册到consul
浏览器输入http://192.168.189.15:8500,“单击NODES”,然后单击“consurl-server01”,
在这里插入图片描述
consul:192.168.189.15

curl 127.0.0.1:8500/v1/catalog/services
 #查看注册的所有服务,此时可看到httpd和nginx服务在上面

在这里插入图片描述
3.安装consul-template
consul:192.168.189.15

unzip consul-template_0.19.3_linux_amd64.zip
mv consul-template /usr/bin/
#将解压出来移动到/usr/bin目录下

4.准备template nginx模板文件
consul:192.168.189.15
在这里插入图片描述
5.部署nginx
consul:192.168.189.15
编译安装nginx
yum install -y gcc pcre-devel zlib-devel
cd /opt
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx
make && make install

5.1配置nginx

vim /usr/local/nginx/conf/nginx.conf
http {
  include    mime.types;
  include vhost/*.conf;  //添加虚拟主机目录
  default_type application/octet-stream;

//创建虚拟主机目录
mkdir /usr/local/nginx/conf/vhost
//创建日志文件目录
mkdir /var/log/nginx

//启动nginx
/usr/local/nginx/sbin/nginx

在这里插入图片描述
在这里插入图片描述
6.启动template
consul:192.168.189.15

consul-template -consul-addr 192.168.133.10:8500 \
-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/nginx01.conf:/usr/local/nginx/sbin/nginx -s reload" \
--log-level=info

6.1测试重新打开一个consul:192.168.189.15测试

在这里插入图片描述

7.测试
增加一个nginx容器节点,测试服务发现及配置更新功能
客户端:192.168.189.16
在registrator服务端注册
在这里插入图片描述
consul:192.168.189.15
在consul服务器监控装填会有提示自动更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看三台nginx容器日志,请求正常沦陷到各个节点上
client:192.168.189.16
在这里插入图片描述
在这里插入图片描述
8.删除节点
8.1原图
在这里插入图片描述
8.2删除、在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值