【Linux35】Pacemaker高可用集群+HAProxy+fence-virtd+nginx

1. Pacemaker简介


1.1 Pacemaker简介


Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器, Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。从逻辑功能而言, pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。 Pacemaker在实际应用中可以管理任何规模的集群,由于其具备强大的资源依赖模型,这使得集群管理员能够精确描述和表达集群资源之间的关系(包括资源的顺序和位置等关系)。同时,对于任何形式的软件资源,通过为其自定义资源启动与管理脚本(资源代理),几乎都能作为资源对象而被 Pacemaker管理。此外,需要指出的是, Pacemaker仅是资源管理器,并不提供集群心跳信息,由于任何高可用集群都必须具备心跳监测机制,因而很多初学者总会误以为 Pacemaker本身具有心跳检测功能,而事实上 Pacemaker的心跳机制主要基于 Corosync或 Heartbeat来实现

  • pcsd.service:服务名称

1.2 pcs 简介


pcs:Pacemaker集群的管理工具

  • Pacemaker社区推出了两个常用的集群管理命令行工具,即集群管理员最为常用的 pcs和 crmsh命令;
  • 此外,需要注意的是, pcs命令行的使用对系统中安装的 pacemaker和 corosync软件版本有一定要求,即 Pacemaker1.1.8及其以上版本, Corosync 2.0及其以上版本才能使用 pcs命令行工具进行集群管理

1.3 pcs常用管理命令


cluster:配置集群选项和节点
status:查看当前集群资源和节点以及进程状态
resource:创建和管理集群资源
constraint:管理集群资源约束和限制
property:管理集群节点和资源属性
config:以用户可读格式显示完整集群配置信息

2. 安装与配置


实验环境:1. 防火墙关闭 2. selinux为Disabled


两台服务器(之间做好免密):
server1:192.168.17.1
server4:192.168.17.4


  • 软件仓库配置

vim /etc/yum.repos.d/westos.repo

[dvd]
name=rhel7.6 BaseOS
baseurl=http://192.168.17.1/rhel7.6/
gpgcheck=0
[HighAvailability]
name=rhel7.6
baseurl=http://192.168.17.1/rhel7.6/addons/HighAvailability
gpgcheck=0

  • 安装pacemaker与pcs与psmisc与policycoreutils-python
yum install -y pacemaker pcs psmisc policycoreutils-python 
ssh server4 yum install -y pacemaker pcs psmisc policycoreutils-python

  • 永久开启服务
systemctl enable --now pcsd.service
ssh server4 systemctl enable --now pcsd.service

  • 设置密码
echo westos | passwd --stdin hacluster 
ssh server4 'echo westos | passwd --stdin hacluster'

  • 配置群集节点认证

pcs cluster auth server1 server4

在这里插入图片描述

  • 创建一个二节点的群集

pcs cluster setup --name mycluster server1 server4

  • 启动群集

pcs cluster start --all

扫描二维码关注公众号,回复: 12165943 查看本文章

pcs cluster enable --all


  • 禁用STONITH组件功能

pcs property set stonith-enabled=false

若是不禁用
pcs status 查看状态时会有警告
crm_verify -LV 验证群集配置信息会有错误

在这里插入图片描述

  • 创建VIP
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.17.100 op monitor interval=30s
#参数都可以通过pcs resource create --help查看

3. 测试


  • 在节点server1上查看,显示节点server1开启,并自动添加VIP

在这里插入图片描述

  • 当停止节点server1服务时,另一个节点server4自动接管,自动添加VIP

pcs cluster stop server1

在这里插入图片描述
在这里插入图片描述

  • 重新启动节点server1,资源不会回切,server4保持不变 继续接管

pcs cluster start server1

在这里插入图片描述

4. pacemaker与HAProxy


4.1 配置


  • 两个服务器节点均安装haproxy,且关闭haproxy服务,配置也相同
yum install -y haproxy
systemctl disable --now haproxy.service


  • 创建资源

pcs resource create haproxy systemd:haproxy op monitor interval=30s

在这里插入图片描述

  • 创建组(使两个资源被同一节点管理)

pcs resource group add hagroup vip haproxy:按照命令顺序,先管理vip,再是haproxy


  • 访问:http://172.25.17.100/status

在这里插入图片描述

4.2 测试1:关闭节点的pcs服务


  • 关闭节点server4发现,自动被空闲节点server1接管,server4重新开启服务后,不会回切

pcs node standby

pcs node unstandby

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 测试2:关闭haproxy服务


  • 关闭haproxy服务后,系统检测到又会自动开启,显示状态时会有日志显示haproxy关闭过

在这里插入图片描述

4.4 测试3:删除vip


  • 删除后,检测到vip被删除,会自动添加

在这里插入图片描述
在这里插入图片描述

4.5 测试4:禁掉硬件设备


ip link set down 网卡接口

  • 发现资源被自动接管到另一空闲节点server4,但是server1仍旧以为是自己接管,等到server1重启后才显示正常

