文章目录

  • 一、Haproxy的搭建部署
  • 二、Haproxy的访问控制
  • 1.控制在访问不同后端时的输出内容:
  • 2.设定调度器为备机
  • 3.访问黑白名单设定
  • 访问测试页:
  • 访问控制相应页面
  • 4.访问重定向
  • 发生错误时重定向:
  • 直接重定向:
  • 5.访问上传时的读写分离
  • 三、通过pacemaker、corosync、haproxy实现高可用



一、Haproxy的搭建部署

7层负载平衡:

7层负载平衡是更复杂的负载均衡网络流量的方法是使用第7层(应用层)负载均衡。使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许您在同一域和端口下运行多个Web应用程序服务器。

yum install haproxy -y

编辑配置文件/etc/haproxy/haproxy.cfg

haproxy 负载nfs haproxy -f_负载均衡


haproxy 负载nfs haproxy -f_重定向_02


systemctl enable --now haproxy.service

要显示它的80端口开启

haproxy 负载nfs haproxy -f_linux_03


测试:

realserver端不需要改任何配置,即可实现负载均衡

haproxy 负载nfs haproxy -f_haproxy 负载nfs_04


为了安全起见,给它在页面访问时加上用户密码认证

haproxy 负载nfs haproxy -f_linux_05

haproxy 负载nfs haproxy -f_负载均衡_06

二、Haproxy的访问控制

根据调度器haproxy配置文件里的设定控制,在访问调度器时会有不同的结果

1.控制在访问不同后端时的输出内容:

编辑主配置文件/etc/haproxy/haproxy.cfg

haproxy 负载nfs haproxy -f_haproxy 负载nfs_07

systemctl restart haproxy.service

haproxy 负载nfs haproxy -f_重定向_08

测试:

app:访问ip会访问到13主机的测试页

haproxy 负载nfs haproxy -f_linux_09


static:server12上有此图片,调度器上没有

haproxy 负载nfs haproxy -f_haproxy 负载nfs_10


在访问调度器下的images/*.jpg时,会显示此图片

haproxy 负载nfs haproxy -f_运维_11

2.设定调度器为备机

当后端都有问题时,调度器自己作为备机

haproxy 负载nfs haproxy -f_运维_12


systemctl restart haproxy.service

haproxy 负载nfs haproxy -f_负载均衡_13


测试:

server13后端出现问题:

haproxy 负载nfs haproxy -f_负载均衡_14


访问调度器显示的是自己的测试页

haproxy 负载nfs haproxy -f_负载均衡_15


当后端好了后,访问页又会变回后端主机的测试页

haproxy 负载nfs haproxy -f_运维_16

3.访问黑白名单设定

访问测试页:

黑名单:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_17


systemctl restart haproxy.service测试:

haproxy 负载nfs haproxy -f_运维_18


白名单:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_19


systemctl restart haproxy.service测试:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_20

访问控制相应页面

haproxy 负载nfs haproxy -f_运维_21


systemctl reload haproxy.service

测试:

haproxy 负载nfs haproxy -f_负载均衡_22

4.访问重定向

发生错误时重定向:

haproxy 负载nfs haproxy -f_负载均衡_23


systemctl reload haproxy.service

测试:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_24

直接重定向:

haproxy 负载nfs haproxy -f_负载均衡_25

systemctl reload haproxy.service

测试:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_26

5.访问上传时的读写分离

haproxy 负载nfs haproxy -f_haproxy 负载nfs_27


systemctl reload haproxy.service

在两台后端都安装上php,支持此语言模板解析
yum install php -y 13主机有index.php
12主机有upload_file.php
重启http服务

测试:

haproxy 负载nfs haproxy -f_linux_28


haproxy 负载nfs haproxy -f_linux_29


看上传到了哪台主机上:

haproxy 负载nfs haproxy -f_重定向_30


可以看出读是在13主机上传(写)是在12主机,这就实现了读写分离。

三、通过pacemaker、corosync、haproxy实现高可用

pacemaker
pacemaker是一个开源的高可用资源管理器(CRM),位于HA集群架构中资源管理、资源代理(RA)这个层次,它不能提供底层心跳信息传递的功能,要想与对方节点通信需要借助底层的心跳传递服务,将信息通告给对方。(作为通信层和提供关系管理服务,心跳引擎,检测心跳信息)
Corosync
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。

将server11和server14作为节点
在两台主机同时操作以下步骤:

1.安装pacemaker+corosync

先搭建好仓库源

haproxy 负载nfs haproxy -f_linux_31


yum install pcs pacemaker corosync fence-agents-all -y 设置开启自启pcsd服务

systemctl enable --now pcsd.service

2.创建集群用户
echo westos | passwd --stdin hacluster(此用户在安装pcs时候会自动创建)

3.认证两个节点

pcs cluster auth server11 server14

输入 hacluster用户和刚设定的密码完成认证

haproxy 负载nfs haproxy -f_linux_32

4.创建并启动名为mycluster的集群,其中server11、server14为集群成员

pcs cluster setup --start --name mycluster server11 server14

haproxy 负载nfs haproxy -f_重定向_33


5.设置集群自启动

pcs cluster enable --all

pcs cluster start --all6.查看集群状态

pcs cluster status

haproxy 负载nfs haproxy -f_linux_34


7.检验Corosync的安装及当前corosync状态corosync-cfgtool -s

corosync-cmapctl| grep members

pcs status corosync

haproxy 负载nfs haproxy -f_haproxy 负载nfs_35


8.有WARNING警告,是因为默认tonith-enabled,但是还没有配置就会报错

先把它关掉pcs property set stonith-enabled=false

9.配置VIP资源:
pcs resource create vip ocf : heartbeat:IPaddr2 ip=172.25.0.100 op monitor interval=30s

测试:

haproxy 负载nfs haproxy -f_haproxy 负载nfs_36


当server11 down掉后pcs cluster stop

会自动调度到server14上

haproxy 负载nfs haproxy -f_负载均衡_37


当server11再启动时,vip不会在飘到server11上,这就是haproxy-pacemaker解决调度器冗余与keepalive-lvs的一大区别