使用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


验证仲裁