在这里插入图片描述
在这里插入图片描述

5. fence(防止集群服务器假死)


fence作用:在HA集群坏境中,备用服务器B通过心跳线来发送数据包来看主服务器A是否还活着,主服务器A接收了大量的客户端访问请求,服务器A的CPU负载达到100%响应不过来了,资源已经耗尽,没有办法回复服务器B数据包时,(回复数据包会延迟),服务器B认为服务器A已经挂了,于是备用服务器B把资源夺过来,自己做主服务器,过了一段时间服务器A响应过来了,服务器A觉得自己是老大,服务器B觉得自己也是老大,他们两个就挣着抢夺资源,集群资源被多个节点占有,两个服务器同时向资源写数据,破坏了资源的安全性和一致性,这种情况的发生叫做“脑裂”。服务器A负载过重,响应不过来了,有了Fence机制,Fence会自动的把服务器A给kill掉,以阻止“脑裂”的发生。

原理:当意外原因导致主机异常或者宕机时,备机会首先调用FENCE设备,然后通过FENCE设备将异常主机重启或者从网络隔离,当FENCE操作成功执行后,返回信息给备机,备机在接到FENCE成功的信息后,开始接管主机的服务和资源。这样通过FENCE设备,将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上。

类型:硬件Fence:电源Fence,通过关掉电源来踢掉坏的服务器 软件Fence:Fence卡(智能卡),通过线缆、软件来踢掉坏的服务器


5.1 检测主机安装与配置


fence主机:192.168.17.250


  • 安装fence-virtd、fence-virtd-libvirt、fence-virtd-multicast,网络监听器、电源管理器、内核层面控制虚拟机

yum install -y fence-virtd

yum install -y fence-virtd-libvirt

yum install -y fence-virtd-multicast

  • 编写fence信息

fence_virtd -c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 创建目录/etc/cluster,切到其目录下,生成key文件

mkdir /etc/cluster

cd /etc/cluster

dd if=/dev/urandom of=fence_xvm.key bs=128 count=1:生成key文件

  • 重启fence_virtd服务,可以查看到1229端口

systemctl restart fence_virtd

  • 传输key文件到被监测节点(在所有节点提前创建/etc/cluster目录)

scp fence_xvm.key [email protected]:/etc/cluster/

scp fence_xvm.key [email protected]:/etc/cluster/

在这里插入图片描述

5.2 被检测节点配置(集群服务器)


  • 所有集群服务器安装fence-virt

yum install fence-virt.x86_64 -y

ssh server4 yum install fence-virt.x86_64 -y

  • 查看fence代理

stonith_admin -I

在这里插入图片描述

  • 添加fence

pcs stonith create vmfence fence_xvm pcmk_host_map="server1:vm1;server4:vm4" op monitor interval=60s
选项在pcs stonith describe fence_xvm都可以查看到
#pcmk_host_map的值以键值对书写,如下:
#hostname:虚拟机名称

在这里插入图片描述
在这里插入图片描述

  • 开启STONITH组件功能

pcs property set stonith-enabled=true

  • 验证群集配置信息

crm_verify -LV

在这里插入图片描述

5.3 测试1:损坏内核


  • 在节点server4测试:损坏内核,发现server4自动关机,再开启,实现监测功能!

echo c > /proc/sysrq-trigger

5.4 测试2:禁掉硬件设备


  • 禁掉server4硬件设备,发现server4自动关机,再开启,实现监测功能!

ip link set down eth0

6. lvs与nginx


  • 关闭pcs

pcs cluster stop --all

pcs cluster disable --all

  • 安装源码nginx

tar zxf nginx-1.18.0.tar.gz

cd nginx-1.18.0

yum install -y gcc pcre-devel openssl-devel:安装gcc、pcre-devel、openssl-devel

vim auto/cc/gcc`
#CFLAGS="$CFLAGS -g"
#注释此行(127行)可以使安装后的二进制文件更小

./configure --prefix=/usr/local/nginx --with-http_ssl_module:configure脚本,指定安装路径等参数

make && make install

  • 配置环境变量并启动服务

cd /usr/local/nginx/sbin/:变量配置此目录

vim .bash_profile:编写变量

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin

source .bash_profile:重新读取文件,使变量生效

nginx:启动服务

在这里插入图片描述
在这里插入图片描述

  • 配置文件

vim /usr/local/nginx/conf/nginx.conf

117     upstream westos {
    
    
118     server 172.25.17.2:80;
119     server 172.25.17.3:80;
120     }
121 
122 server {
    
    
123     listen 80;
124     server_name demo.westos.org;
125     location / {
    
    
126         proxy_pass http://westos;
127     }
128 }

nginx -t:检查语法错误

nginx -s reload:重新读取配置文件

在这里插入图片描述
在这里插入图片描述

  • 测试:在测试主机配置解析后再访问

vim /etc/hosts

192.168.17.1     demo.westos.org

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46069582/article/details/112645366