DRBD 高可用配置详解(转)

高可用性集群解释:
一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。
今天来做个Heartbeat+DRBD+NFS的高可用文件系统
1、实验VMware虚拟机2台 同时安装CentOS 6.6 x86_64的系统


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

#测试机1

[[email protected] ~]# ifconfig | sed -rn ‘/^[^ \t]/{N;s/(^[^ ]*).*addr:([^ ]*).*/\1 \2/p}‘ | awk ‘$2!~/^192\.168|^10\.|^127|^0|^$/{print $1"="$2}‘

eth0=172.16.6.100

eth1=172.16.6.101

[[email protected] ~]# hostname

ZhongH6100.wxjr.com.cn

[[email protected] ~]# cat /etc/centos-release

CentOS release 6.6 (Final)

[[email protected] ~]#

#测试机2

[[email protected] ~]# ifconfig | sed -rn ‘/^[^ \t]/{N;s/(^[^ ]*).*addr:([^ ]*).*/\1 \2/p}‘ | awk ‘$2!~/^192\.168|^10\.|^127|^0|^$/{print $1"="$2}‘

eth0=172.16.7.100

eth1=172.16.7.101

[[email protected] ~]# hostname

ZhongH7100.wxjr.com.cn

[[email protected] ~]# cat /etc/centos-release

CentOS release 6.6 (Final)

[[email protected] ~]#

2、修改主机名、指定hostname能被两主机互相访问、同步时间
 #下面实验的时候大家仔细看命令是在哪个服务器上执行的仔细区分

[[email protected] ~]还是[[email protected] ~]

如果是[[email protected] ~]那么就是两台机器都需要运行的


1

2

3

4

5

6

7

8

[[email protected] ~]# sed -ri ‘s/^(HOSTNAME=).*/\1ZhongH6100.wxjr.com.cn/‘ /etc/sysconfig/network

[[email protected] ~]# hostname ZhongH6100.wxjr.com.cn

[[email protected] ~]# sed -ri ‘s/^(HOSTNAME=).*/\1ZhongH7100.wxjr.com.cn/‘ /etc/sysconfig/network

[[email protected] ~]# hostname ZhongH7100.wxjr.com.cn

[[email protected] ~]# echo "172.16.7.100    ZhongH7100.wxjr.com.cn ZhongH7100" >> /etc/hosts

[[email protected] ~]# echo "172.16.6.100    ZhongH6100.wxjr.com.cn ZhongH6100" >> /etc/hosts

#下面这里就不单独做世界同步服务器了 直接ntp来做网络同步

[[email protected] ~]# echo "*/5 * * * * `which ntpdate` pool.ntp.org >/dev/null 2>&1" >> /var/spool/cron/root


3、安装DRBD
DRBD简介
 DRBD的全称为:DistributedReplicatedBlockDevice(DRBD)分布式块设备复制DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。
 DRBD工作机制
 Drbd负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。目前,drbd每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持两个节点进行读写存取。
 DRBD协议说明
 A数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
 B收到接收确认就认为完成了写入操作。
 C收到写入确认就认为完成了写入操作
 DRBD官方下载地址:http://oss.linbit.com/drbd/

下载 : DRBD-8.4.3.tar.gz

①、准备工作

1

2

3

4

5

[[email protected] ~]# yum clean all && yum makecache

[[email protected] ~]# yum groupinstall "Development tools" "Server Platform Development" -y && yum update -y

[[email protected] ~]# uname -r #查看内核版本

2.6.32-504.16.2.el6.centos.plus.x86_64

[[email protected] ~]# yum install kernel-devel kernel-headers flex #注意:安装kernel-devel一定要和你uname -r 看到的内核版本一致


②、编译安装DRBD


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

[[email protected] ~]# cd /tmp && wget http://www.dwhd.org/wp-content/uploads/2015/05/drbd-8.4.3.tar.gz

