1、什么是DRBD DRBD 实际上是一种块设备的实现,主要被用于Linux平台下的高可用(HA)方案之中。他是有内核模块和相关程序而 组成,通过网络通信来同步镜像整个设备,有点类似于一个网络RAID的功能。也就是说当你将数据写入本地的 DRBD设备上的文件系统时, 数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在一个文 件系统中(实际上文件系统的创建也是由DRBD的同步来实现的)。本地节点(主机)与远程节点(主机)的数 据可以保证实时的同步,并保证IO的一致性。所以当本地节点的主机出现故障时,远程节点的主机上还会保留有一 份完全相同的数据,可以继续使用,以达到高可用的目的。 的实现服务器冗余的解决方案中,heartbeat 为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat + drbd在Linux下创建一个高可用(HA)的集群服务器,在高可用(HA)解决方案中使用DRBD的功能,可以代替使用一 个共享盘阵存储设备。因为数据同时存在于本地主机和远程主机上,在遇到需要切换的时候,远程主机只需要使用它 上面的那份备份数据,就可以继续提供服务了。 是在存储层的数据块同步,很容易的做到应用层的 IO 负载均衡(备机承担一定的读压力),不但支持数据库失败 接管,还能做到 IP 失败接管,接管时间小于 30 秒,真是穷人的绝佳集群解决方案。 master 192.168.10.7 slave 192.168.10.8 VIP 192.168.10.9
192.168.10.7 master 192.168.10.8 slave
# tar -zxvf mysql-5.1.45.tar.gz # cd mysql-5.1.45 # groupadd mysql # useradd -g mysql -s /sbin/nologin -M mysql # ./configure --prefix=/usr/local/mysql --with-charset=gbk --localstatedir=/var/data --with-extra-charsets=all --enable-thread-safe-client # make && make install # cp support-files/my-large.cnf /etc/my.cnf # chown -R mysql.mysql /usr/local/mysql/ # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod 755 /etc/rc.d/init.d/mysqld 加入服务队列: # chkconfig --add mysqld
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf # ldconfig
# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile # source /etc/profile
# tar -zxvf drbd-8.3.2.tar.gz # cd drbd-8.3.2 # make # make install # modprobe drbd # lsmod | grep drbd drbd 233268 0
# vi /usr/local/drbd/etc/drbd.conf global { usage-count yes; } common { protocol C; } resource r0 { startup { degr-wfc-timeout 120; } disk { on-io-error detach; } net { cram-hmac-alg sha1; shared-secret "FooFunFactory"; } syncer { rate 100M; } on master{ #master为主服务器的主机名 device /dev/drbd0; disk /dev/sdb1; address 192.168.10.7:7788; meta-disk internal; } on slave{ #master为从服务器的主机名 device /dev/drbd0; disk /dev/sdb1; address 192.168.10.8:7788; meta-disk internal; } }
# drbdadm create-md all 启动drbd: # /etc/init.d/drbd start 在启动第一个节点上的DRBD服务的时候,他会等待第2个节点的DRBD服务的启动,此时启动第2个节点上的DRBD服务即可。 # drbdadm primary all 如果不成功使用这个命令 # drbdsetup /dev/drbd0 primary -o
# cat /proc/drbd version: 8.3.2 (api:88/proto:86-90) GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build by root@slave, 2010-06-23 09:33:38 0: cs:SyncTarget ro:Secondary/Secondary ds:Inconsistent/UpToDate C r---- ns:0 nr:1558420 dw:1558420 dr:0 al:0 bm:98 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:538204 [====>...............] sync'ed: 28.9% (538204/750448)K finish: 0:00:17 speed: 30,320 (30,320) K/sec
# mkfs.ext3 /dev/drbd0
# mount /dev/drbd0 /var/data # /usr/local/mysql/bin/mysql_install_db --user=mysql # chown -R mysql.mysql /var/data
# umount /var/data # drbdadm secondary all
# drbdadm primary all # mount /dev/drbd0 /var/data/ # ls /var/data
# tar -zxvf libnet-1.1.4.tar.gz # cd libnet-1.1.4 # ./configure # make # make install
# groupadd haclient # useradd -g haclient -s /sbin/nologin -M hacluster # tar -jxvf Heartbeat-3-0-STABLE-2.1.3.tar.bz2.tar # cd Heartbeat-3-0-STABLE-2.1.3 # ./ConfigureMe configure --disable-swig --disable-snmp-subagent # make # make install # cp doc/ha.cf /etc/ha.d/ # cp doc/haresources /etc/ha.d/ # cp doc/authkeys /etc/ha.d/
# vi /etc/ha.d/authkeys auth 3 #1 crc #2 sha1 HI! 3 md5 Hello!
master drbddisk Filesystem::/dev/drbd0::/var/data::ext3 mysqld 192.168.10.9 上面资源组中的各项含义如下: #debugfile /var/log/ha-debug的注释去掉 #keepalive 2 去注释 #deadtime 15 去注释 #warntime 10 去注释把10改成5 #initdead 120 去注释 #udpport 694 去注释 #bcast eth0 #Linux 去注释 #watchdog /dev/watchdog 去注释也可以不打开 #node den3 把den3改成master 这里要注要它是主节点名称下面的是副节点名称,一定要与uname -n一致. #node dathy 把dathy改成slave #ping_group group1 10.10.10.254 10.10.10.253 去注释改:ping_group group1 192.168.10.7 192.168.10.8 #respawn hacluster /usr/lib/heartbeat/ipfail 去注释 #apiauth ipfail gid=haclient uid=hacluster 去注释 #hopfudge 1 去注释 它就是集群中活跃节点的数量
# /etc/init.d/heartbeat start # echo "/etc/init.d/drbd start" >>/etc/rc.local # echo "/etc/init.d/heartbeat start" >>/etc/rc.local
# ifconfig eth0:0 Link encap:Ethernet HWaddr 00:0C:29:7C:3F:5C inet addr:192.168.10.9 Bcast:192.168.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:185 Base address:0x2024
|
评论