Haproxy+Keepalived主主高可用

介绍
HAProxy是高性能的代理服务器,其可以提供7层和4层代理,具有healthcheck,负载均衡等多种特性,性能卓越,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。

KeepAlived是一个高可用方案,通过VIP(即虚拟IP)和心跳检测来实现高可用。其原理是存在一组(两台)服务器,分别赋予Master,Backup两个角色,默认情况下Master会绑定VIP到自己的网卡上,对外提供服务。Master,Backup会在一定的时间间隔向对方发送心跳数据包来检测对方的状态,这个时间间隔一般为2秒钟,如果Backup发现Master宕机,那么Backup会发送ARP包到网关,把VIP绑定到自己的网卡,此时Backup对外提供服务,实现自动化的故障转移,当Master恢复的时候会重新接管服务。

推荐阅读:

CentOS 6.3下Haproxy+Keepalived+Apache配置笔记

Haproxy + KeepAlived 实现WEB群集 on CentOS 6 

Keepalived+Haproxy配置高可用负载均衡

Haproxy+Keepalived构建高可用负载均衡

我们的keepalived主主的应用场景:因为我们需要同时为主域名和图片服务器域名同时提供分发请求,所以用到了Haproxy+keepalived主主模式。

默认情况下,第一台负载均衡器主要分发的请求,第二台负载均衡器主要分发img.linuxidc.com的请求。任意一台宕机都不会影响网站分发。这样不会导致服务器浪费。

Haproxy+Keepalived主主高可用

VIP1=192.168.150.222            ()
VIP2=192.168.150.223            (img.linuxidc.com)
haproxy01=192.168.150.110
haproxy02=192.168.150.112
web1=192.168.158.116
web2=192.168.158.117
web3=192.168.158.118
img1=192.168.158.119
img2=192.168.158.120

安装配置过程

1、安装配置过程,(两台Haproxy的安装配置步骤一样)
haproxy下载地址:
#cd /usr/local/src
#wget 
#tar xf  haproxy-1.4.24.tar.gz
#cd haproxy-1.4.24
#make TARGET=linux26 ARCH=x86_64 
#编译参数参考README,其中TARGET是指定内核版本,ARCH指定CPU架构,
#make  install
2、安装完毕后,创建配置文件和启动文件。
#mkdir /etc/haproxy
#cp examples/haproxy.cfg  /etc/haproxy
#cp examples/haproxy.init  /etc/init.d/haproxy
#chmod +x /etc/init.d/haproxy
#ln -s /usr/local/sbin/haproxy /usr/sbin/

3、编辑配置文件(两台Haproxy配置文件相同)
# vim /etc/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
    log 127.0.0.1  local0    #日志输出配置,所有日志都记录在本机,通过local0输出
    log 127.0.0.1 local1 notice             
    #log loghost  local0 info   
    maxconn 65535                        #最大连接数
    chroot /usr/local/                  #改变当前工作目录。
    uid 99                              #所属用户的uid   
    gid 99                              #所属运行的gid
    daemon                              #以后台形式运行haproxy
defaults
  log global
  mode http 
  #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
  option dontlognull
  option httplog
  retries 3                        #两次连接失败就认为是服务器不可用
  option redispatch   
  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
  option abortonclose 
  #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
  maxconn 65535                      #默认的最大连接数
#timeout http-keep-alive 10s
# timeout queue 1m
  contimeout                5000      #连接超时
  clitimeout                50000    #客户端超时
  srvtimeout                50000    #服务器超时
  timeout check 5s                    #心跳检测超时
  stats refresh 30s                  #统计页面自动刷新时间     
  stats uri  /stats                  #统计页面url         
  stats realm linuxidc-test-Haproxy    #统计页面密码框上提示文本
  stats auth admin:admin123          #统计页面用户名和密码设置     
  stats hide-version                  #隐藏统计页面上HAProxy的版本信息
frontend www
  bind :80 
  #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。
  acl web hdr(host) -i    
  #acl后面是规则名称,-i是要访问的域名,如果访问这个域名就分发到下面的webserver 的作用域。
  acl img hdr(host) -i img.linuxidc.com   
  #如果访问img.linuxidc.com就分发到imgserver这个作用域。
  use_backend webserver if web
  use_backend imgserver if img
                                                                                                                                                                                                                           
backend    webserver            #webserver作用域
  mode http
  balance  roundrobin         
  #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数
  option  httpchk /index.html 
  #检测文件,如果分发到后台index.html访问不到就不再分发给它。
                                                                                                                                                                                                                           
server    web01 192.168.158.116:80  check inter 2000 fall 3 weight 20
server    web02 192.168.158.117:80  check inter 2000 fall 3 weight 10
server    web03 192.168.158.118:80  check inter 2000 fall 3 weight 10
                                                                                                                                                                                                                           
backend imgserver
  mode http
  option  httpchk /index.php
  balance    roundrobin                             
 server    img01 192.168.149.119:80  check inter 2000 fall 3
 server    img02 192.168.149.120:80  check inter 2000 fall 3

4、启动Haproxy服务,查看状态。

#service  haproxy  start

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d29882af10038c95f0a78cc7d2e19afe.html