1、组网环境

 

                        VIP 192.168.1.85

                         /            \

                        /              \

mqB 192.168.1.168      mqA 192.168.1.87

 

   操作系统版本:CentOS release 5.4

   java 版本 : java version "1.6.0_18"

   keepalived 版本: keepalived-1.1.19

   ipvsadm 版本: 1.2.1

2、openmq4_5_2 安装

   2.1 java 安装

      略

   2.2 openmq4_5_2安装

     安装openmq 需要图形化。上传到操作系统后,解压后运行 ./installer ,按照默认安装一直下一步即可。

      安装后运行下面命令启动MQ。

     /root/MessageQueue/mq/bin/imqbrokerd -name imqbroker -vmargs "-Xms512m -Xmx512m"

3、openmq4_5_2 配置

     

 mqA 配置

 

   
   
   
   
  1. cd /root/MessageQueue/var/mq/instances/imqbroker/props 
  2. vim config.properties  #添加下面内容 
  3. imq.jms.threadpool_model=dedicated 
  4. imq.instanceconfig.version=300 
  5. imq.persist.file.sync.enabled=true 
  6. imq.cluster.transport=tcp 
  7. imq.cluster.ha=flase 
  8. imq.cluster.brokerlist=mqA\:7676,mqB\:7676 
  9. imq.cluster.heartbeat.interval=2 
  10. imq.cluster.heartbeat.hostname=mqA 
  11. imq.cluster.heartbeat.port=7676 
  12. imq.admin.tcp.port=51213 
  13. imq.ssladmin.tls.port=51217 
  14. imq.cluster.masterbroker=mqA\:7676 
  15. imq.instancename=imqbroker 
  16. imq.cluster.heartbeat.threshold=2 
  17. imq.cluster.clusterid=mqcluster 
  18. imq.jms.tcp.port=46054 
  19. imq.ssljms.tls.port=51216 
  20. imq.brokerid=mqbroker87 
  21. imq.cluster.monitor.threshold=5 
  22. imq.cluster.monitor.interval=5 

mqB 配置

 

   
   
   
   
  1. cd /root/MessageQueue/var/mq/instances/imqbroker/props  vim config.properties  #添加下面内容 
  2. imq.jms.threadpool_model=dedicated 
  3. imq.instanceconfig.version=300 
  4. imq.persist.file.sync.enabled=true 
  5. imq.cluster.transport=tcp 
  6. imq.cluster.ha=flase 
  7. imq.cluster.brokerlist=mqA\:7676,mqB\:7676 
  8. imq.cluster.heartbeat.interval=2 
  9. imq.cluster.heartbeat.hostname=mqB 
  10. imq.cluster.heartbeat.port=7676 
  11. imq.admin.tcp.port=51213 
  12. imq.ssladmin.tls.port=51217 
  13. imq.cluster.masterbroker=mqA\:7676 
  14. imq.instancename=imqbroker 
  15. imq.cluster.heartbeat.threshold=2 
  16. imq.cluster.clusterid=mqcluster 
  17. imq.jms.tcp.port=46054 
  18. imq.ssljms.tls.port=51216 
  19. imq.brokerid=mqbroker168 
  20. imq.cluster.monitor.threshold=5 
  21. imq.cluster.monitor.interval=5 

配置好后,分别启动MQ

/root/MessageQueue/mq/bin/imqbrokerd -name imqbroker -vmargs "-Xms512m -Xmx512m" &

 

4、安装keepalived,ipvsadm

  略

5、配置keepalived

mqA 上配置

