Docker容器部署consul的详细步骤
目录
- Consul简介
- Consul 使用场景
- -consul部署-
- 容器服务自动加入consul集群
- 安装Gliderlabs/Registrator Gliderlabs/Registrator
- 测试服务发现功能是否正常
- 安装consul-template
- 安装nginx
- 配置并启动template
Consul简介 Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。 Consul 支持 健康检查,并允许 HTTP 、GRPC 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.
Consul 使用场景
- Docker 实例的注册与配置共享
- Coreos 实例的注册与配置共享
- SaaS 应用的配置共享、服务发现和健康检查。
- vitess 集群
- 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件
-consul部署-
文章图片
服务器:192.168.37.100 Docker-ce、Consul、Consul-template创建consul目录
服务器:192.168.37.107 Docker-ce、registrator
template模板(更新配置文件)
registrator(自动发现+注册到consul-server端)
后端每更新出一个容器,会向registrator进行注册,控制consul完成更新操作,consul会触发consultemplate模板进行热更新(reload)
核心机制: consul :自动发现、自动更新,为容器提供服务(添加、删除、生命周期)—------consul服务器
[root@localhost ~]# hostnamectl set-hostname consul[root@localhost ~]# su[root@consul ~]# mkdir /root/consul
将consul压缩包压缩并放到/use/bin下
[root@consul ~]# cd consul/[root@consul ~/consul]# lsconsul_0.9.2_linux_amd64.zip[root@consul ~/consul]# unzip consul_0.9.2_linux_amd64.zipArchive:consul_0.9.2_linux_amd64.zipinflating: consul[root@consul ~/consul]# lsconsulconsul_0.9.2_linux_amd64.zip[root@consul ~/consul]# mv consul /usr/bin/
配置consul的模式
onsul agent \
-server \server模式
-bootstrap前端框架
-ui \可被访问的web界面
-data-dir=/var/lib/consul-data \
-bind=192.168.37.100 \
-client=0.0.0.0 \registrator(应用服务器-docker-tomcat/apache)
-node=consul-server01 &> /var/ log / consul.log &
[root@consul ~/consul]# consul agent \> -server \> -bootstrap \> -ui \> -data-dir=/var/lib/consul-data \> -bind=192.168.37.100 \> -client=0.0.0.0 \> -node=consul-server01 &> /var/log/consul.log &[1] 24144[root@consul ~/consul]# consul membersNodeAddressStatusTypeBuildProtocolDCconsul-server01192.168.37.100:8301aliveserver0.9.22dc1
此时我们看群集信息
[root@consul ~/consul]# consul membersNodeAddressStatusTypeBuildProtocolDCconsul-server01192.168.37.100:8301aliveserver0.9.22dc1
查看详细信息,过滤出leader
[root@consul ~/consul]# consul info | grep leaderleader = trueleader_addr = 192.168.37.100:8300
查看consul界面。使用8500端口,8300是通信端口
文章图片
容器服务自动加入consul集群
安装Gliderlabs/Registrator Gliderlabs/Registrator 可检查容器运行状态自动注册,还可注册docker容器的服务信息到服务配置中心(consul 8300 -----》8500展示)。目前支持Consul、Etcd和skyDNS2。
在192.168.37.107执行以下操作
[root@server ~]# docker run -d \> --name=registrator \> --net=host \> -v /var/run/docker.sock:/tmp/docker.sock \> --restart=always \> gliderlabs/registrator:latest \> -ip=192.168.37.107 \> consul://192.168.37.100:8500 ###下面的是加载Unable to find image 'gliderlabs/registrator:latest' locallylatest: Pulling from gliderlabs/registratorImage docker.io/gliderlabs/registrator:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/c87f684ee1c2: Pull completea0559c0b3676: Pull completea28552c49839: Pull completeDigest: sha256:6e708681dd52e28f4f39d048ac75376c9a762c44b3d75b2824173f8364e52c10Status: Downloaded newer image for gliderlabs/registrator:latest2536df1b1fbb77dcbf5d2e09295f222496ecc63f00a49020ce6976decd52a439
查看容器
[root@server ~]# docker ps -aCONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES2536df1b1fbbgliderlabs/registrator:latest"/bin/registrator -i…"51 seconds agoUp 50 secondsregistrator
测试服务发现功能是否正常 安装两个nginx和2个apache
docker run -itd -p:83:80 --name test-01 -h test01 nginxdocker run -itd -p:84:80 --name test-02 -h testo2 nginxdocker run -itd -p:88:80 --name test-03 -h test03 httpddocker run -itd -p:89:80 --name test-04 -h test04 httpd
文章图片
此时去网页查看
文章图片
安装consul-template Consul-Template 是一个守护进程,用于实时查询consul集群信息,并更新文件系统上任意数量的指定模板,生成配置文件。更新完成以后,可以选择运行shell命令执行更新操作,重新加载Nginx。Consul-Template可以查询consul中的服务目录、Key、 Key-values 等。
这种强大的抽象功能和查询语言模板可以使Consul-Template 特别适合动态的创建配置文件。例如:创建 Apache/Nginx (nginx upstream) Proxy Balancers、Haproxy Backends
准备template nginx模板文件
--------------------------------------------------在consul上操作----------------------------------------------------
[root@consul ~/consul]# vim nginx.ctmp1upstream http_backend {{{range service "nginx"}}server {{.Address}}:{{.Port}}; {{end}}}server {listen 83; server_name localhost 192.168.37.100; access_log /var/log/nginx/xiao.cn-access.log; index index.html index.php; location / {proxy_set_header HOST $host; proxy_set_header x-Real-IP $remote_addr; proxy_set_header client-IP $remote_addr ; proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; }
安装nginx
####安装所需软件包[root@server ~]# yum install gcc pcre-devel zlib-devel -y###解压nginx软件包[root@server ~]# tar zxf nginx-1.12.0.tar.gz###执行[root@server /opt/nginx-1.12.0]# ./configure --prefix=/usr/local/nginx##编译[root@server /opt/nginx-1.12.0]# make && make install
修改配置文件,让其识别.conf文件结尾的文件
文章图片
【Docker容器部署consul的详细步骤】 创建vhost目录
[root@server /usr/local/nginx/conf]# mkdir vhost
创建nginx日志目录
[root@server /usr/local/nginx/conf/vhost]# mkdir /var/log/nginx.log
启动nginx
[root@server /usr/local/sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/[root@server /usr/local/sbin]# nginx
查看是否启动
[root@server /usr/local/sbin]# netstat -natp |grep nginxtcp00 0.0.0.0:800.0.0.0:*LISTEN54739/nginx: master
配置并启动template
[root@consul ~/consul]# unzip consul-template_0.19.3_linux_amd64.zipArchive:consul-template_0.19.3_linux_amd64.zipinflating: consul-template[root@consul ~/consul]# lsconsul_0.9.2_linux_amd64.zipconsul-templateconsul-template_0.19.3_linux_amd64.zipnginx.ctmp1[root@consul ~/consul]# mv consul-template /usr/bin
##关联nginx虚拟目录中的子配置文件操作
[root@consul ~/consul]# consul-template -consul-addr 192.168.37.100:8500 \> -template "/root/consul/nginx.ctmp1:/usr/local/nginx/conf/vhost/xiao.conf:/usr/local/nginx/sbin/nginx -s reload" \> --log-level=info
查看生成配置文件
文章图片
是都可以访问。
文章图片
到此这篇关于Docker容器部署consul的详细步骤的文章就介绍到这了,更多相关Docker consul 部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Docker容器部署前端Vue服务(小白教程)
- 使用 Docker 搭建适用于 HomeLab 的轻量邮件网关
- 『现学现忘』Docker基础|『现学现忘』Docker基础 — 22、使用Docker安装Nginx
- 『现学现忘』Docker常用命令|『现学现忘』Docker常用命令 — 21、容器常用命令(三)
- 深度学习|【实战】K210训练与部署YOLO目标检测模型
- docker|Docker 使用 error during connect: This error may indicate that the docker daemon is not running
- 0x02|0x02 TeamViewer日志溯源
- 『现学现忘』Docker常用命令|『现学现忘』Docker常用命令 — 20、容器常用命令(二)
- 从部署ubuntu到gitlab-ci实战
- 煮饺子论云原生docker与kubernetes之间的关系