当前位置:编程学习 > 网站相关 >>

Haproxy+KeepAlived 负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。还可以使用nginx来实现,不过nginx只工作在7层网络之上。详细请参考抚琴煮酒写的“软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比”这篇文章,简单很详细,很好。

HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

我现在用HAProxy主要在于它有以下优点,这里我总结下:

一、免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;

二、根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;

三、HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;

四、自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

五、HAProxy支持虚拟主机。

 

1.实验环境

[plain]
系统版本:CentOS release 5.9 (Final) x86 32位 
HAProxy版本:1.4.8 
Keepalived版本:1.2.4 
  
 
MASTER_IP:192.168.207.130   
BACKUP_IP:192.168.207.131  
  
VIP:192.168.207.141   
WEB_1:192.168.207.129 80端口   
WEB_2:192.168.207.130 8080端口 
WEB_3:192.168.207.131 8080端口 

系统版本:CentOS release 5.9 (Final) x86 32位
HAProxy版本:1.4.8
Keepalived版本:1.2.4
 

MASTER_IP:192.168.207.130 
BACKUP_IP:192.168.207.131
 
VIP:192.168.207.141 
WEB_1:192.168.207.129 80端口 
WEB_2:192.168.207.130 8080端口
WEB_3:192.168.207.131 8080端口
iptables和selinux都关掉

2.Haproxy安装

[plain]
cd /usr/local/src 
mkdir haproxy 
cd haproxy 
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz 
tar xf haproxy-1.4.8.tar.gz 
cd haproxy-1.4.8 
make TARGET=linux26;make install 
#这里你也可以这样写make TARGET=linux26 --prefix=/usr/local/haproxy,给haproxy安装添加个路径 

cd /usr/local/src
mkdir haproxy
cd haproxy
wget  tar xf haproxy-1.4.8.tar.gz
cd haproxy-1.4.8
make TARGET=linux26;make install
#这里你也可以这样写make TARGET=linux26 --prefix=/usr/local/haproxy,给haproxy安装添加个路径
写haproxy的配置文件,主从都一样的,都用这个配置文件[plain] view plaincopyprint?useradd haproxy 
vi /etc/haproxy.cfg 

useradd haproxy
vi /etc/haproxy.cfg
内容如下:


[plain]
global 
            log 127.0.0.1   local0       #这个是日志 
            maxconn 65535   
            user haproxy 
            group haproxy 
            daemon                      #以后台进程的方式打开 
            nbproc 8                    #haproxy的进程数 
            pidfile /tmp/haproxy.pid 
 
defaults 
             log     127.0.0.1       local3 
             mode   http 
             option httplog 
             option httpclose 
             option dontlognull 
             option forwardfor 
             option redispatch 
             retries 2 
             maxconn 65535 
             balance roundrobin                         #为了更好的观察出结果,这里就用roundrobin简单轮训,source算法了 
             stats   uri     /web-status                #这个是管理的url地址,配好后,只要输入http://ip或者VIP/web-status就可以访问了 
             contimeout      5000 
             clitimeout      50000 
             srvtimeout      50000 
 
listen  web_vip 0.0.0.0:80              #这里也要注意千万不要绑定VIP地址,keepalived主服务器还可以,但是备份服务器是不行的,因为只有keepalived是主的时候,才会在此服务器上设定VIP,所以咯,就用0.0.0.0吧 
            mode http 
            option httplog 
            log global 
            option httpchk HEAD /index.html HTTP/1.0        #这里呢,你得在三台web服务器上分别建立个index.html页面,可以添加不同的内容,给待会测试用,内容分别填写129:80,130:8080,131:8080好了,如果没有,haproxy会认为对应的web服务器挂掉了。 
            server web1  192.168.207.129:80   weight 5  check inter 2000 rise 2 fall 3 
            server web2  192.168.207.130:8080 weight 5  check inter 2000 rise 2 fall 3 
            server web3  192.168.207.131:8080 weight 5  check inter 2000 rise 2 fall 3 

global
            log 127.0.0.1   local0       #这个是日志
            maxconn 65535 
            user haproxy
       &nbs

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,