修改 /etc/keepalived/keepalived.conf

   
   
   
   
  1. ! Configuration File for keepalived 
  2.  
  3. global_defs { 
  4.    router_id LVS_DEVEL_1 
  5.  
  6. vrrp_instance VI_1 { 
  7. #    state  MASTER 
  8.     state  BACKUP 
  9.     interface eth0 
  10.     lvs_sync_daemon_inteface eth0 
  11.     virtual_router_id 63 
  12.     priority 150 
  13.     nopreempt  
  14.     advert_int 2 
  15.     authentication { 
  16.         auth_type PASS 
  17.         auth_pass 1111 
  18.     } 
  19.     virtual_ipaddress { 
  20.     192.168.1.85/24 dev eth0  label eth0:1 
  21.     } 
  22.  
  23. #  
  24. #MQ  
  25.  virtual_server 192.168.1.85 7676 { 
  26.      delay_loop 6 
  27.      lb_algo wrr 
  28.      lb_kind DR 
  29.      nat_mask 255.255.255.0 
  30.      persistence_timeout 50 
  31.      protocol TCP 
  32.   
  33.      real_server 192.168.1.168 7676 { 
  34.          weight  5 
  35.     MISC_CHECK { 
  36.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.168" 
  37.          misc_timeout 30 
  38.      } 
  39.     } 
  40.      real_server 192.168.1.87 7676 { 
  41.          weight 1  
  42.      MISC_CHECK { 
  43.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  44.      misc_timeout 30 
  45.      } 
  46.     } 
  47.  } 
  48.  
  49.  
  50.  virtual_server 192.168.1.85 51213 { 
  51.      delay_loop 6 
  52.      lb_algo wrr 
  53.      lb_kind DR 
  54.      nat_mask 255.255.255.0 
  55.      persistence_timeout 50 
  56.      protocol TCP 
  57.  
  58.      real_server 192.168.1.168 51213 { 
  59.          weight 5 
  60.         MISC_CHECK { 
  61.          misc_path "/etc/keepalived/scripts/check_mq 192.168.1.168"  
  62.          misc_timeout 30 
  63.      } 
  64.     } 
  65.      real_server 192.168.1.87 51213 { 
  66.          weight 1 
  67.          MISC_CHECK { 
  68.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  69.          misc_timeout 30 
  70.      } 
  71.     } 
  72.  } 
  73.  
  74.  
  75.  virtual_server 192.168.1.85 46054 { 
  76.      delay_loop 6 
  77.      lb_algo wrr 
  78.      lb_kind DR 
  79.      nat_mask 255.255.255.0 
  80.      persistence_timeout 50 
  81.      protocol TCP 
  82.  
  83.      real_server 192.168.1.168 46054 { 
  84.          weight 5 
  85.         MISC_CHECK { 
  86.          misc_path "/etc/keepalived/scripts/check_mq   192.168.1.168" 
  87.          misc_timeout 30 
  88.      } 
  89.     } 
  90.      real_server 192.168.1.87 46054 { 
  91.          weight 1 
  92.          MISC_CHECK { 
  93.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  94.          misc_timeout 30 
  95.      } 
  96.     } 
  97.  } 

mqB 上配置 

修改 /etc/keepalived/keepalived.conf

   
   
   
   
  1. ! Configuration File for keepalived 
  2.  
  3. global_defs { 
  4.    router_id LVS_DEVEL_1 
  5.  
  6. vrrp_instance VI_1 { 
  7.     state  BACKUP 
  8.     interface eth0 
  9.     lvs_sync_daemon_inteface eth0 
  10.     virtual_router_id 63 
  11.     priority 90 
  12.     advert_int 2 
  13.     authentication { 
  14.         auth_type PASS 
  15.         auth_pass 1111 
  16.     } 
  17.     virtual_ipaddress { 
  18.     192.168.1.85/24 dev eth0  label eth0:1 
  19.     } 
  20.  
  21. #  
  22. #MQ  
  23.  virtual_server 192.168.1.85 7676 { 
  24.      delay_loop 6 
  25.      lb_algo wrr 
  26.      lb_kind DR 
  27.      nat_mask 255.255.255.0 
  28.      persistence_timeout 50 
  29.      protocol TCP 
  30.   
  31.      real_server 192.168.1.168 7676 { 
  32.          weight  5 
  33.     MISC_CHECK { 
  34.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.168" 
  35.          misc_timeout 30 
  36.      } 
  37.     } 
  38.      real_server 192.168.1.87 7676 { 
  39.          weight 1  
  40.      MISC_CHECK { 
  41.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  42.      misc_timeout 30 
  43.      } 
  44.     } 
  45.  } 
  46.  
  47.  
  48.  virtual_server 192.168.1.85 51213 { 
  49.      delay_loop 6 
  50.      lb_algo wrr 
  51.      lb_kind DR 
  52.      nat_mask 255.255.255.0 
  53.      persistence_timeout 50 
  54.      protocol TCP 
  55.  
  56.      real_server 192.168.1.168 51213 { 
  57.          weight 5 
  58.         MISC_CHECK { 
  59.          misc_path "/etc/keepalived/scripts/check_mq 192.168.1.168"  
  60.          misc_timeout 30 
  61.      } 
  62.     } 
  63.      real_server 192.168.1.87 51213 { 
  64.          weight 1 
  65.          MISC_CHECK { 
  66.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  67.          misc_timeout 30 
  68.      } 
  69.     } 
  70.  } 
  71.  
  72.  
  73.  virtual_server 192.168.1.85 46054 { 
  74.      delay_loop 6 
  75.      lb_algo wrr 
  76.      lb_kind DR 
  77.      nat_mask 255.255.255.0 
  78.      persistence_timeout 50 
  79.      protocol TCP 
  80.  
  81.      real_server 192.168.1.168 46054 { 
  82.          weight 5 
  83.         MISC_CHECK { 
  84.          misc_path "/etc/keepalived/scripts/check_mq   192.168.1.168" 
  85.          misc_timeout 30 
  86.      } 
  87.     } 
  88.      real_server 192.168.1.87 46054 { 
  89.          weight 1 
  90.          MISC_CHECK { 
  91.          misc_path "/etc/keepalived/scripts/check_mq  192.168.1.87" 
  92.          misc_timeout 30 
  93.      } 

 

check_mq 脚本

 

   
   
   
   
  1. #!/bin/bash 
  2.  
  3. STATE_OK=0 
  4. STATE_CRITICAL=1 
  5. hosta="$1" 
  6.  
  7. #Paths to commands used in this script.  
  8. proc=MessageQueue    
  9.  
  10. if [ -z "$(ssh $hosta ps aux | grep $proc |grep java|grep -v grep)" -a "$(telnet $hosta 7676 2>/dev/null|grep "jms"|awk '{print $3}')" != "NORMAL" ] 
  11. then             
  12. #   echo "$proc is stoped" 
  13.    exit $STATE_CRITICAL         
  14. else 
  15. #    echo "$proc is running" 
  16.     exit $STATE_OK             
  17. fi 

 

real_server 启动脚本

 

   
   
   
   
  1. #!/bin/bash 
  2. #description : start realserver 
  3. VIP_mq=192.168.1.85 
  4. /etc/rc.d/init.d/functions 
  5. case "$1" in 
  6.         start) 
  7.         echo " start LVS of REALServer" 
  8.         /sbin/ifconfig lo:0 $VIP_mq broadcast $VIP_mq netmask 255.255.255.255 up 
  9. #        /sbin/ifconfig lo:1 $VIP_db broadcast $VIP_db netmask 255.255.255.255 up 
  10.         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  11.         echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  12.         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  13.         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 
  14.         ;; 
  15.         stop) 
  16.         /sbin/ifconfig lo:0 down 
  17. #        /sbin/ifconfig lo:1 down 
  18.         echo "close LVS Directorserver" 
  19.         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  20.         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  21.         echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  22.         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 
  23.         ;; 
  24.         *) 
  25.         echo "Usage: $0 {start|stop}" 
  26.         exit 1 
  27. esac