设为首页 收藏本站
查看: 761|回复: 0

[经验分享] pacemaker+corosync+drbd实现自动故障转移集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-25 09:35:16 | 显示全部楼层 |阅读模式
1,两台cenots7.0服务器,我是用KVM虚拟机搭建的。
2,互相解析hosts文件
3,关闭iptables和selinux,ssh开启
4,配置yum源,安装pacemaker,corosync,drbd
5,配置drbd,选择procoto C ,复制模式,验证结果
6,配置corosync,基于crm管理VIP,FSsystem,DRBD块设备
7,验证结果,能否发生故障自动切换。


1,drbdAA  eth0 9.111.222.59  eth1 192.168.100.59
     drbdBB  eth0 9.111.222.60  eth1 192.168.100.60

2,两个节点执行
systemctl stop firewalld
systemctl disable firewalld

vim /etc/selinux/config
将enforing 改为disabled
reboot使其生效

3.两台节点执行
yum clean all
yum makecache
4.安装drbd
这里是yum安装,编译安装容易报错,需要两台节点执行
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org  安装yum源

yum install http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum install drbd84-utils kmod-drbd84  安装drbd
5,挂载硬盘,kvm及virtual,vmwarestation虚拟机挂载方法一样,两个节点分区一样,盘符一样,我这里都为8G,sda
6,fdisk -l 查看是否加载磁盘设备,为磁盘设备分区
fdisk /dev/sda
m
p
n
enter
enter
w

7,drbd用的端口是7789,生产环境中一般都配置iptables规则,实验环境关闭iptables即可
8,drbd配置文件是分为模块化的,drbd.conf是主配置文件,其它模块配置文件在/etc/drbd.d/下
9,[iyunv@drbdAA ~]# vim /etc/drbd.d/global_common.conf
global {
    usage-count no;
    # minor-count dialog-refresh disable-ip-verification
    # cmd-timeout-short 5; cmd-timeout-medium 121; cmd-timeout-long 600;
}

common {
    handlers {

        pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
        #fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
        # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
        # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
        # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
        #after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
    }

    startup {
        # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
        #wfc-timeout 30;
        #degr-wfc-timeout 30;
    }

    options {
        # cpu-mask on-no-data-accessible
    }

    disk {
         on-io-error detach; 同步错误的做法是分离   
         fencing resource-only;
    }

    net {
        protocol C;复制模式
        cram-hmac-alg "sha1";  设置加密算法sha1
        shared-secret "mydrbd";设置加密key
    }
   
    syncer {
        rate 1000M;  传输速率
    }
}
增加资源
vim /etc/drbd.d/r0.res
resource r0 {
        on drbdAA {
        device /dev/drbd0;
        disk   /dev/sda1;
        address  192.168.100.59:7789;
        meta-disk internal;
        }
        on drbdBB {
        device    /dev/drbd0;
        disk      /dev/sda1;
        address  192.168.100.60:7789;
        meta-disk internal;
        }
}
将配置文件同步到drbdBB
scp -r /etc/drbd.d/* root@drbdBB:/etc/drbd.d/
初始化资源
[iyunv@drbdAA ~]# drbdadm create-md r0  
Writing meta data...   
initializing activity log   
NOT initializing bitmap   
New drbd meta data block successfully created.

[iyunv@drbdBB ~]# drbdadm create-md web  
Writing meta data...   
initializing activity log   
NOT initializing bitmap   
New drbd meta data block successfully created.

drbdAA与drbdBB上启动DRBD服务
systemctl start drbd
查看一下启动状态
drbdAA:
[iyunv@drbdAA ~]# cat /proc/drbd  
version: 8.4.2 (api:1/proto:86-101)   
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10   
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----   
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:20970844
drbdBB:
[iyunv@drbdBB ~]# cat /proc/drbd  
version: 8.4.2 (api:1/proto:86-101)   
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by dag@Build64R6, 2012-09-06 08:16:10   
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----   
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:20970844
(8).命令查看一下
drbdAA:
[iyunv@drbdAA ~]# drbd-overview   
  0:web/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
drbdBB:
[iyunv@drbdBB ~]# drbd-overview   
  0:web/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:drbdsetup /dev/drbd0 primary –o ,也可以在要设置为Primary的节点上使用如下命令来设置主节点: drbdadm -- --overwrite-data-of-peer primary r0
(9).将drbdAA设置为主节点
[iyunv@drbdAA ~]#drbdadm primary --force r0
[iyunv@drbdAA ~]# drbd-overview  #drbdAA为主节点  
  0:web/0  SyncSource Primary/Secondary UpToDate/Inconsistent C r---n-   
    [>...................] sync'ed:  5.1% (19440/20476)M
注:大家可以看到正在同步数据,得要一段时间
[iyunv@drbdBB ~]# drbd-overview #node2为从节点  
  0:web/0  SyncTarget Secondary/Primary Inconsistent/UpToDate C r-----   
    [==>.................] sync'ed: 17.0% (17016/20476)M
同步完成后,查看一下
[iyunv@drbdAA ~]# drbd-overview  
  0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r-----
[iyunv@drbdBB ~]# drbd-overview  
  0:web/0  Connected Secondary/Primary UpToDate/UpToDate C r-----
格式化并挂载
[iyunv@drbdAA ~]# mkfs.ext4 /dev/drbd0
[iyunv@drbdAA ~]#mount /dev/drbd0 /mnt
[iyunv@drbdAA ~]#mount|grep /dev/drbd0
切换Primary和Secondary节点
说明:对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary。
drbdAA:
[iyunv@drbdAA ~]# umount /mnt/  
[iyunv@drbdAA ~]# drbdadm secondary r0
查看状态drbdAA
[iyunv@drbdAA ~]# drbd-overview   
  0:web/0  Connected Secondary/Secondary UpToDate/UpToDate C r-----
node2:
[iyunv@drbdBB ~]# drbdadm primary web
查看状态drbdBB
[iyunv@drbdBB ~]# drbd-overview   
  0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r-----   
[iyunv@drbdBB ~]# mount /dev/drbd0 /mnt/
使用下面的命令查看在此前在主节点上复制至此设备的文件是否存在
[iyunv@drbdBB ~]# ll /mnt/   
总用量 20   
-rw-r--r-- 1 root root  884 8月  17 13:50 inittab   
drwx------ 2 root root 16384 8月  17 13:49 lost+found
十三、DRBD 双主模式配置示例
drbd 8.4中第一次设置某节点成为主节点的命令
[iyunv@drbdAA ~]# drbdadm primary --force r0
配置资源双主模型的示例:  
resource r0 {
        net {  
                protocol C;   
                allow-two-primaries yes;   
        }
        startup {  
                become-primary-on both;   
        }
        disk {  
                fencing resource-and-stonith;   
        }
        handlers {  
                # Make sure the other node is confirmed   
                # dead after this!   
                outdate-peer "/sbin/kill-other-node.sh";   
        }
        on drbdAA {  
                device  /dev/drbd0;   
                disk    /dev/sda1;   
                address 192.168.100.59:7789;   
                meta-disk      internal;   
        }
        on drbdBB {  
                device  /dev/drbd0;   
                disk    /dev/sda1;  
                address 192.168.100.60:7789;   
                meta-disk      internal;   
        }   
}


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103879-1-1.html 上篇帖子: groupdel: cannot remove the primary group of user 'lxh1'的解决办法 下篇帖子: CentOS6.5实现rsync+inotify实时同步
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表