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

www.net130.com     日期:2011-10-17    浏览次数:
作者:余洪春    出处:51cto
由于公司的注册用户已超过八百万了,而且每天都有持续增涨的趋势,而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,我们给它执行权限,脚本内容如下所示:
#!/bin/sh 
# chkconfig 35 on 
# description: HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high availability environments. 
 
# Source function library. 
if [ -f /etc/init.d/functions ]; then 
  . /etc/init.d/functions 
elif [ -f /etc/rc.d/init.d/functions ] ; then 
  . /etc/rc.d/init.d/functions 
else 
  exit 0 
fi 
 
# Source networking configuration. 
. /etc/sysconfig/network 
 
# Check that networking is up. 
[ ${NETWORKING} = "no" ] && exit 0 
 
[ -f /usr/local/haproxy/conf/haproxy.cfg ] || exit 1 
 
RETVAL=0
 
start() { 
  /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg 
  if [ $? -ne 0 ]; then 
    echo "Errors found in configuration file." 
    return 1 
  fi 
 
  echo -n "Starting HAproxy: " 
  daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/haproxy.cfg -p /var/run/haproxy.pid 
  RETVAL=$? 
  echo 
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/haproxy 
  return $RETVAL 

 
stop() { 
  echo -n "Shutting down HAproxy: " 
  killproc haproxy -USR1 
  RETVAL=$? 
  echo 
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/haproxy 
  [ $RETVAL -eq 0 ] && rm -f /var/run/haproxy.pid 
  return $RETVAL 

 
restart() { 
  /usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/haproxy.cfg 
  if [ $? -ne 0 ]; then 
    echo "Errors found in configuration file, check it with 'haproxy check'." 
    return 1 
  fi 
  stop 
  start 

 
check() { 
  /usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/haproxy.cfg 

 
rhstatus() { 
  status haproxy 

 
condrestart() { 
  [ -e /var/lock/subsys/haproxy ] && restart || : 

 
# See how we were called. 
case "$1" in 
  start) 
    start 
    ;; 
  stop) 
    stop 
    ;; 
  restart) 
    restart 
    ;; 
  reload) 
    restart 
    ;; 
  condrestart) 
    condrestart 
    ;; 
  status) 
    rhstatus 
 ;; 
  check) 
    check 
    ;; 
  *) 
    echo $"Usage: haproxy {start|stop|restart|reload|condrestart|status|check}" 
    RETVAL=1
esac 
 
exit $RETVAL

本新闻共3页,当前在第1页  1  2  3  

分享道
相关新闻