精品负载均衡haproxy+keepalived

  categories:资料  author:

来源:互联网

一、 什么是HAProxy

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

二、 什么是keepalived

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器

三、 keepalived+HAProxy

通过keepalived做高可用性,用haproxy做负载均衡就得到了如下的结构

wps_clip_image-3825[3][1]

四、 HAProxy安装

1. HAProxy的安装

在“http://haproxy.1wt.eu/#down”下载HAProxy的源码包

wps_clip_image-495[3][1]

我的选择是1.4.16版本,安装在目录/home/admin/haproxy为例

解压下载的源码包

tar -xzvf haproxy-1.3.20.tar.gz

2.编译安装

进入解压后的源码目录

make TARGET=linux26 PREFIX=/home/admin/haproxy install

(注意,TARGET后面根据本机操作系统内核版本来填写,PREFIX是要安装到的目录)

安装完成后会在安装目录下生成doc ,sbin ,share三个文件夹。解压的源码文件也可以删除掉。

3.创建配置文件

在安装目录下建立配置文件目录

mkdir conf

在新创建的目录下创建配置文件

vi haproxy.cfg

后面介绍配置文件如何配置

4.创建日志文件

在安装目录下建立配置文件目录

mkdir logs

vi haproxy.log

5.创建启动、关闭脚本,名为haproxy.sh,放在安装目录的sbin目录下,修改权限为可执行

wps_clip_image-28019[3][1]

五、 HAProxy配置

1. 主配置文件haproxy.conf的配置

wps_clip_image-17826[3][1]

2.日志输出的配置

创建日志目录

使用非root账户这里是admin账户创建日志文件

mkdir /home/admin/haproxy/logs

修改操作系统的日志配置

HAProxy可以收集本机及其他后端服务器日志,但是需要在HAProxy和操作系统上作一些配置。

使用root账户首先修改/etc/sysconfig/syslog文件,将SYSLOGD_OPTIONS=”-m 0” 修改为SYSLOGD_OPTIONS=”-m 0 -r -x”,支持收集远程服务器日志。

然后修改/etc/syslog.conf,增加如下语句:

local0.* /home/admin/haproxy/logs/haproxy.log // haproxy.log地址代表了需要存储日志的地址,其中local0这个级别要和haproxy.cfg配置的log级别一样

执行service syslog restart,重新启动系统日志器

更改日志文件用户

chown admin:admin /home/admin/haproxy/logs/haproxy.log

六、 HAProxy启动测试

执行sbin/haproxy.sh start或sbin/haproxy –f ../conf/haproxy.conf启动haproxy

ps –ef |grep haproxy查看是否已经启动

通过客户端浏览器访问http://10.1.153.78:1080/admin?stats

wps_clip_image-29778[3][1]

关闭执行sbin/haproxy.sh stop 或 kill -9 pid

七、 Keepalived安装

解压缩

tar -zxvf keepalived-1.2.2.tar.gz

进入解压的目录

cd keepalived-1.2.2

./configure –prefix=/usr/local/keepalived

make

make install

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir -p /etc/keepalived/

cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

八、 Keepalived配置

主负载上的配置情况:

文件/etc/keepalived/keepalived.conf

wps_clip_image-27702[3][1]

文件/etc/keepalived/check_haproxy.sh wps_clip_image-15263[3][1]

备份负载的配置情况:

wps_clip_image-8024[3][1]

wps_clip_image-22720[3][1]

九、 Keepalived启动测试

主备分别执行/etc/init.d/keepalived start

主负载的ip情况:

wps_clip_image-12154[3][1]

备份负载的ip情况

wps_clip_image-20580[3][1]

当主负载宕机或网络连接不上则备份负载的ip情况会自动变化如下

wps_clip_image-13455[3][1]

十、 问题

存在一个问题,主负载机器正常时,备用负载机器上是没有虚拟ip的,这样将导致haproy启动失败,因为haproxy在启动时会检测所配置的虚拟ip以及ip的端口号,目前的处理方法是:

1、 主负载启动keepalived正常,并会自动启动haproxy

2、 启动备用负载的keepalived,暂时不启动haproxy

3、 停掉主负载的虚拟机(模拟主负载宕机现象)

4、 备用负载获得虚拟ip,启动手动启动haproxy

5、 恢复主负载机器,备用负载虚拟ip消失

6、 达到预期效果

十一、 注意事项

HAProxy的所有监听必须指定虚机ip,不能使用本机ip,因为主负载机器和备用负载机器的实际ip是不一样的

Keepalived中必须包含所有haproxy设置的虚拟ip,当主负载宕机后,可由备用负载完全接管haproxy的所有虚拟ip



快乐成长 每天进步一点点