mountain

顺丰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)    收藏  举报

导航