[[email protected] tmp]# tar xf drbd-8.4.3.tar.gz

[[email protected] tmp]# cd drbd-8.4.3

[[email protected] drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --sysconfdir=/etc/drbd \

--datarootdir=/usr/local/share/ --with-utils --with-km       #--with-km是启用内核模块

[[email protected] drbd-8.4.3]# make KDIR=/usr/src/kernels/`uname -r`/

[[email protected] drbd-8.4.3]# make install

[[email protected] drbd-8.4.3]# mkdir -p /usr/local/drbd/var/run/drbd

[[email protected] drbd-8.4.3]# cp -a /etc/drbd/rc.d/init.d/drbd  /etc/rc.d/init.d/

[[email protected] drbd-8.4.3]# chkconfig --add drbd

[[email protected] drbd-8.4.3]# chkconfig drbd on

[[email protected] drbd-8.4.3]# cd drbd

[[email protected] drbd]# make clean

[[email protected] drbd]# make KDIR=/usr/src/kernels/`uname -r`/

[[email protected] drbd]# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/

[[email protected] drbd]# modprobe drbd

[[email protected] drbd]# lsmod | grep drbd   #查看模块是否加载成功

drbd                  310172  0

libcrc32c               1246  1 drbd

③、准备同步使用的磁盘
准备一个分区以备后面实验用,下面是我在sdb磁盘上新建了一个sdb1的主分区大小事30G

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

[[email protected] drbd]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=1 情况sdb磁盘上的分区表

[[email protected] drbd]# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to

         switch off the mode (command ‘c‘) and change display units to

         sectors (command ‘u‘).

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-7832, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-7832, default 7832): +30G

Command (m for help): p

Disk /dev/sdb: 64.4 GB, 64424509440 bytes

255 heads, 63 sectors/track, 7832 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000a8ddb

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1        3917    31463271   83  Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[[email protected] drbd]#

④、制作环境变量文件、备份原始配置文件、修改配置文件、定义节点上的资源

1

2

3

4

5

[[email protected] drbd]# cd /etc/drbd/drbd.d

[[email protected] drbd.d]# pwd

/etc/drbd/drbd.d

[[email protected] drbd.d]# echo "export PATH=/usr/local/drbd/sbin:\$PATH" > /etc/profile.d/drbd.8.4.3.sh

[[email protected] drbd.d]# . /etc/profile.d/drbd.8.4.3.sh


1

2

3

4

5

[[email protected] drbd.d]# cp global_common.conf global_common.conf_`date +%Y%m%d`_backup

[[email protected] drbd.d]# ls -l

总用量 8

-rw-r--r-- 1 root root 1836 5月  23 21:36 global_common.conf

-rw-r--r-- 1 root root 1836 5月  23 21:45 global_common.conf_20150523_backup

⑤、修改全局配置文件

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

[[email protected] drbd.d]# :>global_common.conf

#然后将配置文件改成下面的

[[email protected] drbd.d]# grep -Ev ‘(^#|^\s+#)‘ global_common.conf

global {

        usage-count no;

}

common {

        protocol C;

        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";

        }

        startup {

                wfc-timeout 120;

                degr-wfc-timeout 120;

        }

        disk {

                on-io-error detach;

                fencing resource-only;

        }

        net {

                cram-hmac-alg "sha1";

                shared-secret "mydrbdlab";

        }

        syncer {

                rate 100M;

        }

}



 ⑥、定义节点上的资源

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

[[email protected] drbd.d]# vi web.res #写入下面的内容,具体视情况做更改

resource web { #这个web是定义资源的名字

    on ZhongH6100.wxjr.com.cn {          #on开头,后面是主机名称

        device /dev/drbd0;           #drbd设备名称

        disk /dev/sdb1;              #drbd0使用的磁盘分区为sdb1

        address 172.16.6.101:7789;   #设置drbd监听地址与端口

        meta-disk internal;

    }

    on ZhongH7100.wxjr.com.cn {          #on开头,后面是主机名称

        device /dev/drbd0;           #drbd设备名称

        disk /dev/sdb1;              #drbd0使用的磁盘分区为sdb1

        address 172.16.7.101:7789;   #设置drbd监听地址与端口

        meta-disk internal;

    }

}

