pacemaker+drbd主从

简介

  前面讲到corosync+pacemaker实现高可用以及drbd主从,能不能将两者结合在一起提供服务器呢?答案是肯定的,下面我们就来试验下。

corosync+pacemaker的基础环境请参考博文“corosync+pacemaker实现高可用”,我们在此基础上(Centos7.2)重新搭建drbd主从并将其加入到高可用环境中。

drbd

1.安装drbd

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install -y kmod-drbd84 drbd84-utils

2.划分lvm分区/dev/drbd/drbd-test

3.配置drbd

#pcmk-1 pcmk-2
vim /etc/drbd.d/drbd.res
resource drbd {
        protocol C;
        syncer {
                verify-alg sha1;
        }
        on pcmk-1 {
                device /dev/drbd0;
                disk /dev/drbd/drbd-test ;
                address 10.10.10.60:7789;
                meta-disk internal;
        }
        on pcmk-2 {
                device /dev/drbd0;
                disk /dev/drbd/drbd-test ;
                address 10.10.10.61:7789;
                meta-disk internal;
        }
}

4.初始化drbd并启动

#pcmk-1 pcmk-2
drbdadm create-md drbd
drbdadm up drbd

5.将pcmke-1提升为master,等待数据同步

[root@pcmk-1 drbd.d]# drbdsetup primary /dev/drbd0 --force
[root@pcmk-1 drbd.d]# drbd-overview 
 0:drbd/0  SyncSource Primary/Secondary UpToDate/Inconsistent 
    [>....................] sync'ed:  0.9% (3638204/3669868)K 
[root@pcmk-1 drbd.d]# drbd-overview 
 0:drbd/0  Connected Primary/Secondary UpToDate/UpToDate 
[root@pcmk-2 drbd.d]# drbd-overview 
 0:drbd/0  Connected Secondary/Primary UpToDate/UpToDate

6.格式化分区

#只在pcmk-1上
[root@pcmk-1 drbd.d]# mkfs.xfs /dev/drbd0
meta-data=/dev/drbd0             isize=256    agcount=4, agsize=229367 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=917467, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

#测试
[root@pcmk-1 drbd.d]# mount /dev/drbd0 /drbd
[root@pcmk-1 drbd.d]# umount /dev/drbd0 /drbd

pacemaker集群配置drbd

通常我们使用pcs进行资源管理,pcs可以将对资源的改动保存为cib资源文件并自动向cluster提交这些改动。我们可以通过pcs cluster cib查看当前的资源配置。

1.从cib创建资源文件

pcs cluster cib drbd_cfg

我们可以使用-f 参数,将对资源的改动保存到drbd_cfg文件中,直到通过pcs cluster cib-push命令才会使整个cluster更新。
2.创建drbd资源

[root@pcmk-1 drbd.d]# pcs -f drbd_cfg resource create drbd_data ocf:linbit:drbd drbd_resource=drbd op monitor interval=60s
[root@pcmk-1 drbd.d]# pcs -f drbd_cfg resource master drbd_data_clone drbd_data master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
#查看资源
[root@pcmk-1 drbd.d]# pcs -f drbd_cfg resource show
 ClusterIP  (ocf::heartbeat:IPaddr2):   Started pcmk-1
 Master/Slave Set: drbd_data_clone [drbd_data]
     Stopped: [ pcmk-1 pcmk-2 ]

3.配置cluster使drbd_data跟随ClusterIP运行在同一个节点上

pcs constraint colocation add drbd_data_clone with ClusterIP INFINITY

4.更新cluster并查看状态

[root@pcmk-1 ~]# pcs cluster cib-push drbd_cfg
CIB updated
[root@pcmk-1 drbd.d]# pcs status
Cluster name: mycluster
Last updated: Fri Jan 22 09:43:51 2016      Last change: Fri Jan 22 09:42:16 2016 by root via cibadmin on pcmk-1
Stack: corosync
Current DC: pcmk-1 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 3 resources configured

Online: [ pcmk-1 pcmk-2 ]

Full list of resources:

 ClusterIP  (ocf::heartbeat:IPaddr2):   Started pcmk-1
 Master/Slave Set: drbd_data_clone [drbd_data]
     Masters: [ pcmk-1 ]
     Slaves: [ pcmk-2 ]

PCSD Status:
  pcmk-1: Online
  pcmk-2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

我们可以看到drbd_data_clone作为master运行在pcmk-1,而drbd_data作为slave运行在pcmk-2

pacemaker集群配置filesystem

drbd配置完成后,需要挂载到master节点的挂载目录上,当master节点stop后,新提升为master的机器需要重新挂载filesystem,因此在cluster配置filesystem资源。
1.从cib创建资源文件

