实练(一)红帽RHEL7自带的高可用套件使用之一

回顾:上一章节我们讲解了LInux系统原生的lvs+keepalived的高可用套件

本章节我们来讲解红帽自己提供的高可用的套件,本章节所使用的系统是RHEL7.3,下一章节讲解RHEL6.5的使用

一  相关概念工具的理解

说明:本章节不打算太深入的讲解,一是水平不够,而是精力也不够,后续会补充!

(1)pacemaker简单介绍

Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器

         Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。

         从逻辑功能而言,pacemaker在集群管理员所定义的资源规则驱动下,负责集群中软件服务的全生命周期管理,这种管理甚至包括整个软件系统以及软件系统彼此之间的交互。

        Pacemaker在实际应用中可以管理任何规模的集群,由于其具备强大的资源依赖模型,这使得集群管理员能够精确描述和表达集群资源之间的关系(包括资源的顺序和位置等关系)。同时对于任何形式的软件资源,通过为其自定义资源启动管理脚本(资源代理),几乎都能作为资源对象而被 Pacemaker管理。

        Pacemaker仅是资源管理器,不提供集群心跳信息,由于任何高可用集群都必须具备心跳监测机制,因而很多初学者总会误以为 Pacemaker本身具有心跳检测功能,而事实上 Pacemaker的心跳机制主要基于 Corosync或 Heartbeat来实现

       pacemaker只是作为HA的资源管理器,所以不要想当然理解它能够直接管控资源,如果你的资源没有做脚本配置那么对于pacemaker来说它就是不可管理的。

      资源代理:RA

      实践证明:pacemaker+corosync则是比较成熟可靠的,本章节进行讲解

      目前pacemaker支持主流的操作系统

(2)pcs讲解

如果你用过RHEL6.5的套件,你就会明白pcs的含义,6.5中是以GUI的方式对其进行配置,而7系列则只提供命令行接口

最为常用的管理命令

      cluster        #配置集群选项和节点

    status         #查看当前集群资源和节点以及进程状态

    resource       #创建和管理集群资源

    constraint     #管理集群资源约束和限制

    property       #管理集群节点和资源属性

    config         #以用户可读格式显示完整集群配置信息

详细解释参照官网

corosync是集群框架引擎程序,pacemaker是高可用集群资源管理器,crmsh是pacemaker的命令行工具

二  实战

(0)实验环境的配置

(1)主机名和虚拟机的名字

server(主机-->hostname的名字)number    wzj(虚拟机的名字)number

(2)本地域名解析(几台全都做)和网络的配置

IP(number) server(number)

注意:一定要通过 ping 域名的方式看是否能通信!

(3)防火墙和selinux全部关闭,开机不自启!

(4)架构的简单说明

server1(主) server(备用) -->集群的资源管理器(LB)

server2 server 3        -->后端的资源服务器

client                  -->客户端

(1)由于是红帽自身提供的,所以不需要第三方的软件源,使用其自带的yum源,首先配置yum源

[rhel7.3]
name="rhel7.3 repo"
baseurl=http://IP/rhel7.3
gpgcheck=0
enabled=1

[HighAvailability]
name="HighAvailability"
baseurl=http://IP/rhel7.3/addons/HighAvailability
gpgcheck=0
enabled=1

[ResilientStorage]
name="ResilientStorage"
baseurl=http://IP/rhel7.3/addons/ResilientStorage
gpgcheck=0
enabled=1

# 主节点和备用的同上!

注意:一定要测试

(2)软件安装

yum install pacemaker corosync pcs -y

# 主和备用的都需要安装!

(3)免密认证

#(1)密钥
ssh-keygen 
#(2)免密认证-->比较粗暴(可以给server1的某个指定用户,不需要所有的用户)
ssh-copy-id server1
ssh-copy-id server4 #同上!
#(3)测试
ssh server1
ssh server4

# 注意:server1和server4左同样的事情!

(4)关于服务

systemctl start pcsd  #开启服务
systemctl enable pcsd #开机自启
systemctl status pcsd #查看状态

# sercer1和sercer4做同样的事情!

(5)安装了软件之后生成一个hacluster的用户,设置密码

[root@server1 yum.repos.d]# id hacluster
uid=189(hacluster) gid=189(haclient) groups=189(haclient)
[root@server1 yum.repos.d]# passwd hacluster
Changing password for user hacluster.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

# server1和server4双方密码必须一致!

(6)配置群集节点的认证(serevre1和server4),并创建集群!

实练(一)红帽RHEL7自带的高可用套件使用之一_第1张图片

(7)启动集群服务并开机自启

实练(一)红帽RHEL7自带的高可用套件使用之一_第2张图片

现象:此时server1和server4都在线,但是目前还没有资源(因为没有配置资源代理)

crm_mon #也可以测试

# 核心:2 nodes and 0 resources configured

