Haproxy -- 实现负载均衡(七层)

文章目录

    • 一、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 -- 实现负载均衡(七层)_第1张图片
Haproxy -- 实现负载均衡(七层)_第2张图片
systemctl enable --now haproxy.service
要显示它的80端口开启
Haproxy -- 实现负载均衡(七层)_第3张图片
测试:
realserver端不需要改任何配置,即可实现负载均衡
Haproxy -- 实现负载均衡(七层)_第4张图片
为了安全起见,给它在页面访问时加上用户密码认证
Haproxy -- 实现负载均衡(七层)_第5张图片

Haproxy -- 实现负载均衡(七层)_第6张图片

二、Haproxy的访问控制

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

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

编辑主配置文件/etc/haproxy/haproxy.cfg
Haproxy -- 实现负载均衡(七层)_第7张图片

systemctl restart haproxy.service
Haproxy -- 实现负载均衡(七层)_第8张图片

测试:
app:访问ip会访问到13主机的测试页
Haproxy -- 实现负载均衡(七层)_第9张图片
static:server12上有此图片,调度器上没有
Haproxy -- 实现负载均衡(七层)_第10张图片
在访问调度器下的images/*.jpg时,会显示此图片
Haproxy -- 实现负载均衡(七层)_第11张图片

2.设定调度器为备机

当后端都有问题时,调度器自己作为备机
Haproxy -- 实现负载均衡(七层)_第12张图片
systemctl restart haproxy.service

在这里插入图片描述
测试:
server13后端出现问题:
Haproxy -- 实现负载均衡(七层)_第13张图片
访问调度器显示的是自己的测试页
Haproxy -- 实现负载均衡(七层)_第14张图片
当后端好了后,访问页又会变回后端主机的测试页
Haproxy -- 实现负载均衡(七层)_第15张图片

3.访问黑白名单设定

访问测试页:

黑名单:
Haproxy -- 实现负载均衡(七层)_第16张图片
systemctl restart haproxy.service

测试:
Haproxy -- 实现负载均衡(七层)_第17张图片
白名单:
Haproxy -- 实现负载均衡(七层)_第18张图片
systemctl restart haproxy.service

测试:
Haproxy -- 实现负载均衡(七层)_第19张图片

访问控制相应页面

Haproxy -- 实现负载均衡(七层)_第20张图片
systemctl reload haproxy.service
测试:
Haproxy -- 实现负载均衡(七层)_第21张图片

4.访问重定向

发生错误时重定向:

Haproxy -- 实现负载均衡(七层)_第22张图片
systemctl reload haproxy.service
测试:
Haproxy -- 实现负载均衡(七层)_第23张图片

直接重定向:

Haproxy -- 实现负载均衡(七层)_第24张图片

systemctl reload haproxy.service

测试:
Haproxy -- 实现负载均衡(七层)_第25张图片

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

Haproxy -- 实现负载均衡(七层)_第26张图片
systemctl reload haproxy.service

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

测试:
Haproxy -- 实现负载均衡(七层)_第27张图片
Haproxy -- 实现负载均衡(七层)_第28张图片
看上传到了哪台主机上:
Haproxy -- 实现负载均衡(七层)_第29张图片
可以看出读是在13主机上传(写)是在12主机,这就实现了读写分离。

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

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

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

1.安装pacemaker+corosync
先搭建好仓库源
Haproxy -- 实现负载均衡(七层)_第30张图片
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 -- 实现负载均衡(七层)_第31张图片

4.创建并启动名为mycluster的集群,其中server11、server14为集群成员
pcs cluster setup --start --name mycluster server11 server14
Haproxy -- 实现负载均衡(七层)_第32张图片
5.设置集群自启动
pcs cluster enable --all
pcs cluster start --all

6.查看集群状态
pcs cluster status
Haproxy -- 实现负载均衡(七层)_第33张图片
7.检验Corosync的安装及当前corosync状态

corosync-cfgtool -s
corosync-cmapctl| grep members
pcs status corosync
Haproxy -- 实现负载均衡(七层)_第34张图片
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 -- 实现负载均衡(七层)_第35张图片
当server11 down掉后pcs cluster stop
会自动调度到server14上
Haproxy -- 实现负载均衡(七层)_第36张图片
当server11再启动时,vip不会在飘到server11上,这就是haproxy-pacemaker解决调度器冗余与keepalive-lvs的一大区别

  • GET

你可能感兴趣的:(企业实战,linux,运维,负载均衡)