logo资料库

DRBD安装配置(主从模式)--详细步骤图文并茂.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
DRBD 安装配置 V 0.1 i386 (vmware 下运行) 测试环境: OS:CentOS 5.4 内核版本:2.6.18-164.el5 (uname -a 查看现运行的内核版本) 内核源码路径:/usr/src/kernels/2.6.18-164.el5-i686/ (现运行内核版本和系统原带内核路径必须一致) Server01 : 192.168.0.136 Server01 : 192.168.0.137 一.下载源代码,推荐使用源代码。 因为使用 yum 安装时 在安装 kmod-drbd 组件是会升级内核,这会导致无法加载 drbd 模块到内核,(此问题我还没解决) Yum 安装命令 # yum install drbd kmod-drbd 源码下载地址:http://oss.linbit.com/drbd/ # wget http://oss.linbit.com/drbd/8.2/drbd-8.2.5.tar.gz # tar xvf drbd-8.2.5.tar.gz # cd drbd-8.2.5 # make KDIR=/usr/src/kernels/2.6.18-164.el5-i686/ # make install KDIR=/usr/src/kernels/2.6.18-164.el5-i686/ 这样就算安装完毕了。 检查一下需要有 drbd 、drbdadm、drbdmeta 、drbdsetup 这四个命令、以及启动脚本: /etc/init.d/drbd 并保证 drbd 模块已经加载到内核中了 #lsmod | grep drbd drbd 主配置文件在:/etc/drbd.conf 将 drbd 服务加入到启动项中 193796 3
# chkconfig drbd on 二.配置环境 以上操作在 server01 和 server02 中进行, 2个主机都预留一个空白的分区,不需要创建任何文件系统。 在 server01中 localhost.localdomain localhost localhost6.localdomain6 localhost6 server01 server02 vim /etc/hosts 127.0.0.1 ::1 192.168.0.136 192.168.0.137 并保证 vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=server01 在 server02 中 vim /etc/hosts 127.0.0.1 ::1 192.168.0.136 192.168.0.137 并保证 vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=server02 主配置文件内容: # vim /etc/drbd.conf # 是否参加 DRBD 使用者统计.默认是 yes localhost.localdomain localhost localhost6.localdomain6 localhost6 server01 server02 global { usage-count yes;} # 设置主备节点同步时的网络速率最大值,单位是字节. common { syncer { rate 10M; } } # 一个 DRBD 设备(即:/dev/drbdX),叫做一个"资源".里面包含一个 DRBD 设备的主备 节点的 # 相关信息. # resource r0 { # 使用协议 C.表示收到远程主机的写入确认后,则认为写入完成. protocol C; #startup { wfc-timeout 0; degr-wfc-timeout 120; } disk { on-io-error detach; } syncer { rate 10M; } net { # 设置主备机之间通信使用的信息算法. cram-hmac-alg sha1;
shared-secret "FooFunFactory"; } # 每个主机的说明以"on"开头,后面是主机名.在后面的{}中为这个主机的配置. on server01{ /dev/drbd1; /dev/sdc5; # /dev/drbd1 使用的磁盘分区是/dev/hdb1 device disk # 设置 DRBD 的监听端口,用于与另一台主机通信 address #address #meta-disk meta-disk #flexible-meta-disk internal; 192.168.0.136:7898; 10.0.0.194:7898; /dev/xvdb5[0]; internal; } on server02 { /dev/drbd1; device /dev/sdb5; disk 192.168.0.137:7898; address 10.0.0.195:7898; #address internal; meta-disk #meta-disk /dev/xvdb5[0]; #flexible-meta-disk internal; } } of=/dev/sdbX bs=1M count=128 准备启动之前,需要分别在 2 个主机上的 空白分区上创建相应的元数据保存的数据块: 常见之前现将两块空白分区彻底清除数据 分别在两个主机上执行 #dd if=/dev/zero 否则下一步会出现 ......... Device size would be truncated, which would corrupt data and result in 'access beyond end of device' errors. You need to either * use external meta data (recommended) * shrink that filesystem first * zero out the device (destroy the filesystem) Operation refused. .......... 分别在 server01 和 server02 上面执行 #drbdadm create-md r0 确保成功后,接下来就可以启动 drbd 进程了(在 server01和 server02同时启用):
在 server02 中 [root@server01 ~]# /etc/init.d/drbd start Starting DRBD resources: [ d(r0) s(r0) n(r0) ]. [root@server01 ~]# ps aux | grep drbd root root root 0.0 0.0 0.0 0.0 0.0 0.0 5777 5780 5790 0 0 0 0 ? 0 ? 0 ? S S S 11:12 11:12 11:12 0:00 [drbd1_worker] 0:00 [drbd1_receiver] 0:00 [drbd1_asender] [root@server01 ~]# cat /proc/drbd version: 8.2.5 (api:88/proto:86-88) GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:19 1: cs:Connected st:Secondary/Secondary ds:Inconsistent/UpToDate C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 在 server02 上 [root@server02 /]# /etc/init.d/drbd start Starting DRBD resources: [ d(r0) s(r0) n(r0) ]. [root@server02 ~]# ps aux |grep drbd root root root 0.0 0.0 0.0 0.0 0.0 0.0 4465 4466 5284 0 0 0 0 ? 0 ? 0 ? S S S 10:45 10:45 11:12 0:00 [drbd1_worker] 0:00 [drbd1_receiver] 0:00 [drbd1_asender] [root@server02 ~]# cat /proc/drbd version: 8.2.5 (api:88/proto:86-88) GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server02, 2011-12-02 09:56:19 1: cs:Connected st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 三.启动 server01 为主节点
#drbdadm primary db 这一步可能会报错误 如果保持执行 drbdsetup /dev/drbd1 primary –o 可以看到,第一次设置主节点时用 drbdadm 命令会失败,所以先用 drbdsetup 来做,以后 就可以用 drbdadm 了 成功后,就可以使用 #cat /proc/drbd 查看同步的进度了 [root@server01 ~]# cat /proc/drbd version: 8.2.5 (api:88/proto:86-88) GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:19 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:1830912 nr:0 dw:0 dr:1830912 al:0 bm:111 lo:0 pe:0 ua:0 ap:0 [======>.............] sync'ed: 35.1% (3326/5114)M finish: 0:04:43 speed: 11,940 (10,344) K/sec resync: used:0/31 hits:114320 misses:112 starving:0 dirty:0 changed:112 act_log: used:0/127 hits:0 misses:0 starving:0 dirty:0 changed:0 同步完毕: 此过程有点慢,(我测试的 512M 内存,intel E2220 vmware 7.14 环境,5G 的磁盘同步了 16 分钟) 同步完毕之后,就可以对空白磁盘格式化了 (注意此操作只对 primary 节点格式化) [root@server01 ~]# mkfs.ext3 /dev/drbd1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 655360 inodes, 1309232 blocks 65461 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280
40 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 然后将格式化好的磁盘挂在到 /drbd 下 测试: 现在演示一下主节点挂掉,然后重新恢复连接的情况,通过以上的设置我们知道 server01(192.168.0.136)为 primary 节点 [root@server01 ~]# ifdown eth0 可以看到,在 primary 节点上找不到 secondary 节点了。再来看看 secondary 节点上的状态: 在 secondary 节点上也找不到 primary 了 现在,让 prmary 节点的网卡启动 还是未连接状态。
在刚才关闭网卡的 primary 节点上执行如下命令: 可以看到主节点已经连接到了 secondary 节点 同样去 secondary 节点 server02上使用 cat 命令查看一下连接情况 查看连接情况可以直接使用 [root@server01 ~]# drbdadm state r0 Primary/Secondary [root@server01 ~]# drbdadm cstate r0 Connected [root@server01 ~]# drbdadm dstate r0 UpToDate/UpToDate 同样可以使用常用命令 [root@server01 ~]# service drbd status drbd driver loaded OK; device status: version: 8.2.5 (api:88/proto:86-88) GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server01, 2011-12-02 10:00:19 cs m:res 1:r0 Connected Primary/Secondary UpToDate/UpToDate C /drbd fstype ext3 p mounted st ds 如果是 secondary 节点挂掉了,它恢复正常后,想要再次连接 primary 节点的话,考虑到可 能会有数据丢失,可以采用以下方式来连接: [root@server02 ~]# drbdadm invalidate r0 它告诉 drbd,secondary 节点上的数据可能是不正确的,要以 primary 节点上的为准。这个命 令只能在 secondary 节点上使用,毕竟数据是以 primary 节点为准的,而非 secondry 节点。 不过,如果是 primary 节点挂掉了,这个时候就应该把原来的 secondary 节点提升为 primary 的角色,等原来的 primary 恢复之后,只能先降级成为 secondary 节点了,否则是无法再次 正确连接另一个节点的。 同步结果测试 在 server01 上做如下操作; [root@server01 home]# cp mysql-5.1.60.tar.gz [root@server01 home]# ls /drbd/ lost+found mysql-5.1.60.tar.gz /drbd/
然后,我们把 primary 降级成 secondary,把 secondary 提升成 primary 注意:把 primary 降级前,一定要先 umount 设备才行。 然后提升 secondary: 可以看在 server01 上写入的文件 mysql-5.1.60.tar.gz 已经同步到 server02 上。 测试成功! 切换回到之前的 server01 为 primary server02 为 secondary 操作为: 首先在 server02 上 接着在 server01 上 需要注意的是切换回来后检查一下 drbd 的状态: 四.Dual-primary mode (双主模式)(测试中) 多主模式 To enable dual-primary mode, set the allow-two-primaries option to yes in the net section of your resource configuration: resource net { allow-two-primaries yes; } ... }
分享到:
收藏