顺丰HHT系统MQ+HA环境为例
源:http://hi.baidu.com/v2here/blog/item/f1e0d5d683db62cda044df87.html
以顺丰HHT系统MQ+HA环境为例(OS: RHEL 5.4 64bit):
主机名 hhtmq1(uname -n) hhtma2(uname -n)
实际IP 10.0.26.141 10.0.26.142
心跳IP 10.0.27.21 10.0.27.22
虚拟IP 10.0.26.140
iSCSI存储 iqn.2001-05.com.equallogic:0-8a0906-0cc8da004-991205adc704be03-hht
1).配置存储
A、存储使用iSCSI,服务器IP:10.0.1.93,共享存储大小300G。
B、在两个机器上安装iscsi-initiator,可以使用yum来安装(yum install iscsi-initiator* -y)
C、连接存储:
chkconfig iscsid on ; chkconfig iscsi on
service iscsid start ; service iscsi start
然后使用: iscsiadm -m discovery -t sendtargets -p 10.0.1.93 ,例如发现(也可以通过iSCSI存储查看):
iqn.2001-05.com.equallogic:0-8a0906-0cc8da004-991205adc704be03-hht
登录(不能折行):
iscsiadm -m node -T iqn.2001-05.com.equallogic:0-8a0906-0cc8da004-991205adc704be03-hht -p 10.0.1.93 -l
重启自动登录(不能折行):
iscsiadm -m node -T iqn.2001-05.com.equallogic:0-8a0906-0cc8da004-991205adc704be03-hht -p 10.0.1.93 --op update -n node.startup -v automatic
D、重启,确认自动挂载;
E、在hhtmq1上对共享存储分区,格式化,在两个机器上执行:mkdir -p /MQHA/{bin,qmgrs}
2)./etc/hosts
10.0.26.141 hhtmq1
10.0.26.142 hhtmq2
10.0.27.21 hhtmq1_hb
10.0.27.22 hhtmq2_hb
3).安装HeartBeat
获取包:http://mirror.centos.org/centos/5.4/extras/x86_64/RPMS/
rpm -ivh heartbeat-pils-2.1.3-3.el5.centos.x86_64.rpm;
rpm -ivh heartbeat-stonith-2.1.3-3.el5.centos.x86_64.rpm;
rpm -ivh heartbeat-2.1.3-3.el5.centos.x86_64.rpm
配置:
A、chkconfig heartbeat on
B、cp /usr/share/doc/heartbeat-2.1.3/{ha.cf,haresources,authkeys} /etc/ha.d/
C、vi /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth1
auto_failback on
node hhtmq1
node hhtmq2
ping 10.0.26.254
use_logd yes
D、vi /etc/ha.d/haresources
hhtmq1 IPaddr::10.0.26.140 Filesystem::/dev/sdb1::/MQHA/qmgrs::ext3
E、vi /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
F、chmod 600 /etc/ha.d/authkeys
通过service heartbeat start/stop/restart 切换看看IP跟磁盘是否可以正常挂载。
4).安装MQ 6.0.2.8
注意:必须保证两个机器上的mqm用户,mqm组的id完全一致,默认情况下,安装mq时会自动创建mqm用户和mqm组,但是也可以手工创建,将mqm用户的家目录指定为: /var/mqm (-d)
安装6.0.1.0:
cd /tmp/soft/mq/mq6
./mqlicense.sh
rpm -ivh gsk7bas64-7.0-3.18.x86_64.rpm
rpm -ivh IBMJava2-AMD64-142-SDK-1.4.2-0.0.x86_64.rpm
rpm -ivh MQSeriesRuntime-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesJava-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesMan-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesMsg_Zh_CN-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesMsg_Zh_TW-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesSDK-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesServer-6.0.1-0.x86_64.rpm
rpm -ivh MQSeriesClient-6.0.1-0.x86_64.rpm
升级到6.0.2.8:
cd /tmp/soft/mq/mq6028
rpm -Uvh gsk7bas64-7.0-4.23.x86_64.rpm
rpm -Uvh MQSeriesJava-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesRuntime-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesMan-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesMsg_Zh_CN-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesMsg_Zh_TW-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesSDK-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesServer-U825874-6.0.2-8.x86_64.rpm
rpm -Uvh MQSeriesClient-U825874-6.0.2-8.x86_64.rpm
使用: id mqm ; dspmqver ; rpm -qa |grep MQSeries |sort ,看在两台机器得到的效果是否完全一致。如果完全相同,然后将root加入mqm组就可以了:usermod -a -G mqm root
5).创建队列管理器QM_HHT,端口1414
分别在:hhtmq1和hhtmq2执行: chown -R mqm:mqm /MQHA
hhtmq1(ha主用,服务运行在此机器上,磁盘也挂在此机器上)操作:
chown -R mqm:mqm /MQHA
su - mqm
cd /MQHA/qmgrs
mkdir -p QM_HHT/{data,log}
vi /etc/ha.d/haresources (测试ha可用后进入下一步)
hhtmq1 IPaddr::10.0.26.140 Filesystem::/dev/sdb1::/MQHA/qmgrs::ext3 mqha
将脚本上传到/MQHA/bin,然后执行: chown -R mqm:mqm /MQHA/bin(记得先修改MQ的参数)
创建队列管理器
cd /MQHA/bin
./hacrtmqm QM_HHT
定义MQ配置:
strmqm QM_HHT
runmqsc QM_HHT
DEF LISTENER(LN_HHT) TRPTYPE(TCP) PORT(1414) CONTROL(QMGR)
START LISTENER(LN_HHT)
DEF CHL(CH_SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm')
START CHL(CH_SVRCONN)
END
停止队列管理器,切换HA,在备机上执行:
su - mqm
./halinkmqm QM_HHT QM_HHT /MQHA/qmgrs/QM_HHT/data standby
6).配置HA脚本
#!/bin/bash
# /etc/rc.d/init.d/mqha
# write by jon : chenwq@sf-express.com
. /etc/init.d/functions
# Source function library.
#==========================================================
SU="/bin/bash"
if [ "`whoami`" = "root" ]; then
SU="su - mqm"
fi
#==========================================================
start() {
if [ -d /MQHA/qmgrs/log ] ; then
echo -e "\nStart MQ-HA at `date +%Y%m%d.%H%M%S` on `uname -n`" >>/MQHA/qmgrs/log/ha.log
$SU -c "strmqm QM_HHT"
fi;
exit 0
}
#==========================================================
stop() {
if [ -d /MQHA/qmgrs/log ] ; then
echo -e "Stop MQ-HA at `date +%Y%m%d.%H%M%S` on `uname -n`" >>/MQHA/qmgrs/log/ha.log
$SU -c "endmqm -i QM_HHT &"
sleep 10
fi;
exit 0
}
case $1 in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
*)
echo "usage: $0 {start|stop|restart}"
;;
esac
然后就可以通过不停的启动,停止heartbeat或者服务器来测试mq的ha情况了。
posted on 2012-07-02 21:18 Moutnainer 阅读(953) 评论(0) 收藏 举报
浙公网安备 33010602011771号