当前位置: 代码迷 >> 综合 >> haproxy-读写分离、pacemaker、配置fence
  详细解决方案

haproxy-读写分离、pacemaker、配置fence

热度:80   发布时间:2023-12-24 23:11:38.0

目录

  • 一、haproxy的读写分离
  • 二、pacemaker管理hapoxy集群
  • 三、配置fence防止文件系统脑裂

一、haproxy的读写分离

server2之前安装过php,现在给server3安装php
请添加图片描述
将测试文件放到共享目录下,并修改upload目录权限为777
请添加图片描述
修改upload_file.php文件的图片大小
请添加图片描述
修改haproxy中主配置文件 /etc/haproxy/haproxy.cfg,设定当写入数据时由server3提供服务,其余操作(读)默认由server2提供服务
请添加图片描述
请添加图片描述
将测试文件复制给server3的共享目录
请添加图片描述
测试访问(此时访问的是server2的php)
请添加图片描述
选择图片进行上传
请添加图片描述
此时可以看到,图片被上传到server3的upload里,而server2上没有
请添加图片描述

二、pacemaker管理hapoxy集群

pacemaker是高可用集群资源管理器,从逻辑功能而言, pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。
真机的addons目录里由高可用的相关插件
请添加图片描述
修改软件仓库
请添加图片描述
安装高可用插件
请添加图片描述
server1和server4实现免密登陆
请添加图片描述
请添加图片描述
将server1的仓库文件复制给server4,server4上也安装同样的高可用插件
请添加图片描述
在应用 pcs 进行管理的 pacemaker 集群中,每个节点都会启动一个 pcsd 守护进程
请添加图片描述
修改高可用集群(High Availability Cluster)hacluster认证用户密码
请添加图片描述
进行集群认证
请添加图片描述
在同一个节点上使用pcs集群设置来生成和同步crosync配置(设定集群名为mycluster,包含server1、 server4节点)
请添加图片描述
开启集群服务
请添加图片描述
设定开机自启动
请添加图片描述
查看集群状态(有一条警告)
请添加图片描述
此时会导致查看集群状态报错
请添加图片描述
因此关闭stonith,此时没有警告信息
请添加图片描述
server4安装haproxy
请添加图片描述
请添加图片描述
将server1的配置文件给server4一份
请添加图片描述
server4开启haproxy服务
请添加图片描述
访问成功
请添加图片描述
查看pcs支持的脚本和提供者
请添加图片描述
为server1添加 vip ,进行高可用测试
请添加图片描述
查看状态,可以看到vip在server1上:
请添加图片描述
访问vip可以看到默认server2在提供服务
请添加图片描述
将节点暂停
请添加图片描述
由于高可用,vip会飘到server4上
请添加图片描述
此时将server4上的vip删掉
请添加图片描述
30s后,server4上又会自动添加vip
请添加图片描述
此时查看pcs状态,会有警告信息
请添加图片描述
将haproxy服务交给集群之前,需要关闭服务并且关闭开机自启
请添加图片描述
将haproxy与集群建立连接,将haproxy添加到resource中
请添加图片描述
查看pcs状态,但此时ip 和haproxy分别在不同的虚拟机
请添加图片描述
因此我们需要把这两个参数所在的虚拟机固定下来,这样才能实现高可用;
建立资源管理组,约束资源,控制资源启动顺序,使其运行在统一服务器上
请添加图片描述
此时暂停server1节点
请添加图片描述
vip和haproxy都会转移到server4上
请添加图片描述
开启server1节点后
请添加图片描述
资源也不会回切
请添加图片描述
如果将server4的haproxy服务停掉
请添加图片描述
会发现由关于server4的失败提示
请添加图片描述
但是等一会再查看就会发现server4的haproxy服务又重启了,这是因为高可用会先检测状态,再启动服务,若是启动失败才会切换master。
请添加图片描述
如果我们故意让server4的系统崩溃(crush)
请添加图片描述
此时服务vip和haproxy都会转移到server1上
请添加图片描述
请添加图片描述
请添加图片描述
此时server4将一直处于卡死状态,除非手动关掉server4,则server4重启后才会重新加入集群中。但如果server4和server1都出问题了,由于相互失去了联系,都以为是对方出了故障,两个节点将会“本能”地争抢“共享资源”,就会发生严重后果:或者共享资源被瓜分、两边“服务”都起不来了;或者两边“服务”都起来了,但同时读写“共享存储”,导致数据损坏。因此需要使用fence结合pacemaker防止文件系统脑裂

三、配置fence防止文件系统脑裂

真机安装fence组件
请添加图片描述
请添加图片描述
fence_virtd -c编写新的fence信息
请添加图片描述
其余部分直接回车,知道下图需手动输入br0
请添加图片描述
它将会在/etc/cluster生成一个密钥文件
请添加图片描述
所以我们需要建立这个目录,生成密钥文件后重启服务
请添加图片描述请添加图片描述
server1和server4安装fence客户端
请添加图片描述
查看模块
请添加图片描述
由于密钥文件将存放于此目录
请添加图片描述
同样的需要建立这个目录
请添加图片描述
把刚才生成的密钥给资源管理的服务器server1,server4
请添加图片描述
请添加图片描述
添加fence模块,连接真机与虚拟机;
启动stonith :
stonith是“shoot the other node in the head”的首字母简写,它是Heartbeat软件包的一个组件,它允许使用一个远程或“智能的”连接到健康服务器的电源设备,自动重启失效服务器的电源。
请添加图片描述
在这里插入图片描述
测试:打开server1的虚拟窗口观察变化
在这里插入图片描述
此时server1会自动重启,而前面的keepalived需要手动重启!
查看pcs状态:由于server1内核崩溃了,所以vip和haproxy转移到了server4上,而fence服务修复了server1,所以会停留在server1上
在这里插入图片描述
模拟网卡失效,同样的对应的服务器也会自动重启,之后加入集群
在这里插入图片描述

  相关解决方案