⑦、初始化资源

1

2

3

4

5

[[email protected] drbd.d]# drbdadm create-md web

Writing meta data...

initializing activity log

NOT initializing bitmap

New drbd meta data block successfully created.

⑧、启动DRBD服务

01

02

03

04

05

06

07

08

09

10

11

12

[[email protected] drbd.d]# service drbd restart

Stopping all DRBD resources: .

Starting DRBD resources: [

     create res: web

   prepare disk: web

    adjust disk: web

     adjust net: web

]

outdated-wfc-timeout has to be shorter than degr-wfc-timeout

outdated-wfc-timeout implicitly set to degr-wfc-timeout (120s)

.

[[email protected] drbd.d]#


查看节点 此时节点都是Secondary


1

2

3

[[email protected] drbd.d]# drbdadm role web

Secondary/Secondary

[[email protected] drbd.d]#


1

2

3

[[email protected] drbd.d]# drbdadm role web

Secondary/Secondary

[[email protected] drbd.d]#

由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
drbdadm -- --overwrite-data-of-peer primary web #命令解释:调整当前节点上的web资源为主节点

⑨、调整172.16.6.101/172.16.6.100也就是node1也主节点

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[[email protected] drbd.d]# drbdadm role web

Secondary/Secondary

[[email protected] drbd.d]# drbdadm -- --overwrite-data-of-peer primary web

[[email protected] drbd.d]# drbd-overview

  0:web/0  SyncSource Primary/Secondary UpToDate/Inconsistent C r---n-

        [>....................] sync‘ed:  1.4% (30328/30724)M

[[email protected] drbd.d]# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2015-05-23 21:36:33

 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-

    ns:2462744 nr:0 dw:0 dr:2466464 al:0 bm:150 lo:0 pe:3 ua:3 ap:0 ep:1 wo:f oos:29001596

        [>...................] sync‘ed:  7.9% (28320/30724)M

        finish: 0:04:44 speed: 101,772 (91,136) K/sec

[[email protected] drbd.d]# drbdadm role web

Primary/Secondary

[[email protected] drbd.d]# cat /proc/drbd

version: 8.4.3 (api:1/proto:86-101)

GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by [email protected], 2015-05-23 21:36:33

 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----

    ns:9051136 nr:0 dw:0 dr:9051808 al:0 bm:551 lo:3 pe:8 ua:3 ap:0 ep:1 wo:f oos:22419324

        [====>...............] sync‘ed: 28.8% (21892/30724)M

        finish: 0:04:06 speed: 90,776 (74,732) K/sec

#由此可见:进度已经完成了28.8%,传输速度大概70M/S

#注:ds是磁盘状态信息 dw是磁盘写信息 dr是磁盘读信息


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

[[email protected] drbd.d]# drbdadm cstate web

SyncSource  #SyncSource:以本节点为同步源的同步正在进行

#资源的连接状态;一个资源可能有以下连接状态中的一种

#StandAlone 独立的:网络配置不可用;资源还没有被连接或是被管理断开(使用 drbdadm disconnect 命令),或是由于出现认证失败或是脑裂的情况

#Disconnecting 断开:断开只是临时状态,下一个状态是StandAlone独立的

#Unconnected 悬空:是尝试连接前的临时状态,可能下一个状态为WFconnection和WFReportParams

#Timeout 超时:与对等节点连接超时,也是临时状态,下一个状态为Unconected悬空

#BrokerPipe:与对等节点连接丢失,也是临时状态,下一个状态为Unconected悬空

#NetworkFailure:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空

#ProtocolError:与对等节点推动连接后的临时状态,下一个状态为Unconected悬空

