使用rhcs+xen+gnbd+clvm+quorum实现mysql高可用
client
|
vip
|--------------------------------------|
node1 node2 node3 <---DomU,客户机机器
|--------------------------------------|
|
共享存储 <---- Dom0,同时充当fence,gnbd+iscsi
gnbd ---> 仲裁磁盘
iscsi ---> clvm+gfs2 ,lamp的目录,包括:网站根目录,MySQL数据目录
仲裁
node1 node2 node3
X 集群继续可用
X X 集群不可用
node1 node2 node3 node4
X X 2:2集群不可用
X X X 1+(3) > 3 至少引入3个仲裁投票,才能保证集群工作
默认的仲裁策略下:有效节点必须多余无效节点。有效节点必须大于等于(N/2)+1,N就是集群中节点的个数。
为了让集群在剩下很少有效节点的情况下继续提供服务,就引入仲裁磁盘(外援的投票)。
仲裁磁盘是一个集群中共享的存储设备,然后被格式化成16个区间,供节点保存和更新各自的状态。节点还会去查看其他节点所在的区间,用来判断对应的节点是否健康。通过仲裁磁盘的判断和心跳判断,综合判断出该节点是否出故障,如果出故障就fence该节点。
一、在Dom0实现共享存储
iscsi :
<target iqn.2011-09.com.upl:hadata>
backing-store /dev/sda8
initiator-address 10.1.1.23
initiator-address 10.1.1.24
initiator-address 10.1.1.25
</target>
gnbd :
# gnbd_serv -n
# gnbd_export -e qdisk -c -d /dev/sda9
# gnbd_export -l -v
二、在Dom0实现fence功能
略
三、HA节点连接共享存储
1) iscsi
设备名字的持久化: udev , multipath
登录设备后,选择udev进行持久化
2) gnbd
kmod-gnbd-xen
实现仲裁磁盘,需要格式化成仲裁磁盘
# modprobe gnbd
# gnbd_import -i 10.1.1.22 -n
# ls /dev/gnbd/qdisk
格式化成qdisk
# mkqdisk -c /dev/gnbd/qdisk -l qdisk
其余节点:
# partprobe
# mkqdisk -L <--查看是否同步
所有节点启动qdiskd服务
# service qdiskd start
四、配置HA集群 (clvm+gfs2)
1)在其中一个节点配置(其中一台客户机机器)
Use a quorum disk 打勾
votes: 外援的票数 2 《--- 1+2 : 2 = 赞成票:反对票
Minumum Score: 1 <--集群中,至少存活一个节点,就可以让集群继续使用
device:
Program: <---辅助判断是自己问题还是仲裁磁盘出问题
/bin/ping -c 1 10.1.1.22
其他默认
2)添加节点,fence
3) 添加失效域,资源
资源:
vip
共享存储(iscsi+clvm+gfs2)挂载
实现规划好:
VG: lampVG
LV: lampdata
---> /dev/lampVG/lampdata
httpd,mysqld
增加资源的时候:
GFS , File System ID留空(工具会自动填写)
保存,需要修改一下:
把gfs改成gfs2,增加cluster_id, keyfile避免居然多集群之间冲突
<cman cluster_id="1235" keyfile="/etc/cluster/fence_xvm.key">
<clusterfs device="/dev/lampVG/lampdata" force_unmount="0" fsid="65016" fstype="gfs2" mountpoint="/lampdata" name="lampdata" options=""/>
同步配置文件
4) 启动cman
# service cman start
为什么仅仅启动cman而已,而不去启动rgmanager
5) 配置clvm
# lvmconf --enable-cluster
# service clvmd start
# pvcreate /dev/iscsi/hadata/part
# vgcreate lampVG /dev/iscsi/hadata/part
# lvcreate -n lampdata -L 1G lampVG
6) 格式化gfs2
# modprobe gfs2
# mkfs.gfs2 -p lock_dlm -t lampha:gfs2 -j 3 /dev/lampVG/lampdata
7) 其中一个节点挂载,并且进行mysql的初始化,目录权限的设定等,修改mysqld脚本
8) 设定http网站根目录
9) 启动rgmanager
验证仲裁