7层负载平衡:
7层负载平衡是更复杂的负载均衡网络流量的方法是使用第7层(应用层)负载均衡。使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许您在同一域和端口下运行多个Web应用程序服务器。
yum install haproxy -y
编辑配置文件/etc/haproxy/haproxy.cfg
systemctl enable --now haproxy.service
要显示它的80端口开启
测试:
realserver端不需要改任何配置,即可实现负载均衡
为了安全起见,给它在页面访问时加上用户密码认证
根据调度器haproxy配置文件里的设定控制,在访问调度器时会有不同的结果
编辑主配置文件/etc/haproxy/haproxy.cfg
systemctl restart haproxy.service
测试:
app:访问ip会访问到13主机的测试页
static:server12上有此图片,调度器上没有
在访问调度器下的images/*.jpg时,会显示此图片
当后端都有问题时,调度器自己作为备机
systemctl restart haproxy.service
测试:
server13后端出现问题:
访问调度器显示的是自己的测试页
当后端好了后,访问页又会变回后端主机的测试页
黑名单:
systemctl restart haproxy.service
测试:
白名单:
systemctl restart haproxy.service
systemctl reload haproxy.service
测试:
systemctl reload haproxy.service
测试:
systemctl reload haproxy.service
systemctl reload haproxy.service
在两台后端都安装上php,支持此语言模板解析
yum install php -y
13主机有index.php
12主机有upload_file.php
重启http服务
测试:
看上传到了哪台主机上:
可以看出读是在13主机上传(写)是在12主机,这就实现了读写分离。
pacemaker
pacemaker是一个开源的高可用资源管理器(CRM),位于HA集群架构中资源管理、资源代理(RA)这个层次,它不能提供底层心跳信息传递的功能,要想与对方节点通信需要借助底层的心跳传递服务,将信息通告给对方。(作为通信层和提供关系管理服务,心跳引擎,检测心跳信息)
Corosync
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。
将server11和server14作为节点
在两台主机同时操作以下步骤:
1.安装pacemaker+corosync
先搭建好仓库源
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用户和刚设定的密码完成认证
4.创建并启动名为mycluster的集群,其中server11、server14为集群成员
pcs cluster setup --start --name mycluster server11 server14
5.设置集群自启动
pcs cluster enable --all
pcs cluster start --all
6.查看集群状态
pcs cluster status
7.检验Corosync的安装及当前corosync状态
corosync-cfgtool -s
corosync-cmapctl| grep members
pcs status corosync
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
测试:
当server11 down掉后pcs cluster stop
会自动调度到server14上
当server11再启动时,vip不会在飘到server11上,这就是haproxy-pacemaker解决调度器冗余与keepalive-lvs的一大区别