一.Haproxy定义

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

二.haproxy部署

实验环境:

server2:172.25.13.2安装haproxy,调度server3,server4
server3: 172.25.13.3服务器
server4 :172.25.13.4服务器

1.下载安装haproxy软件包

[root@server2 etc]# yum install haproxy -y
[root@server2 haproxy]# ls
haproxy.cfg

2.修改配置文件,添加两台服务器,设置监控

[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl start haproxy
[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy


采用roundrobin轮询法,轮流访问两台主机

haproxy后端使用域名 haproxy部署_php

haproxy后端使用域名 haproxy部署_linux_02


测试结果

haproxy后端使用域名 haproxy部署_php_03


haproxy后端使用域名 haproxy部署_haproxy后端使用域名_04

3.添加用户认证和自动刷新,刷新频率为5s,打开日志接收端口

[root@server2 haproxy]# vim /etc/rsyslog.conf
[root@server2 haproxy]# systemctl restart rsyslog.service
[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy

haproxy后端使用域名 haproxy部署_haproxy_05


haproxy后端使用域名 haproxy部署_linux_06


haproxy后端使用域名 haproxy部署_php_07

4. 分别采用源路由算法和权重算法

haproxy后端使用域名 haproxy部署_linux_08


源路由算法测试结果

haproxy后端使用域名 haproxy部署_linux_09


权重算法测试结果server4权重为2,server3权重为1

haproxy后端使用域名 haproxy部署_haproxy_10

5.添加备机,当server3,server4停用,访问backup备机

[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy
[root@server2 haproxy]# echo "sorry, please try again later" > /var/www/html/index.html
[root@server3 ~]# systemctl stop httpd
[root@server3 ~]# ssh server4 systemctl stop httpd

haproxy后端使用域名 haproxy部署_haproxy_11


haproxy后端使用域名 haproxy部署_haproxy_12

6.访问限制

(1)将172.25.13.250主机加入黑名单,不能访问server3,server4,当其访问时,会跳转到172.25.0.2:8000端口。
[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy

haproxy后端使用域名 haproxy部署_haproxy_13

(2)限制用户访问指定的页面test.html

haproxy后端使用域名 haproxy部署_linux_14


haproxy后端使用域名 haproxy部署_haproxy_15


haproxy后端使用域名 haproxy部署_haproxy后端使用域名_16

(3)访问限制,黑名单用户访问时,重定向到百度
[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy

haproxy后端使用域名 haproxy部署_haproxy后端使用域名_17



haproxy后端使用域名 haproxy部署_linux_18

7.动静分离

server3发布静态页面
server4发布php动态页面

[root@server3 ~]# mkdir /var/www/html/imgaes
[root@server3 ~]# cd /var/www/html/images
[root@server3 images]# ls
redhat.jpg
[root@server3 images]# systemctl start httpd
[root@server3 images]# ssh server4 systemctl start httpd

[root@server4 ~]# vim /var/www/html/index.php
[root@server4 ~]# cat /var/www/html/index.php
<?php
phpinfo()
?>

测试:分别访问172.25.13.3/images/redhat.jpg

172.25.13.4/index.php

haproxy后端使用域名 haproxy部署_haproxy后端使用域名_19


haproxy后端使用域名 haproxy部署_php_20

[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy

修改配置文件,设置默认后端172.25.13.4,发布静态页面的后端172.25.13.3,当用户访问的网址符合设置的开头和结尾,则使用静态发布页面的后端,否则使用默认后端

haproxy后端使用域名 haproxy部署_html_21


haproxy后端使用域名 haproxy部署_html_22


haproxy后端使用域名 haproxy部署_php_23

8.读写分离

server3执行读操作,server4执行写操作

[root@server2 haproxy]# vim haproxy.cfg
[root@server2 haproxy]# systemctl reload haproxy

haproxy后端使用域名 haproxy部署_haproxy后端使用域名_24

[root@server3 html]# ls
 imgaes  index.html  index.php  test.html  upload  upload_file.php
[root@server3 html]# chmod 777 upload/
[root@server4 html]# ls
index.html  index.php  test.html  upload  upload_file.php
[root@server4 html]# chmod 777 upload/
[root@server4 html]# ls upload/
dcb2a08d513f6616854cd96ead4746ba.gif

index.php

haproxy后端使用域名 haproxy部署_html_25


upload_file.php

haproxy后端使用域名 haproxy部署_haproxy_26


上传图片

haproxy后端使用域名 haproxy部署_linux_27


haproxy后端使用域名 haproxy部署_php_28

三.haproxy与pacemaker集群

2.haproxy加入pacemaker集群中,将haproxy和vip添加进同一组中,在同一台主机上启用

[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.13.100 op monitor interval=30s
[root@server1 ~]# pcs resource create haproxy systemd:haproxy op monitor interval=30s
[root@server1 ~]# pcs resource group add hagroup vip haproxy

haproxy后端使用域名 haproxy部署_haproxy后端使用域名_29

2.server1关闭后服务漂移

haproxy后端使用域名 haproxy部署_haproxy_30