在一组DRBD集群中,多个节点之间DRBD设备中的数据一模一样(完全对等),但正如前面多次提到的,角色却分为两种:Master和Secondary。一组DRBD集群中,最多只能有一个Master角色,而对持有Secondary角色的数量则无限制,也就是说可以所有节点都是Secondary角色的节点。不过只有持有了Master角色的节点,才能够读写DRBD设备,而持有Secondary角色的节点,能够看到DRBD设备,但无法执行读写操作。
##添加新的硬盘 ##首先在虚拟机上面添加一块新的硬盘sdb,大小1G,然后启动虚拟机。sdb磁盘分两个分区sdb1和sdb2。sdb1用来存放需要同步的data,sdb2存放DRBD的元数据。sdb1分配800M,剩下的空间全部分配给sdb2。在实际工作中,存放元数据的磁盘分配1~2G足以。还有需要注意的是,sdb2分区为meta data分区,不需要格式化操作。 # fdisk /dev/sdb ##如果放数据的磁盘超过2T,就需要用parted命令来分区磁盘。 # partprobe # mkfs.ext4 /dev/sdb1 ##sdb2分区为meta data分区,不需要格式化操作。 # tune2fs -c -1 /dev/sdb1 ##环境规划 ##添加一块新的网卡eth1 data-1-1: eth0:192.168.1.109 (管理IP) eth1:10.0.0.9 (心跳网卡,不需要配网关) vip:192.168.1.119 drbd管理名称:data drbd挂载目录:/data drbd逻辑设备:/dev/drbd0 drbd对接IP:eth1:10.0.0.9/24 drbd存储设备:/dev/sdb1 drbd meta设备:/dev/sdb2[0] -------------------------------------------- data-1-2: eth0:192.168.1.110 (管理IP) eth1:10.0.0.10 (心跳网卡,不需要配网关) vip:192.168.1.120 drbd管理名称:data drbd挂载目录:/data drbd逻辑设备:/dev/drbd0 drbd对接IP:eth1:10.0.0.10/24 drbd存储设备:/dev/sdb1 drbd meta设备:/dev/sdb2[0] ##修改/etc/hosts ##hosts里面的ip地址,最好换成心跳IP。 10.0.0.9 data-1-1 10.0.0.10 data-1-2 ##还有记得修改主机名,修改主机名的地方:/etc/sysconfig/network ##禁用selinux 修改/etc/selinux/config文件 将SELINUX=enforcing改为SELINUX=disabled重启机器即可。 查看selinux状态: [root@CentOS ~]# getenforce # service iptables stop # chkconfig iptables off # service ip6tables stop # chkconfig ip6tables off ##配置服务器间心跳连接路由 [root@data-1-1 ~]# route add -host 10.0.0.10 dev eth1 ##到对端的心跳路由 [root@data-1-2 ~]# route add -host 10.0.0.9 dev eth1 ##到对端的心跳路由 ##yum配置 (1)进入yum源配置目录:cd /etc/yum.repos.d (2)备份系统自带的yum源:mv CentOS-Base.repo CentOS-Base.repo.bak (3)下载163网易的yum源:wget http://mirrors.163.com/.help/CentOS6-Base-163.repo (4)更改文件名:mv CentOS6-Base-163.repo CentOS-Base.repo (5)更新玩yum源后,执行下边命令更新yum配置,使操作立即生效:yum clean all yum makecache ##DRBD安装 (1)首先我们要升级内核,升级之后我们重启 yum -y update kernel 和 yum install kernel-devel 这里请注意要加载新的内核 (2)# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm (3)安装DRBD: yum -y install drbd83-utils kmod-drbd83 (4)加载DRBD模块到内核: modprobe drbd (5)检测DRBD是否安装成功: lsmod | grep drbd 显示信息:drbd 311209 0 (6)modprobe -l | grep -i drbd 可以查看路径 ##安装完成后会在/etc/init.d/drbd生成启动脚本。不要设置echo 'modprobe drbd' >>/etc/rc.loca开机自动加载drbd模块 # chkconfig drbd off ##配置DRBD # vi /etc/drbd.conf global { usage-count no; } common { syncer { rate 10M; verify-alg crc32c; } } resource data { protocol C; disk { on-io-error detach; } on data-1-1 { device /dev/drbd0; disk /dev/sdb1; address 10.0.0.9:7888; meta-disk /dev/sdb2[0]; } on data-1-2 { device /dev/drbd0; disk /dev/sdb1; address 10.0.0.10:7888; meta-disk /dev/sdb2[0]; } } ##至此,DRBD的配置算是做完了。我这里是用虚拟机,所以上面我都是在data-1-1里面做的,然后这里再复制data-1-1为data-1-2,并修改网卡配置。 ##初始化meta分区(两边都要做) # drbdadm create-md data Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created. ##启动drbd(两边都要做) # drbdadm up all # cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 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:827316 # service drbd status drbd driver loaded OK; device status: version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 m:res cs ro ds p mounted fstype 0:data Connected Secondary/Secondary Inconsistent/Inconsistent C ##初始化设备同步(覆盖备节点,保持数据一致)(注意,只在data-1-1上面操作) [root@data-1-1 ~]# drbdadm -- --overwrite-data-of-peer primary all [root@data-1-1 ~]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----- ns:253952 nr:0 dw:0 dr:254624 al:0 bm:15 lo:0 pe:6 ua:0 ap:0 ep:1 wo:f oos:574132 [=====>..............] sync'ed: 30.7% (574132/827316)K finish: 0:00:53 speed: 10,700 (10,548) K/sec [root@data-1-1 ~]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:827316 nr:0 dw:0 dr:827988 al:0 bm:51 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 ##挂载drbd分区到data数据目录(注意,只在data-1-1上面操作) [root@data-1-1 ~]# mkdir /data [root@data-1-1 ~]# mount /dev/drbd0 /data [root@data-1-1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_centos-lv_root 27G 5.0G 20G 21% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 477M 50M 402M 12% /boot /dev/drbd0 780M 824K 739M 1% /data [root@data-1-1 ~]# cd /data/ [root@data-1-1 data]# ll 总用量 16 drwx------ 2 root root 16384 12月 26 07:31 lost+found [root@data-1-1 data]# touch `seq 10` [root@data-1-1 data]# ls 1 10 2 3 4 5 6 7 8 9 lost+found [root@data-1-1 data]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:827388 nr:0 dw:72 dr:828345 al:2 bm:51 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 ##测试DRBD [root@data-1-1 ~]# umount /data [root@data-1-1 ~]# drbdadm down all [root@data-1-1 ~]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 0: cs:Unconfigured [root@data-1-2 ~]# drbdadm primary all [root@data-1-2 ~]# mount /dev/drbd0 /mnt [root@data-1-2 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_centos-lv_root 27G 5.0G 20G 21% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 477M 50M 402M 12% /boot /dev/drbd0 780M 824K 739M 1% /mnt [root@data-1-2 ~]# cd /mnt/ [root@data-1-2 mnt]# ls 1 10 2 3 4 5 6 7 8 9 lost+found [root@data-1-2 mnt]# cat /proc/drbd version: 8.3.16 (api:88/proto:86-97) GIT-hash: a798fa7e274428a357657fb52f0ecf40192c1985 build by phil@Build32R6, 2014-11-24 14:49:06 0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----- ns:0 nr:827408 dw:827412 dr:1029 al:1 bm:51 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:4