linux kvm虚拟化ha,基于RHEL6.3-KVM三节点虚拟机命令行搭建HA

接下来开始做关于HA的配置

我是在实验中途创建的仲裁,这里先将仲裁盘的创建记录下来。仲裁的作用裁定两个以上节点到底由谁来接管服务,以投票的形式来决定最终服务节点,算是一种较民主地概念在IT环境的应用。当某个提供服务的节点出现问题时,其它两个节点由配置好的仲裁探测法来测试另外哪个节点的性能更好,票数也就更多,就由该节点来接管服务。我在配之前还在想如果设定不同的故障域是不是就不用配了,后为发现如果是双节点以上不配仲裁的话,cman服务根本起不来,呵呵(看来不能太天真)。

在三节点的任意一个节点都可以,就用s1吧。格式化仲裁盘

mkqdisk -c /dev/sda1 -l qdiskWeb //qdiskWeb是仲裁盘的标识,这个十分重要

如果怕sda1在某些情况下会变,可以固定盘符

udevadm info -q all -n /dev/sda1//查看sda1设备在被内核识别时候的信息

从众多信息中找到ID_SCSI_SERIAL=beaf11,修改/etc/udev/rules.d/99-iscsi.rules文件,添加信息

KERNEL=="sd[a-z]",ENV{ID_SCSI_SERIAL}=="beaf11",NAME="disk_fs"

上述的NAME功能是,设置生效后,会发现/dev/sda1变成了/dev/disk_fs

保存退出,使设置生效udevadm trigger,不过这个我没做,就是说说方法而已。

格式化完仲裁盘后,可以在三节点上都可以查看仲裁盘信息

mkqdisk -L

bb9dae8609f812ba18c91ef2efc32f03.png

再有就是在配HA之前要为fence设备做些准备,如果要在KVM使用fence设备,必须要用虚拟化层去执行每次的fence动作。RHCS对虚拟机默认的fence设备是fence_virtsh,KVM支持的设备是fence_apc,所以根据开始提到的CSDN博客的指导,我将fence设备“偷龙转凤”

mv /usr/sbin/fence_apc /usr/sbin/fence_apc.bak

ln -s /usr/sbin/fence_virsh /usr/sbin/fence_apc//其实就做个软链接

从这里可以看出,是三节点共用一个fence设备

接下来将三个节点的ricci服务启用,并设置为开机自启,创建ricci用户密码

/etc/init.d/ricci start & chkconfig ricci on

passwd ricci//密码我填的是123456

在s1上用命令行正式创建HA(其它节点也行)

ccs -h s1 --createcluster web_cluster//创建集群,名字是web_cluster

ccs -h s1 --addnode s1.example.com//添加集群节点

ccs -h s1 --addnode s2.example.com

ccs -h s1 --addnode s3.example.com

ccs -h s1 --lsnodes//查看创建的节点

s1.example.com: nodeid=1

s2.example.com: nodeid=2

s3.example.com: nodeid=3

//nodeid是创建时集群为每个节点创建的ID号

ccs -h s1 --addfencedev virsh_fence//virsh_fence是fence设备的名称

ccs -h s1 --addfencedev virsh_fence agent=fence_apc ipaddr=192.168.122.1 login=root passwd=123456

//fence_apc就是"偷龙转凤"所做的fence设备,IP填写server6的地址,用户名填root,密码填root用户密码,其实这里有个默认参数action,即fence动作,默认是重启

ccs -h s1 --addmethod fence_01 s1.example.com//为三节点创建fence设备,fence_0x为节点fence设备名称

ccs -h s1 --addmethod fence_02 s2.example.com

ccs -h s1 --addmethod fence_03 s3.example.com

将节点与fence设备做关联

ccs -h s1 --addfenceinst virsh_fence s1.example.com fence_01 port=RHEL6.3-HA1

ccs -h s1 --addfenceinst virsh_fence s2.example.com fence_02 port=RHEL6.3-HA2

ccs -h s1 --addfenceinst virsh_fence s3.example.com fence_03 port=RHEL6.3-HA3

//这里要注意的是port参数内容要填KVM创建的虚拟机名称

ccs -h s1 --lsfenceinst//查看刚刚创建的fence设备

s1.example.com

fence_01

virsh_fence: port=RHEL6.3-HA1

s2.example.com

fence_02

virsh_fence: port=RHEL6.3-HA2

s3.example.com

fence_03

virsh_fence: port=RHEL6.3-HA3