#TearDown 拆解:临时状态,对等节点关闭,下一个状态为Unconected悬空

#WFConnection:等待和对等节点建立网络连接

#WFReportParams:已经建立TCP连接,本节点等待从对等节点传来的第一个网络包

#Connected 连接:DRBD已经建立连接,数据镜像现在可用,节点处于正常状态

#StartingSyncS:完全同步,有管理员发起的刚刚开始同步,未来可能的状态为SyncSource或PausedSyncS

#StartingSyncT:完全同步,有管理员发起的刚刚开始同步,下一状态为WFSyncUUID

#WFBitMapS:部分同步刚刚开始,下一步可能的状态为SyncSource或PausedSyncS

#WFBitMapT:部分同步刚刚开始,下一步可能的状态为WFSyncUUID

#WFSyncUUID:同步即将开始,下一步可能的状态为SyncTarget或PausedSyncT

#SyncSource:以本节点为同步源的同步正在进行

#SyncTarget:以本节点为同步目标的同步正在进行

#PausedSyncS:以本地节点是一个持续同步的源,但是目前同步已经暂停,可能是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步

#PausedSyncT:以本地节点为持续同步的目标,但是目前同步已经暂停,这可以是因为另外一个同步正在进行或是使用命令(drbdadm pause-sync)暂停了同步

#VerifyS:以本地节点为验证源的线上设备验证正在执行

#VerifyT:以本地节点为验证目标的线上设备验证正在执行

⑩、在主节点上创建文件系统、挂载主节点上的文件系统、在主节点分区中新建个文件

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

[[email protected] drbd.d]# mke2fs -t ext4 -L drbdweb /dev/drbd0

mke2fs 1.41.12 (17-May-2010)

文件系统标签=drbdweb

操作系统:Linux

块大小=4096 (log=2)

分块大小=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

1966560 inodes, 7865567 blocks

393278 blocks (5.00%) reserved for the super user

第一个数据块=0

Maximum filesystem blocks=4294967296

241 block groups

32768 blocks per group, 32768 fragments per group

8160 inodes per group

Superblock backups stored on blocks:

        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

        4096000

正在写入inode表: 完成

