docker---consul架构

目录

一、Consul概述

二、Consul的特性

三、Consul的使用场景

四、搭建consul集群

五、建立Consul服务

1.实验环境

2、主机名为nginx端的配置

3、以下在命名为docker执行(服务器自动加入cosul集群)

4.在名称为nginx的服务端上手动安装nginx

5、测试:增加一个 nginx 容器节点,测试服务发现及配置更新功能


一、Consul概述

template 模板(更新)

registrator(自动发现)

后端每构建出一个容器,会向registrator进行注册,控制consul 完成更新操作,consul会触发consul template模板进行热更新

核心机制:consul :自动发现、自动更新,为容器提供服务(添加、删除、生命周期)

二、Consul的特性

1.支持健康检查、允许存储键值对

2.基于Golong语言,可移植性强

3.支持ACL访问控制

三、Consul的使用场景

Consul的应用场景包括服务发现、服务隔离、服务配置:

1.服务发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。

2.服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。

3.服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。

4.Consul可以帮助系统管理者更清晰的了解复杂系统内部的系统架构,运维人员可以将Consul看成一种监控软件,也可以看成一种资产(资源)管理系统。

四、搭建consul集群

当tomcat4服务器加入进来时(变更时),consul的组件便会采集到数据变化(consul启动时,会丢一个小弟在应用层的节点上,进行监听工作),首先,小弟先把04先注册,并且汇报给consul,

consul-agent会把变更信息展示在web页面中,然后template模板会进行更新配置,在给与NGXIN。NGINX通过reload更新配置。

五、建立Consul服务

1.实验环境

主机IP         

docker/192.168.239.130      docker-ce、registrator(自动发现、注册的组件)

nginx/192.168.239.129 nginx、consul、consul-template

2、主机名为nginx端的配置

①、上传安装包到opt下

[root@ nginx opt]# ls

consul_0.9.2_linux_amd64.zip

②、解压

[root@ nginx opt]# unzip consul_0.9.2_linux_amd64.zip

③、把执行文件剪切到/usr/bin下

[root@ nginx opt]# mv consul /usr/bin/

④、consul代理的配置,启动放置后台执行

[root@ nginx opt]# consul agent \

-server \

-bootstrap \

-ui \

-data-dir=/var/lib/consul-data \

-bind=192.168.159.159 \

-client=0.0.0.0 \

-node=consul-server01 &> /var/log/consul.log &

[1] 22356

⑤、查看集群信息

consul members

查看一下端口

ss -natp | grep 8500

consul info | grep leader

curl 127.0.0.1:8500/v1/catalog/nodes

⑥、登录web页面

3、以下在命名为docker执行(服务器自动加入cosul集群)

①、安装Gliderlabs/Registrator,可检测容器运行状态自动注册,还可注销docker容器的服务到服务配置中心。

docker run -d \

--name=registrator \

--net=host \

-v /var/run/docker.sock:/tmp/docker.sock \

--restart=always \

gliderlabs/registrator:latest \

-ip=192.168.239.130 \

consul://192.168.239.129:8500

②、测试服务是否正常 、运行两台nginx和两台阿帕奇

docker run -itd -p:83:80 --name test-01 -h test01 nginx

docker run -itd -p:84:80 --name test-02 -h test02 nginx

docker run -itd -p:88:80 --name test-03 -h test03 httpd

docker run -itd -p:89:80 --name test-04 -h test04 httpd

查看web界面

4.在名称为nginx的服务端上手动安装nginx

https://blog.csdn.net/a_b_e_l_/article/details/126490924?spm=1001.2014.3001.5502

上面的链接是我之前做的lnmp,其中包含手工编译安装nginx有需要可自行观看

  • 、修改nginx.conf文件内容

vim /usr/local/nginx/conf/nginx.conf

include      vhost/*.conf;

创建vhost目录:

  • 、创建一个consul目录

创建nginx.ctmpl模板

upstream http_backend {

  { {range service "nginx"}}

   server { {.Address}}:{ {.Port}};  

   { {end}}

}

server {

  listen 86;

  server_name localhost 192.168.239.130;      

  access_log /var/log/nginx/kgc.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;

  }

}

重启nginxfuwu

  • 、上传consul-template到consul目录下

template是自动更新的工具

  • 、移动位置

mv consul-template /usr/bin/

  • 、关联nginx虚拟目录中的子配置文件操作

consul-template -consul-addr 192.168.239.129:8500 \

-template "/opt/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/ceshi.conf:/usr/local/nginx/sbin/nginx -s reload" \

--log-level=info

cd /usr/local/nginx/conf/vhost/

ls

ceshi.conf

这里有一个故障:

我在重启nginx的时候发现报错,报错原因是有一个日志文件打不开

我的解决方法就是去到/var/log/nginx/ 下删除原有文件,然后重新创建即可

使用86端口后改nginx服务即可自动被consul发现

5、测试:增加一个 nginx 容器节点,测试服务发现及配置更新功能

在docker节点增加一个nginx

docker run -itd -p 85:80 --name test-05 -h test05 nginx

发现自动增加

在节点上删除一个服务

自动减少了

猜你喜欢

转载自blog.csdn.net/a_b_e_l_/article/details/127539170