你好,游客 登录 注册 搜索
背景:
阅读新闻

HAProxy + KeepAlived 实现WEB群集 on CentOS 6

[日期:2012-03-02] 来源:Linux社区  作者:jemlee2002 [字体: ]

1、前言

前一整子实现了一个基于 LVS (DR) + KeepAlived  群集的技术方案,但是在使用上和维护上却发现比HAProxy + KeepAlived 技术方案更难维护和实现,而对于WEB应用的群集 HAProxy + KeepAlived 已经搓搓有余了,所以今天向大家推荐HAProxy + KeepAlived 群集技术方案。 

2、环境
  1. CentOS6 (Linux Kernel 2.6.32-71.el6.i686)    
  2.     
  3. haproxy 1.4.19    
  4.     
  5. keepalived 1.1.17    
3、需要的IP配置
  1. Master IP:10.0.0.8    
  2.   
  3. Backup IP:10.0.0.6    
  4.   
  5. RealServer IP:10.0.0.5、10.0.0.6(兼)    

4、安装MASTER机器上的keepalived

  1. [root@RServer2 /]#mkdir /soft  
  2.   
  3. [root@RServer2 /]#cd /soft  
  4.   
  5. [root@RServer2 soft]# wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz  
  6.   
  7. [root@RServer2 soft]# tar -zxvf keepalived-1.1.17.tar.gz  
  8.   
  9. [root@RServer2 soft]# cd keepalived-1.1.17  
  10.   
  11. [root@RServer2 soft]# ./configure  
  12.   
  13. [root@RServer2 keepalived-1.1.17]# make;make install  
  14.   
  15. 顺利的话就这些步骤了,如果出现错误提示,那么根据具体的错误具体处理,一般可能出现的错误:  
  16.   
  17. 1)、OpenSSL,提示可能如下  
  18.   
  19. !!! OpenSSL is not properly installed on your system. !!!  
  20.   
  21. !!! Can not include OpenSSL headers files.  
  22.   
  23. 解决方案:运行yum -y installopenssl-devel  
  24.   
  25. 2)、提示没有gcc编译器  
  26.   
  27. 解决方案:运行yum installncurses-devel gcc gcc-c++ make rpm-build  
  28.   
  29. [root@RServer2 keepalived-1.1.17]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/keepalived  
  30.   
  31. [root@RServer2 keepalived-1.1.17]# cp /usr/local/sbin/keepalived /usr/sbin/  
  32.   
  33. [root@RServer2 keepalived-1.1.17]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/  
  34.   
  35. [root@RServer2 keepalived-1.1.17]# mkdir -p /etc/keepalived/  
  36.   
  37. [root@RServer2 keepalived-1.1.17]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf  
  38.   
  39. [root@RServer2 keepalived-1.1.17]# chmod +x /etc/init.d/keepalived  

5、编辑Master机器上的/etc/keepalived/keepalived.conf:

  1. 打开编辑器,比如VI或是gedit /etc/keepalived/keepalived.conf的内容如下,自己修改程序要的内容。  
  2.   
  3. #Master服务器上的配置 /etc/keepalived/keepalived.conf  
  4. global_defs {  
  5.    notification_email {  
  6.        leekexi@gmail.com #可以多个地址  
  7.    }  
  8.    notification_email_from leekexi@gmail.com   
  9.    smtp_server smtp.gmail.com   
  10.    smtp_connect_timeout 30  
  11.    router_id LVS_DEVEL  
  12. }  
  13.   
  14. vrrp_instance VI_1 {  
  15.     state MASTER #标示状态为MASTER 备份机为BACKUP  
  16.     interface eth0  
  17.     virtual_router_id 51  
  18.     priority 100   #MASTER权重要高于BACKUP 比如BACKUP为99  
  19.     advert_int 1  
  20.   
  21.     authentication {  
  22.         auth_type PASS #主从服务器验证方式  
  23.         auth_pass 1111  
  24.     }  
  25.     virtual_ipaddress {  
  26.         10.0.0.8 #可以多个虚拟IP,换行即可  
  27.     }  
  28. }  
  29.   
  30.   
  31. #虚拟服务器 80端口的配置  
  32. virtual_server 10.0.0.8 80 {  
  33.     delay_loop 6  
  34.     lb_algo rr  
  35.     protocol TCP  
  36.   
  37.     real_server 10.0.0.5 80 {  
  38.         weight  5  
  39.         TCP_CHECK {  
  40.             connect_timeout 10  
  41.             nb_get_retry 3  
  42.             delay_before_retry 3  
  43.             connect_port 80  
  44.         }  
  45.     }  
  46.   
  47.     real_server 10.0.0.6 80 {  
  48.         weight  5  
  49.         TCP_CHECK {  
  50.             connect_timeout 10  
  51.             nb_get_retry 3  
  52.             delay_before_retry 3  
  53.             connect_port 80  
  54.         }  
  55.     }  
  56.   
  57. }  