Creating journal (32768 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 33 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[[email protected] drbd.d]# mkdir /DRBD

[[email protected] drbd.d]# mount /dev/drbd0 /DRBD/

[[email protected] drbd.d]# echo -e "Hello World\nLegion\t$(date "+%Y-%m-%d %H:%M:%S")" > /DRBD/testDRBDfile

[[email protected] drbd.d]# cat /DRBD/testDRBDfile

Hello World

Legion  2015-05-23 22:45:07

[[email protected] drbd.d]#

?、更换node1为从节点、node2为主节点
 卸载DRBD分区且更换node1为从节点

1

2

3

4

5

[[email protected] drbd.d]# umount /DRBD/

[[email protected] drbd.d]# drbdadm secondary web

[[email protected] drbd.d]# drbdadm role web

Secondary/Secondary

[[email protected] drbd.d]#


1

2

3

4

5

6

[[email protected] drbd.d]# drbdadm primary web

[[email protected] drbd.d]# drbdadm role web

Primary/Secondary

[[email protected] drbd.d]# drbd-overview

  0:web/0  Connected Primary/Secondary UpToDate/UpToDate C r-----

[[email protected] drbd.d]#



 ?、挂载节点二,查看文件是否同步了 HOHO~~

01

02

03

04

05

06

07

08

09

10

11

12

[[email protected] drbd.d]# mkdir /DRBD

[[email protected] drbd.d]# mount /dev/drbd0 /DRBD

[[email protected] drbd.d]# ls -l /DRBD

总用量 20

drwx------ 2 root root 16384 5月  23 22:41 lost+found

-rw-r--r-- 1 root root    39 5月  23 22:45 testDRBDfile

[[email protected] drbd.d]# date

2015年 05月 23日 星期六 22:55:00 CST

[[email protected] drbd.d]# cat /DRBD/testDRBDfile

Hello World

Legion  2015-05-23 22:45:07

[[email protected] drbd.d]#


到此我们的DRBD的两个节点就配置好了,也测试成功能同步了

原地址:http://www.dwhd.org/20150523_150831.html

时间: 2024-10-01 06:16:16

DRBD 高可用配置详解(转)的相关文章

Centos6.5基于MariaDB10.x 主从复制高可用简单详解

主从复制目的: mysql服务器稳定性提升,避免单台mysql服务器宕机后影响整个业务,当出现宕机问题后,可以立即可使从机提升为新的主服务器.从而实现sql高可用冗余性. 一.演示环境 os:centos6.5 sql:mariadb-10.0.12 iptables off selinux disabled 已装组件: Development tools Server Platform Development 主机master:10.19.90.197 从机slave:10.19.90.111

centos7中keepalived原理及高可用(HA)详解

keepadlived原理:keepadlive是通过路由器的VRRP协议实现来实现服务器的高可用防止单点故障发生的技术. VRRP协议简介:VRRP是一种容错协议,它保证当主机的下一跳坏掉时,可以及时由另一台路由器来代替,从而保持通讯的连续性和可靠性.为了使vrrp能正常工作,要在路由器上配置虚拟路由器号和路由器的虚拟ip地址,同时产生一个虚拟MAC地址,这样在网络这就加入了一个虚拟路由器.一个主路由器和若干个备份路由器组成一个虚拟路由器,当主路由器发生故障时,一个备份路由器成为主路由器,接替

干货,memcached+keepalived实现主主复制和高可用,详解!

keepalived+memcached主主复制高可用介绍: 客户端连接两台服务器之间的VIP地址,如果后端服务器故障自动切换. Keepalive原理: 1.故障检测: Keepalived的作用是检测memcached服务器的状态是否正常. 2.主从切换: Keepalived如果检测到memcached服务发生DOWN机或者死机等,能将VIP从主服务器移至从服务器 3.Keepalived如何发现memcached异常: 1) keepalived在memcached主服务器产生一个虚拟I

使用LVS实现负载均衡原理及安装配置详解

转:http://www.cnblogs.com/liwei0526vip/p/6370103.html 使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director

varnish安装及配置详解

varnish系统架构: varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程). Management进程主要实现应用新的配置.编译VCL.监控varnish.初始化varnish以及提供一个命令行接口等.Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程. Child进程包含多种类型的线程,常见的如:Acceptor线程:接收新的连接

keepalived的配置详解(非常详细)

keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报  分类: 运维学习(25)  转载自:http://blog.csdn.net/u010391029/article/details/48311699 1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简化了一些功能. 2. 协议说

HA集群之DRBD浅析及实现DRBD高可用

一.DRBD概述 DRBD (Distributed Replicated Block Device) 是 Linux 平台上的分散式储存系统. 由内核模组.用户空间工具组成,通常用于高可用性(high availability, HA)集群.其实现方式是通过网络在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像.你可以把它看作是一种网络RAID1. DRBD的工作模式如下图: DRBD工作的位置在文件系统的buffer cache和磁盘调度器之间,数据进入Buffer Cache后,DRB

nginx一些参数配置详解

nginx的配置:    正常运行的必备配置:       1.user username [groupname];           指定运行worker进程的用户和组       2.pid /path/to/pidfile_name nginx的pid文件 3.worker_rlimit_nofile #;            一个worker进程所能够打开的最大文件句柄数:       4.worker_rlimit_sigpending #;            设定每个用户能够

使用 LVS 实现负载均衡原理及安装配置详解

使用 LVS 实现负载均衡原理及安装配置详解 来源:肖邦linux 发布时间:2017-02-19 阅读次数:106 0 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学习 LVS 并对其进行了详细的总结记录. 一.负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用