补充:一定要做NTP的时间同步,由于二者的时间同步所以这里省略了!

(7)检验集群配置是否有错误

实练(一)红帽RHEL7自带的高可用套件使用之一_第3张图片

错误的原因:默认是开启fence机制的爆头机制的,但是目前还没有使用fence的机制,为了下面的对比实验!

补充false的情况下,分布式锁管理器 (DLM) 等资源以及依赖DLM 的所有服务(例如 cLVM2、GFS2 和 OCFS2)都将无法启动

2.11最下面的stonith的解释

一句话:没有 Fencing设备时,禁用STONITH 组件功能!

stonithd:集群 fence进程(Shoot The Other Node In The Head deamon)

no-quorum-policy:忽略投票机制,防止主节点来回的迁移

具体:server1故障,server4成为主节点,server1恢复,server4还是主节点,主节点不回切!

crm_verify命令:用来验证当前的集群配置是否有错误

(8)查看集群资源代理(RA)

[root@server1 yum.repos.d]# pcs resource standards
ocf
lsb
service
systemd

# pcs resource list ## 查看支持资源列表(systemed-->RHEL7独有的)

常见的资源代理类型

(9)开始资源的配置

Example: Create a new resource called 'VirtualIP' with IP address
            192.168.0.99, netmask of 32, monitored everything 30 seconds,
            on eth2:
# 核心:多块网卡时候选择网卡!
            pcs resource create VirtualIP ocf:heartbeat:IPaddr2 \
                ip=192.168.0.99 cidr_netmask=32 nic=eth2 \
                op monitor interval=30s

VIP资源的配置:采用OCF(open Cluster Framework--->开放式集群框架)资源管理!

实练(一)红帽RHEL7自带的高可用套件使用之一_第4张图片

操作创建资源,然后将资源添加到资源组中,并调整资源的顺序

服务:没有采用脚本的形式(rhel6,为了兼容),而是采用RHEL7的systemed来管理

说明:Systemd通过单元文件来启停和控制服务!

(10)测试

注意:因为resource manager会自动管理这些服务运行或停止,不能手动操作(例如:停止httpd服务、重启、设置为开机自启动)

目的:看主节点服务出现故障,提供资源服务器是不是跳转,看有没有心跳的检测

server1测试

pcs cluster stop server1

实练(一)红帽RHEL7自带的高可用套件使用之一_第5张图片

(11)加入fence机制

目的:解决资源和服务不同步的问题,让资源和服务在同一台后端服务器上!

注意:真实主机一定要开启fence的服务!

# (1)真机安装fence的软件
yum install fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 -y

# (2)进行fence的配置

fence_virtd -c # 核心是网络接口选择br0不是默认的private
# 说明:生成配置文件--->/ect/fence_virt.conf

# (3)根据配置文件生成key的位置

mkdir /etc/cluster #创建目录
dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 #生成key文件

# (4)server1和server4节点都创建目录

mkdir /etc/cluster #创建目录

# (5)真机复制key文件到server1和server4指定的目录

# (6)真机开启服务并查看状态

systemctl start fence_virtd.service 
systemctl status fence_virtd.service

server1和server2的操作

yum install fence-virt -y 

server1中添加fence并开启stonith的机制

# (1)查看支持的配置类型
stonith_admin -I
# (2)添加fence机制
pcs stonith create vmfence fence_xvm pcmk_host_map="server1:wzj1;server4:wzj4" op monitor interval=1min
# 格式:主机名(hostname):虚拟机的名字-->不要有特殊符号(.等-->按照表识符来定义)
# 添加错误-->通过pcs stonith delete vmfence来删除!注意删除crm_mon来检测一下!
# (3)开启爆头的策略
pcs property set stonith-enabled=true

现象

crm_mon

实练(一)红帽RHEL7自带的高可用套件使用之一_第6张图片

测试

# server1模拟把内核写崩溃了!
echo c > /proc/sysrq-trigger

目的:模拟主节点发生故障,fence的转义,以及主节点是否会开启!

实验现象

实练(一)红帽RHEL7自带的高可用套件使用之一_第7张图片

# server4模拟把内核写崩溃了!
echo c > /proc/sysrq-trigger

渐变过程

实练(一)红帽RHEL7自带的高可用套件使用之一_第8张图片

最后的结果

实练(一)红帽RHEL7自带的高可用套件使用之一_第9张图片

注意:因电脑的性能不同启动时间不一样,所以耐心等待下哟

三  相关原理参考

pacemaker讲解比较好的文章

有资源代理的部分讲解

pcs常用命令的讲解

排错

补充:了解云计算和集群的专业术语

四   排错

实练(一)红帽RHEL7自带的高可用套件使用之一_第10张图片

pcs stonith cleanup

# 一定要清理错误!

 

你可能感兴趣的:(运维)