Registrator+Consul+Consul-template+HaProxy实现动态修改Haproty配置文件

Registrator+Consul+Consul-template+HaProxy实现动态修改Haproty配置文件,第1张

Registrator+Consul+Consul-template+HaProxy实现动态修改Haproty配置文件

实现要求:

使用Haproxy进行负载均衡,在配置文件中手动添加或删除节点服务器信息,比较麻烦。

通过Registrator收集需要向Consul注册为Haproxy节点服务器的信息,然后用Consulkey/value注册。

L-template从Consul键/值读取信息,然后自动修改Haproxy配置文件并重新加载Haproxy。不需要修改haproxy.cfg

群集环境:

Postil:这里省略了构建Mesos集群的过程。


关闭selinux和防火墙。

setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config systemctl stop firewalld && systemctl disable firewalld


ZK服务器

容器来做consul: 获取Consul-server镜像 [root@zk-server ~]# docker pull docker.io/gliderlabs/consul-server 启动Consul-server [root@zk-server ~]# docker run -d --name=consul --net=host docker.io/gliderlabs/consul-server -bootstrap -bind=192.168.200.8


主人要做领事

下载consul包并解压。

[root@zk-server ~]# wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_386.zip [root@zk-server ~]# unzip consul_0.6.4_linux_386.zip [root@zk-server ~]# mv consul /usr/bin/



下载consul-template包并解压。

[root@zk-server ~]# wget https://releases.hashicorp.com/consul-template/0.15.0/consul-template_0.15.0_linux_386.zip [root@zk-server ~]# unzip consul-template_0.15.0_linux_386.zip [root@zk-server ~]# mv consul-template /usr/bin/


安装并启动haproxy

[root@zk-server ~]# yum -y install haproxy [root@zk-server ~]# systemctl start haproxy


创建consul服务器配置目录。

[root@zk-server ~]# mkdir /config


编写代理和服务器的json文件

[root@zk-server ~]# vi /config/agent.json  添加内容如下: {         "client_addr": "0.0.0.0",         "data_dir": "/data",         "leave_on_terminate": true,         "dns_config": {                 "allow_stale": true,                 "max_stale": "1s"         } } [root@zk-server ~]# vi /config/server.json 添加内容如下: {         "ui": true,         "dns_config": {                 "allow_stale": false         } }


启动consul单节点服务器。当然,如果你有更多的consul服务器节点,你也可以是一个consul集群。

[root@zk-server ~]# consul agent -server -config-dir=/config -bootstrap -bind=192.168.200.8 &

Postil:consul成员可以用来查看consul集群节点。


slave1-服务器

获取注册商图像

[root@slave1 ~]# docker pull gliderlabs/registrator:latest

开始注册

Postil:这个启动方法是用Consul的键/值注册的。

[root@slave1 ~]# docker run -d --restart=always --name=registrator --net=host --volume=/var/run/docker.sock:/tmp/docker.sock docker.io/gliderlabs/registrator -ip 192.168.200.10 consulkv://192.168.200.8:8500/hello

Postil:-IP后跟注册所属的主机IP。必须设置该属性,否则服务IP将显示为127.0.0.1。


测试注册器是否用Consul键/值注册了本机容器

启动容器。

[root@slave1 ~]# docker run -d -P --name=test --net=bridge p_w_picpath/nginx


进入咨询UI界面查看。

http://192.168.200.8:8500/ui/#/dc1/kv/



ZK服务器

创建领事配置目录

[root@zk-server ~]# mkdir -p /data/cfg/consul [root@zk-server ~]# vi /data/cfg/consul/tmpl.json 添加内容如下: consul = "127.0.0.1:8500"   template {   source = "/etc/haproxy/haproxy.ctmpl"   destination = "/etc/haproxy/haproxy.cfg"   command = "systemctl reload haproxy" }


编写haproxy模板

[root@zk-server ~]# vi /etc/haproxy/haproxy.ctmpl 添加内容如下: global     log         127.0.0.1 local2       chroot      /var/lib/haproxy     pidfile     /var/run/haproxy.pid     maxconn     4000     user        haproxy     group       haproxy     daemon       # turn on stats unix socket     stats socket /var/lib/haproxy/stats defaults     mode                    http     log                     global     option                  httplog     option                  dontlognull     option http-server-close     option forwardfor       except 127.0.0.0/8     option                  redispatch     retries                 3     timeout http-request    10s     timeout queue           1m     timeout connect         10s     timeout client          1m     timeout server          1m     timeout http-keep-alive 10s     timeout check           10s     maxconn                 3000   frontend  main *:80     acl url_static       path_beg       -i /static /p_w_picpaths /javascript /stylesheets     acl url_static       path_end       -i .jpg .gif .png .css .js       use_backend static          if url_static     default_backend             app   backend static     balance     roundrobin     server      static 127.0.0.1:4331 check   backend app     balance     roundrobin      {{range $key, $pairs := tree "hello/" | byKey}}{{range $serverid, $pair := $pairs}}      server app ``.`Value` check inter 2000 fall 3 weight 1 `end``end`


开始咨询-模板

[root@zk-server ~]#consul-template -config /data/cfg/consul/tmpl.json > consul-template.out 2>&1 &


用marathon启动一个nginx容器,查看registrator是否向consul注册,然后查看consul-template是否自动将这个后端服务器添加到/etc/etc/haproxy/haproxy.cfg


访问HaProxy_IP





欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存