当前位置: 主页>网络技术>

HAProxy双机高可用方案之HAProxy+Keepalived

时间:2015-04-21 14:39来源:www.58un.net 作者:网吧联盟
  

【bitsCN.com 独家特稿】由于公司的注册用户已超过八百万了,而且每天都有持续增涨的趋势,而PV/日已经有向千万靠扰的趋势;原有的Web架构越来越满足不了我们的需求了,所以我们也考虑上能抗高并发的HAProxy来作为我们网站的最前端的负载均衡器;因为我已经在东莞的二个项目上面成功实施了HAProxy+Keepalived双机方案,所以我在这里也尝试在公司的网站上这种负载均衡高可用架构,即HAProxy+Keepalived。

HAProxy+Keepalived配置过程如下:

1. 做好整个环境的准备工作。

两台服务器DELL 2950均要做好准备工作,比如设置好hosts文件及进行ntpd对时。

网络拓朴很简单,如下所示:

ha1.cn7789.com eth0:203.93.236.145

ha2.cn7789.com eth0:203.93.236.142

网卡用其自带的千兆网卡均可。

硬盘模式没有要求,Raid0或Raid1均可。

网站对外的VIP地址是:203.93.236.149,这是通过Keepalived来实现的,原理请参考前面的章节;同时这也是我们的网站的外网DNS对应的IP。

2. HAProxy和Keepalived的安装过程

关于此安装过程,请大家参考前面的内容,这里就不重复了,我们主要是注意关键位置的改动:

(1)首先是要建立HAProxy启动、重启、关闭等状态脚本,我这里的HAProxy脚本为/root/haproxy,我们给它执行权限,脚本内容如下所示:

  1. #!/bin/sh  
  2. # chkconfig 35 on  
  3. # description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments.  
  4.  
  5. # Source function library.  
  6. if [ -f /etc/init.d/functions ]; then  
  7.   . /etc/init.d/functions  
  8. elif [ -f /etc/rc.d/init.d/functions ] ; then  
  9.   . /etc/rc.d/init.d/functions  
  10. else  
  11.   exit 0  
  12. fi  
  13.  
  14. # Source networking configuration.  
  15. . /etc/sysconfig/network  
  16.  
  17. # Check that networking is up.  
  18. [ ${NETWORKING} = "no" ] && exit 0  
  19.  
  20. [ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1  
  21.  
  22. RETVAL=0 
  23.  
  24. start() {  
  25.   /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg  
  26.   if [ $? -ne 0 ]; then  
  27.     echo "Errors found in configuration file."  
  28.     return 1  
  29.   fi  
  30.  
  31.   echo -n "Starting HAproxy: "  
  32.   daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid  
  33.   RETVAL=$?  
  34.   echo  
  35.   [ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy  
  36.   return $RETVAL  
  37. }  
  38.  
  39. stop() {  
  40.   echo -n "Shutting down HAproxy: "  
  41.   killproc haproxy -USR1  
  42.   RETVAL=$?  
  43.   echo  
  44.   [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy  
  45.   [ $RETVAL -eq 0 ] && rm -f /var/run/haproxy.pid  
  46.   return $RETVAL  
  47. }  
  48.  
  49. restart() {  
  50.   /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg  
  51.   if [ $? -ne 0 ]; then  
  52.     echo "Errors found in configuration file, check it with 'haproxy check'."  
  53.     return 1  
  54.   fi  
  55.   stop  
  56.   start  
  57. }  
  58.  
  59. check() {  
  60.   /usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg  
  61. }  
  62.  
  63. rhstatus() {  
  64.   status haproxy  
  65. }  
  66.  
  67. condrestart() {  
  68.   [ -e /var/lock/subsys/haproxy ] && restart || :  
  69. }  
  70.  
  71. # See how we were called.  
  72. case "$1" in  
  73.   start)  
  74.     start  
  75.     ;;  
  76.   stop)  
  77.     stop  
  78.     ;;  
  79.   restart)  
  80.     restart  
  81.     ;;  
  82.   reload)  
  83.     restart  
  84.     ;;  
  85.   condrestart)  
  86.     condrestart  
  87.     ;;  
  88.   status)  
  89.     rhstatus  
  90.  ;;  
  91.   check)  
  92.     check  
  93.     ;;  
  94.   *)  
  95.     echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}"  
  96.     RETVAL=1 
  97. esac  
  98.  
  99. exit $RETVAL 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------