业务引用之Haproxy负载均衡的实现
=====================注意:真正服务器使用时不鞥有这些#号注稀或者空格、tab键。检测可以在vi 里面:set list来判断是否有空格==================先看过来
Haproxy的安装我们选择源码包进行安装,我们通过文件管理模块进行haproxy的文件配置管理,需要将两个节点配置为负载均衡模式。
创建业务引用相关目录:
业务引用我们都是在cluster目录下进行。
[root@salt-master ~]# mkdir /srv/salt/prod/cluster #用于存放集群相关文件
[root@salt-master ~]# mkdir /srv/salt/prod/cluster/files
[root@salt-master ~]# vi /srv/salt/prod/cluster/files/haproxy-outside.cfg #外网负载均衡配置文件
global
maxconn 100000
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
log 127.0.0.1 local3 info
#默认参数设置
defaults
option http-keep-alive
maxconn 100000
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
#开启Haproxy Status状态监控,增加验证
listen stats
mode http
bind 0.0.0.0:8888
stats enable
stats uri /haproxy-status
stats auth haproxy:saltstack
#前端设置
frontend frontend_www_example_com
#bind 10.0.0.11:80
bind 192.168.91.100:80
mode http
option httplog
log global
default_backend backend_www_example_com
#后端设置
backend backend_www_example_com
option forwardfor header X-REAL-IP
option httpchk HEAD / HTTP/1.0
#balance source如果想要轮训则改为roundrobin
balance roundrobin
server web-node1 192.168.91.134:8080 check inter 2000 rise 30 fall 15
server web-node2 192.168.91.133:8080 check inter 2000 rise 30 fall 15
编写haproxy的salt文件:(如果启动其它的服务业可以这样造搬)
salt文件主要涉及到haproxy的安装引用、对配置文件的下发、haproxy的服务启动等功能。
[root@salt-master ~]# vi /srv/salt/prod/cluster/haproxy-outside.sls
include: #include haproxy的安装文件
- haproxy.install
haproxy-service:
file.managed: #将source执行的haproxy配置文件,存放到name指定路径下
- name: /etc/haproxy/haproxy.cfg
- source: salt://cluster/files/haproxy-outside.cfg
- user: root
- group: root
- mode: 644
service.running: #启动haproxy服务
- name: haproxy
- enable: True
- reload: True #允许reload服务
- require:
- cmd: haproxy-init #引用haproxy目录下install文件中的haproxy-init标签
- watch: #通过watch状态监控,如果配置文件发生改变 就reload
- file: haproxy-service #haproxy-servcie标签下的file模块
注:此文件依赖于haproxy目录下的install.sls文件。
现在,可以编写top file文件,让其两个haproxy节点能够正常运行服务:
[root@salt-master ~]# cat /srv/salt/base/top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
'salt-minion.2018.com':
- cluster.haproxy-outside
编写完top file文件可以,执行高级模式来执行salt文件:
[root@salt-master ~]# salt '*' state.highstate test=True #测试
[root@salt-master ~]# salt '*' state.highstate
----------
ID: haproxy-service
Function: service.running
Name: haproxy
Result: True
Comment: Service haproxy is already enabled, and is running
Started: 14:51:10.446901
Duration: 545.282 ms
Changes:
----------
haproxy:
True
Summary
-------------
Succeeded: 21 (changed=2)
Failed: 0 <=================================================0个失败就是没有问题了
-------------
Total states run: 21
可以看到已经执行成功,成功21项状态。
现在,我们可以通过浏览器访问haproxy管理界面:
http://192.168.10.149:8888/haproxy-status
用户:haproxy 密码:saltstack
需要安装个8080服务作为测试,这里我安装httpd:
[root@salt-master ~]# salt '*' cmd.run 'yum -y install httpd'
在这里由于/var/www/html没有页面信息,健康检查会显示异常,所以需要在两个节点上创建html文件信息。
[root@salt-master ~]# echo ‘centos-test1’ > /var/www/html/index.html
[root@salt-minion ~]# echo ‘centos-test2’ > /var/www/html/index.html
然后修改httpd的端口为8080
略过
然后启动
[root@salt-master ~]# salt '*' cmd.run 'systemctl restart httpd'
然后就大功告成了。
=====================注意:真正服务器使用时不鞥有这些#号注稀或者空格、tab键。检测可以在vi 里面:set list来判断是否有空格==================先看过来
Haproxy的安装我们选择源码包进行安装,我们通过文件管理模块进行haproxy的文件配置管理,需要将两个节点配置为负载均衡模式。
创建业务引用相关目录:
业务引用我们都是在cluster目录下进行。
[root@salt-master ~]# mkdir /srv/salt/prod/cluster #用于存放集群相关文件
[root@salt-master ~]# mkdir /srv/salt/prod/cluster/files
[root@salt-master ~]# vi /srv/salt/prod/cluster/files/haproxy-outside.cfg #外网负载均衡配置文件
global
maxconn 100000
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
log 127.0.0.1 local3 info
#默认参数设置
defaults
option http-keep-alive
maxconn 100000
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
#开启Haproxy Status状态监控,增加验证
listen stats
mode http
bind 0.0.0.0:8888
stats enable
stats uri /haproxy-status
stats auth haproxy:saltstack
#前端设置
frontend frontend_www_example_com
#bind 10.0.0.11:80
bind 192.168.91.100:80
mode http
option httplog
log global
default_backend backend_www_example_com
#后端设置
backend backend_www_example_com
option forwardfor header X-REAL-IP
option httpchk HEAD / HTTP/1.0
#balance source如果想要轮训则改为roundrobin
balance roundrobin
server web-node1 192.168.91.134:8080 check inter 2000 rise 30 fall 15
server web-node2 192.168.91.133:8080 check inter 2000 rise 30 fall 15
编写haproxy的salt文件:(如果启动其它的服务业可以这样造搬)
salt文件主要涉及到haproxy的安装引用、对配置文件的下发、haproxy的服务启动等功能。
[root@salt-master ~]# vi /srv/salt/prod/cluster/haproxy-outside.sls
include: #include haproxy的安装文件
- haproxy.install
haproxy-service:
file.managed: #将source执行的haproxy配置文件,存放到name指定路径下
- name: /etc/haproxy/haproxy.cfg
- source: salt://cluster/files/haproxy-outside.cfg
- user: root
- group: root
- mode: 644
service.running: #启动haproxy服务
- name: haproxy
- enable: True
- reload: True #允许reload服务
- require:
- cmd: haproxy-init #引用haproxy目录下install文件中的haproxy-init标签
- watch: #通过watch状态监控,如果配置文件发生改变 就reload
- file: haproxy-service #haproxy-servcie标签下的file模块
注:此文件依赖于haproxy目录下的install.sls文件。
现在,可以编写top file文件,让其两个haproxy节点能够正常运行服务:
[root@salt-master ~]# cat /srv/salt/base/top.sls
base:
'*':
- init.env_init
prod:
'salt-master.2018.com':
- cluster.haproxy-outside
'salt-minion.2018.com':
- cluster.haproxy-outside
编写完top file文件可以,执行高级模式来执行salt文件:
[root@salt-master ~]# salt '*' state.highstate test=True #测试
[root@salt-master ~]# salt '*' state.highstate
----------
ID: haproxy-service
Function: service.running
Name: haproxy
Result: True
Comment: Service haproxy is already enabled, and is running
Started: 14:51:10.446901
Duration: 545.282 ms
Changes:
----------
haproxy:
True
Summary
-------------
Succeeded: 21 (changed=2)
Failed: 0 <=================================================0个失败就是没有问题了
-------------
Total states run: 21
可以看到已经执行成功,成功21项状态。
现在,我们可以通过浏览器访问haproxy管理界面:
http://192.168.10.149:8888/haproxy-status
用户:haproxy 密码:saltstack
需要安装个8080服务作为测试,这里我安装httpd:
[root@salt-master ~]# salt '*' cmd.run 'yum -y install httpd'
在这里由于/var/www/html没有页面信息,健康检查会显示异常,所以需要在两个节点上创建html文件信息。
[root@salt-master ~]# echo ‘centos-test1’ > /var/www/html/index.html
[root@salt-minion ~]# echo ‘centos-test2’ > /var/www/html/index.html
然后修改httpd的端口为8080
略过
然后启动
[root@salt-master ~]# salt '*' cmd.run 'systemctl restart httpd'
然后就大功告成了。