其实我一直规避Zenoss的高可用性。主要考虑是分布式体系中,做好主节点的ZoDB和MYSQL的数据备份,在系统故障时,能够最快时间做好Zenoss恢复工作即可。对于我这样一个熟练工程师而言,能够确认系统在30分钟内恢复正常。
直到有朋友提出需求,我才开始重新审视Zenoss的HA配置,梳理数据同步与服务的延续,以及高可性的切换时,分布式结构是否稳固的问题。
经过几天的测试与研究,终于搞出一个Demo环境。现将整个过程和配置思想放在这里,与大家分享。
1. 结构说明
图为主从两台Zenoss服务器。由Heartbeat控制VIP网卡,MySQL和Zenoss服务以及DRBD块的挂载。同时DRBD实现主从服务器中的相关Zenoss数据(MYSQL,Zenoss主目录和Zenoss性能目录)的同步与处理。需要注意的是,DRBD只是一个虚设备,因此,每台服务器应该划分专用分区用以存放Zenoss数据。在Demo环境中,用Vmware重新添加了一块磁盘。并将划分为:
/dev/sdb1 /var/lib/mysql MySQL数据库
/dev/sdb2 /opt/zenoss/ zenoss主目录
/dev/sdb3 /opt/zenoss/perf Zenoss RRD数据库
注意,sdbX分区并不需要格式化,因此,请在系统安装后,再用fdisk命令进行划分。具体方法参看网上资料,这里就不重复了。
2. 前期准备
利用Vmware创建了两个台相同规格的Centos系统(版本为Centos5.6 32Bit)。注意在安装Centos时,先不安装MYSQL(主要希望之后的MYSQL数据目录可以在两节点是使用-DRBD)。系统的网络配置要求如下:
zenoss master
hostname:zenossha1
eth0 ip:119.10.119.5
eth1 ip:192.168.100.5
zenoss slave
hostsname:zenossha2
eth0 ip:119.10.119.6
eth1 ip:192.168.100.6
同时规划vip为119.10.119.8
系统安装好后,首先将建议两台服务器的hosts关系,以备之后的Heartbeat和DRBD的内部通讯。
- 192.168.100.5 zenossha1
- 192.168.100.6 zenossha2
3. DRBD的安装与配置
前先准备工作完成后,接下来,在两台服务器上安装DRBD
- # yun -y install drbd82 kmod-drbd82
安装好后,在两台服务器上同时建立DRBD配置文件
- global { usage-count no;
- }
- common { protocol C;
- disk {
- on-io-error detach; no-disk-flushes; no-md-flushes;
- }
- net {
- max-buffers 2048; unplug-watermark 2048;
- }
- syncer {
- rate 700000K; al-extents 1801;
- } }
- resource mysql { device /dev/drbd1; disk /dev/sdb1; meta-disk internal;
- on zenossha1 {
- address 192.168.100.5:7789;
- }
- on zenossha2 {
- address 192.168.100.6:7789;
- } }
- resource zenhome { device /dev/drbd2; disk /dev/sdb2; meta-disk internal;
- on zenossha1 {
- address 192.168.100.5:7790;
- }
- on zenossha2 {
- address 192.168.100.6:7790;
- } }
- resource zenperf { device /dev/drbd3; disk /dev/sdb3; meta-disk internal;
- on zenossha1 {
- address 192.168.100.5:7791;
- }
- on zenossha2 {
- address 192.168.100.6:7791;
- } }
在配置文件中,我们创建了三个DRBD源:mysql,zenhome,zenperf。每个源使用一个Drbd块(/dev/drbdX)与我们之前划分的专用分区关联,同时分别配置端口用以通讯。
接下来,我们创建源数据。在创建之前,需要测试一下磁盘的写入
- # dd if=/dev/zero of=/dev/sdb1 bs=1M count=128
创建源数据
- # drbdadm create-md mysql
- # drbdadm create-md zenhome
- # drbdadm create-md zenperf
创建好后,启动DRBD服务
注意,第一次双节点启动drbd时,需要全盘同步。同步速度与网络环境有关。
- more /proc/drbd
- version: 8.2.6 (api:88/proto:86-88)
- GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-x8664-build, 2008-10-03 11:30:17
- 1: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
- ns:35982212 nr:0 dw:476244 dr:35982432 al:209 bm:2167 lo:1 pe:50 ua:14883 ap:43 oos:12687508
- [=============>......] sync'ed: 73.7% (12390/47063)M
- finish: 1:14:11 speed: 2,832 (3,780) K/sec
- 2: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
- ns:35724156 nr:0 dw:892220 dr:34843136 al:414 bm:2155 lo:1 pe:8 ua:348 ap:0 oos:12674912
- [=============>......] sync'ed: 73.8% (12377/47063)M
- finish: 0:54:52 speed: 3,848 (3,784) K/sec
- 3: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
- ns:35911460 nr:0 dw:435600 dr:35961280 al:189 bm:2165 lo:1 pe:2055 ua:14912 ap:2049 oos:10854136
- [==============>.....] sync'ed: 76.6% (10599/45251)M
- finish: 0:44:07 speed: 4,072 (3,780) K/sec
请待drbd同步完成之后,再进行下面的操作。
接下来,我们需要对于源数据格式化,同时需要指定两台服务器间DRBD的主从关系。因此,下面的需要分部来做。
在主服务器上,首先查看drbd状态
- # cat /proc/drbd
- version: 8.2.6 (api:88/proto:86-88)
- GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by buildsvn@c5-i386-build, 2008-10-03 11:42:32
- 1: cs:WFConnection st:Primary/Unknown ds:UpToDate/DUnknown C r---
- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:2570252
- 2: cs:WFConnection st:Secondary/Unknown ds:Inconsistent/DUnknown C r---
- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:2650604
- 3: cs:WFConnection st:Secondary/Unknown ds:Inconsistent/DUnknown C r---
- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:2650604
强行将主服务器各源数据设定为primary
- # drbdadm -- -o primary mysql
- # drbdadm -- -o primary zenhome
- # drbdadm -- -o primary zenperf
然后将主服务器上的数据源块格式化
- # mkfs.ext3 /dev/drbd1
- # mkfs.ext3 /dev/drbd2
- # mkfs.ext3 /dev/drbd3
将主服务器的DRBD服务关闭
阅读(1819) | 评论(0) | 转发(0) |