[键入公司名称]
高可用性负载均衡
HAProxy+keepalived
盛春光 2011/9/1
通过keepalived和haproxy两个开源的软件,实现高可用性的负载均衡,本文简单介绍了如何搭建配置此环境
1
shengcg HAProxy+keepalived
目录
一、 二、 三、 四、 五、 六、 七、 八、 九、 十、 十一、
什么是HAProxy ................................................................................................................ 3 什么是keepalived ............................................................................................................ 3 keepalived+HAProxy ......................................................................................................... 3 HAProxy安装 .................................................................................................................... 4 HAProxy配置 .................................................................................................................... 5 HAProxy启动测试 ............................................................................................................ 6 Keepalived安装 ................................................................................................................ 7 Keepalived配置 ................................................................................................................ 7 Keepalived启动测试 ........................................................................................................ 9 问题 ................................................................................................................................. 10 注意事项 ..................................................................................................................... 10
2
shengcg HAProxy+keepalived
一、 什么是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做负载均衡就得到了如下的结构
3
shengcg HAProxy+keepalived
四、 HAProxy安装
1. HAProxy的安装
在“http://haproxy.1wt.eu/#down”下载HAProxy的源码包
我的选择是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目录下,修改权限为可执行
4
shengcg HAProxy+keepalived
五、 HAProxy配置
1. 主配置文件haproxy.conf的配置
5
shengcg HAProxy+keepalived
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
6
shengcg HAProxy+keepalived
关闭执行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
7
shengcg HAProxy+keepalived
文件/etc/keepalived/check_haproxy.sh
备份负载的配置情况:
8
shengcg HAProxy+keepalived
九、 Keepalived启动测试
主备分别执行/etc/init.d/keepalived start 主负载的ip情况:
备份负载的ip情况
当主负载宕机或网络连接不上则备份负载的ip情况会自动变化如下
9
shengcg HAProxy+keepalived
十、 问题
存在一个问题,主负载机器正常时,备用负载机器上是没有虚拟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
10
shengcg HAProxy+keepalived
11
因篇幅问题不能全部显示,请点此查看更多更全内容