pcs cluster cib fs_cfg

2.创建drbd资源并制定相关策略

pcs -f fs_cfg resource create drbd_fs Filesystem device="/dev/drbd0" directory="/drbd" fstype="xfs"
#文件系统要跟随drbd_data_clone
pcs -f fs_cfg constraint colocation add drbd_fs with drbd_data_clone INFINITY with-rsc-role=Master

3.查看资源状态

[root@pcmk-1 ~]# pcs -f fs_cfg resource show
 ClusterIP  (ocf::heartbeat:IPaddr2):   Started pcmk-1
 Master/Slave Set: drbd_data_clone [drbd_data]
     Masters: [ pcmk-1 ]
     Stopped: [ pcmk-2 ]
 drbd_fs    (ocf::heartbeat:Filesystem):    Stopped
[root@pcmk-1 ~]# pcs -f fs_cfg constraint
Location Constraints:
Ordering Constraints:
  promote drbd_data_clone then start drbd_fs (kind:Mandatory)
Colocation Constraints:
  drbd_data_clone with ClusterIP (score:INFINITY)
  drbd_fs with drbd_data_clone (score:INFINITY) (with-rsc-role:Master)

4.更新cluster并查看状态

[root@pcmk-1 ~]# pcs cluster cib-push fs_cfg
[root@pcmk-1 ~]# pcs status
Cluster name: mycluster
Last updated: Fri Jan 22 14:21:59 2016      Last change: Fri Jan 22 12:18:26 2016 by root via crm_attribute on pcmk-2
Stack: corosync
Current DC: pcmk-2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 4 resources configured

Online: [ pcmk-1 pcmk-2 ]

Full list of resources:

 ClusterIP  (ocf::heartbeat:IPaddr2):   Started pcmk-1
 Master/Slave Set: drbd_data_clone [drbd_data]
     Masters: [ pcmk-1 ]
     Stopped: [ pcmk-2 ]
 drbd_fs    (ocf::heartbeat:Filesystem):    Started pcmk-1

PCSD Status:
  pcmk-1: Online
  pcmk-2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

至此,drbd及drbd的文件系统都在cluster中建立完毕,下面我们进行故障迁移测试一下。

故障迁移

模拟master故障,我们只需将master节点状态变成standby即可,在这种状态下corosync和pacemaker仍然会运行,但是不允许资源运行,因此在master上的资源会移动到slave,此时slave会提升为master,并接管源master上的所有资源。此种模式一般在管理状态下使用,例如用于升级cluster中的安装包等。
1.pacmker处于standby状态

[root@pcmk-1 ~]# pcs cluster standby pcmk-1

注意:此时pcmk-1的drbd状态是down的,因此资源没有运行。

2.查看集群状态

[root@pcmk-2 ~]# pcs status
Cluster name: mycluster
Last updated: Fri Jan 22 12:17:15 2016      Last change: Fri Jan 22 12:17:08 2016 by root via crm_attribute on pcmk-1
Stack: corosync
Current DC: pcmk-2 (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 4 resources configured

Node pcmk-1: standby
Online: [ pcmk-2 ]

Full list of resources:

 ClusterIP  (ocf::heartbeat:IPaddr2):   Started pcmk-2
 Master/Slave Set: drbd_data_clone [drbd_data]
     Masters: [ pcmk-2 ]
     Stopped: [ pcmk-1 ]
 drbd_fs    (ocf::heartbeat:Filesystem):    Started pcmk-2

PCSD Status:
  pcmk-1: Online
  pcmk-2: Online

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

此时所有的资源已经转移到pcmk-2上了。

3.恢复pcmk-1,资源并不会恢复到pcmk-1上。

[root@pcmk-1 ~]# pcs cluster unstandby pcmk-1
[root@pcmk-2 ~]# cat /proc/drbd
version: 8.4.7-1 (api:1/proto:86-101)
GIT-hash: 3a6a769340ef93b1ba2792c6461250790795db49 build by phil@Build64R7, 2016-01-12 14:29:40
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:0 nr:2056 dw:2056 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

注意:此时drbd的状态都为UpToDate,因为pcmk-1的资源已经运行

总结

1.drbd初始化后,需要用drbdadm up来启动,不要用systmectl start drbd,因为后续的启动会交由cluster来启动。
2.使用standby模式时,所有的资源都不会运行,因此cat /proc/drbd时,发现此节点drbd是不启动的,因此在新master上创建的数据暂时不会同步,当unstandby后,drbd会重新同步数据。

你可能感兴趣的:(HA高可用)