来源:互联网
一、 什么是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做负载均衡就得到了如下的结构
四、 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目录下,修改权限为可执行
五、 HAProxy配置
1. 主配置文件haproxy.conf的配置
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
关闭执行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
文件/etc/keepalived/check_haproxy.sh
备份负载的配置情况:
九、 Keepalived启动测试
主备分别执行/etc/init.d/keepalived start
主负载的ip情况:
备份负载的ip情况
当主负载宕机或网络连接不上则备份负载的ip情况会自动变化如下
十、 问题
存在一个问题,主负载机器正常时,备用负载机器上是没有虚拟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