ccs -h s1 --addfailoverdomain web_doamin restricted ordered=0 nofailback

//创建故障域web_doamin,有限制无序,且失效节点重新加入集群后服务无需返回该节点

ccs -h s1 --addfailoverdomainnode web_doamin s1.example.com 1

ccs -h s1 --addfailoverdomainnode web_doamin s2.example.com 1

ccs -h s1 --addfailoverdomainnode web_doamin s3.example.com 1

//创建故障域节点,因为是无序,所以后边的排序号码都是1

ccs -h s1 --lsfailoverdomain//查看创建的故障域

web_domain: restricted=1, ordered=0, nofailback=1

s1.example.com: priority=1

s2.example.com: priority=1

s3.example.com: priority=1

ccs -h s1 --addresource ip address=192.168.122.253 monitor_link=1//创建VIP资源,且需监控资源

ccs -h s1 --addresource fs name=web_share fstype=ext4 device=/dev/sda2 mountpoint=/mnt force_unmount=1 self_fence=1

//创建文件系统资源,即挂载含有站点文件的ISCSI盘,force_unmount表示节点失效后强制卸载,self_fence表示强制卸载无效后对该节点做fence动作

ccs -h s1 --addresource script name=web_script file=/etc/init.d/httpd

//创建apache2服务的启动脚本资源

ccs -h s1 --addservice web_service domain=web_doamin recovery=relocate

//web_service表示服务名称,relocate表示若节点失效先尝试在该节点重启服务再切换节点重启服务

ccs -h s1 --addsubservice web_service ip ref=192.168.122.253//创建服务的子服务

ccs -h s1 --addsubservice web_service ip:fs ref=web_share//创建子服务的子服务

ccs -h s1 --addsubservice web_service ip:fs:script ref=web_script//同上

最后的结构是web_service服务先启VIP,再挂载iscsi,最后启动apache2

ccs -h s1 --lsservices//查看创建的所有服务与资源

service: name=web_service

ip: ref=192.168.122.253

fs: ref=web_share

script: ref=web_script

resources:

ip: monitor_link=1, address=192.168.122.253

fs: name=web_share, self_fence=1, force_unmount=1, fstype=ext4, device=/dev/sda2, mountpoint=/mnt

script: name=web_script, file=/etc/init.d/httpd

ccs -h s1 --setquorumd label=qdiskWeb//设置仲裁盘

ccs -h s1 --addheuristic interval=1 program="ping -c 1 192.168.122.1" tko=3

//创建仲裁探测法,以每秒ping 本地虚拟机为探测方法,成功一次能1票,最多3次ping不通节点失效,其实还有一个参数score表示每成功一次得票多少,默认为1,所以没做设置;还有 min_score,表示最小得票数,默认为0,也没做设置

ccs -h s1 --lsquorum//查看创建的仲裁盘与仲裁探测法

Quorumd: label=qdiskWeb

heuristic: program=ping -c 1 192.168.122.1, interval=1, tko=3

本来以为到这里算是设置成功,结果发现少了一样

ccs -h s1 --setcman expected_votes=5

//总票数为5,三节点在启动后各占一票,若有节点失效,哪个节点的得票数能超过5的一半即启动服务

按自己理解的说的,有可能不对,呵呵

所有配置完成,三台节点一起启动cman服务。注意,是一起

/etc/init.d/cman start

查看集群状态

clustat

2d6bff1a147c18a462cd7bb81a51cda3.png

看到三台与仲裁盘启动成功,若是不配仲裁,CMAN服务启动会报错

再启动服务

/etc/init.d/rgmanager start

576846279e18314144f64bfd0364da0c.png

可以看到,现在服务是在s3节点启动的。现在来看看页面能否正常显示

9e1ba1b53e37f6c58b497d16d024492e.png

页面显示正常,这个浏览器我是在server6 虚拟机上打开的。现在来将s3的网卡当掉,看看fence与服务切换情况

ssh到s3上,ifdown eth0

94f235fe262759286affac8ae67c160f.png

s3已经是离线状态,正在重启。再来看看服务

4c021a5f3fcd0c936e79bc69e7a07670.png

我截图速度较慢,可以看到服务已经切到s2上,而s3这时已经重启完了,这时再次浏览VIP能够成功看到页面内容。之后我试过停apache2服务,发现只要节点不重启,就会在原节点重新启动服务。由于只有一个网卡,心跳即业务线,所以测试到此结束!0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值