6、编辑Master机器上安装HAProxy

  1. 下载地址:http://haproxy.1wt.eu/download/1.4/src/   
  2. 选择合适的版本,一般选择比较新的版本会理想一些。   
  3. 我们假设下载到/soft目录下   
  4. #tar zcvf haproxy-1.4.19.tar.gz   
  5. # cd haproxy-1.4.19   
  6. # make TARGET=linux26 PREFIX=/usr/local/haproxy   
  7. # make install PREFIX=/usr/local/haproxy   
  8.   
  9. 在安装目录/usr/local/haproxy 建立conf文件夹 之后在该文件夹建立 haproxy.cfg 配置文件 用vi或是gedit打开haproxy.cfg配置文件  
  10. 配置文件的内容自行定义  
  11.   
  12. global  
  13.         log 127.0.0.1   local0  
  14.         maxconn 4096  
  15.         chroot /usr/local/haproxy  
  16.         uid 501  
  17.         gid 501  
  18.         daemon  
  19.         nbproc 1  
  20.         pidfile /usr/local/haproxy/logs/haproxy.pid  
  21.         debug  
  22.   
  23. defaults  
  24.         log     127.0.0.1       local3  
  25.         mode    http  
  26.         option httplog  
  27.         option httpclose  
  28.         option dontlognull  
  29.         option forwardfor  
  30.         option redispatch  
  31.         retries 2  
  32.         maxconn 2000  
  33.         balance roundrobin  
  34.         stats   uri     /haproxy-stats  
  35.         contimeout      5000  
  36.         clitimeout      50000  
  37.         srvtimeout      50000  
  38.   
  39. listen web_proxy 10.0.0.8:80  
  40.         server web1_10.0.0.6  10.0.0.6:80 cookie app1inst1 check inter 2000 rise 2 fall 5  
  41.         server web2_10.0.0.5  10.0.0.6:80 cookie app1inst2 check inter 2000 rise 2 fall 5  
  42.           
  43. cookie 1表示serverid为1,  
  44. check inter 1500 是检测心跳频率  
  45. rise 2是2次正确认为服务器可用  
  46. fall 3是3次失败认为服务器不可用  
  47. weight代表权重  
  48.   
  49. 加上日志支持  
  50. 编辑/etc/syslog.conf在最下边增加  
  51. local3.* /var/log/haproxy.log  
  52. local0.* /var/log/haproxy.log  
  53.   
  54. 编辑 /etc/sysconfig/syslog修改:   
  55. SYSLOGD_OPTIONS="-r -m 0"   
  56.   
  57. 重启日志服务  
  58. #service syslog restart  
7、BACKUP机器上与MASTER机器的差别 
  1. BACKUP的安装和Master的安装基本一致,只是一些参数略有变化。    
  2.     
  3. 变化的参数如下:    
  4.     
  5. 1、keepalived.conf文件中    
  6.     
  7. 原:state MASTER #标示状态为MASTER 备份机为BACKUP    
  8.     
  9. state BACKUP  #标示状态改为BACKUP    
  10.     
  11.      
  12.     
  13. 原:priority 100   #MASTER权重要高于BACKUP 比如BACKUP为99    
  14.     
  15. priority 99   #MASTER权重要高于BACKUP,MASTER为100,那么BACKUP略小于,比如99    
8、开机启动HAProxy
  1. 为了方便系统在开机时加载,还可以创建启动脚本:  
  2. # vim /etc/rc.d/init.d/haproxy  内容如下:  
  3.   
  4. #! /bin/sh  
  5. set -e  
  6.    
  7. PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin  
  8. PROGDIR=/usr/local/haproxy  
  9. PROGNAME=haproxy  
  10. DAEMON=$PROGDIR/sbin/$PROGNAME  
  11. CONFIG=$PROGDIR/conf/$PROGNAME.conf  
  12. PIDFILE=$PROGDIR/run/$PROGNAME.pid  
  13. DESC="HAProxy daemon"  
  14. SCRIPTNAME=/etc/init.d/$PROGNAME  
  15.    
  16. # Gracefully exit if the package has been removed.  
  17. test -x $DAEMON || exit 0  
  18.    
  19. start()  
  20. {  
  21.         echo -n "Starting $DESC: $PROGNAME"  
  22.         $DAEMON -f $CONFIG  
  23.         echo "."  
  24. }  
  25.    
  26. stop()  
  27. {  
  28.         echo -n "Stopping $DESC: $PROGNAME"  
  29.         haproxy_pid=cat $PIDFILE  
  30.         kill $haproxy_pid  
  31.         echo "."  
  32. }  
  33.    
  34. restart()  
  35. {  
  36.         echo -n "Restarting $DESC: $PROGNAME"  
  37.         $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)  
  38.         echo "."  
  39. }  
  40.    
  41. case "$1" in  
  42.   start)  
  43.         start  
  44.         ;;  
  45.   stop)  
  46.         stop  
  47.         ;;  
  48.   restart)  
  49.         restart  
  50.         ;;  
  51.   *)  
  52.         echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2  
  53.         exit 1  
  54.         ;;  
  55. esac   
  56.   
  57. exit 0  
  58.   
  59.    
  60.   
  61. 保存后赐予可执行权限  
  62. # chmod +x /etc/rc.d/init.d/haproxy  
  63.   
  64. 就可以使用 service haproxy start|stop|restart 来控制服务的启动停止跟重启。  
  65. 并通过以下命令加载到开机服务启动列表  
  66. # chkconfig --add haproxy  

8、维护HAProxy和Keepalived

  1. 1)、keepAlived维护    
  2.     
  3. 启动:/etc/init.d/keepalived start    
  4.     
  5. 停止:/etc/init.d/keepalived stop    
  6.     
  7. 重启:/etc/init.d/keepalived restart   
  8.   
  9. 2)、haproxy维护  
  10. <pre name="code" class="html">启动:service haproxy start    
  11.     
  12. 停止:service haproxy stop    
  13.     
  14. 重启:service haproxy restart   
linux
相关资讯       CentOS教程  群集 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款