HAProxy Keepalived实现web服务器负载均衡
HAProxy keepalived实现web 服务器负载均衡说明:操作系统:CentOS 5.X 64位Web 服务器:192.168.21.127、192.168.21.128站点:bbs.osy
HAProxy keepalived实现web 服务器负载均衡
说明:
操作系统:CentOS 5.X 64位
Web 服务器:192.168.21.127、192.168.21.128
站点:bbs.osyunwei.com 和sns.osyunwei.com 部署在两台Web 服务器上 实现目的:
增加两台服务器(主主模式),通过HAProxy Keepalived实现Web 服务器负载均衡 架构规划:
HAProxy 服务器:192.168.21.129、192.168.21.130
虚拟服务器(VIP ):192.168.21.253、192.168.21.254
部署完成之后:
1、VIP :192.168.21.253指向192.168.21.129;VIP :192.168.21.254指向192.168.21.130;
2、当192.168.21.129宕机时,VIP :192.168.21.253漂移到192.168.21.130上;
3、当192.168.21.130宕机时,VIP :192.168.21.254漂移到192.168.21.129上; 这样的主主模式好处是,两台服务器在提供服务的同时,又互为对方的备份服务器。 具体操作:
第一部分:在两台HAProxy 服务器上分别操作
一、关闭SElinux 、配置防火墙
1、vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
,SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
2、vi /etc/sysconfig/iptables #编辑
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT #允许组播地址通信
-A RH-Firewall-1-INPUT -p vrrp -j ACCEPT #允许VRRP (虚拟路由器冗余协)通信
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙
:wq! #保存退出
/etc/init.d/iptables restart #重启防火墙使配置生效
二、安装HAProxy
1、创建HAProxy 运行账户和组
groupaddhaproxy #添加haproxy 组
useradd -ghaproxyhaproxy -s /bin/false #创建nginx 运行账户haproxy 并加入到haproxy 组,不允许haproxy 用户直接登录系统
2、安装编译工具
yum install gccgcc-c make openssl-devel kernel-devel
3、安装HAProxy
HAProxy 下载地址:http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz 上传haproxy-1.4.24.tar.gz 到/usr/local/src目录中
,cd /usr/local/src #进入软件包存放目录
tar zxvf haproxy-1.4.24.tar.gz #解压
cd haproxy-1.4.24 #进入安装目录
make TARGET=linux26 CPU=x86_64 PREFIX=/usr/local/haprpxy #编译
make install PREFIX=/usr/local/haproxy #安装
参数说明:
TARGET=linux26 #使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26
CPU=x86_64 #使用uname -r查看系统信息,如x86_64 x86_64x86_64 GNU/Linux,此时该参数就为x86_64
PREFIX=/usr/local/haprpxy #/usr/local/haprpxy为haprpxy 安装路径
4、设置HAProxy
mkdir -p /usr/local/haproxy/conf #创建配置文件目录
mkdir -p /etc/haproxy #创建配置文件目录
cp
/usr/local/src/haproxy-1.4.24/examples/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg #拷贝配置模板文件
ln -s /usr/local/haproxy/conf/haproxy.cfg /etc/haproxy/haproxy.cfg #添加配置文件软连接
cp
-r /usr/local/src/haproxy-1.4.24/examples/errorfiles /usr/local/haproxy/errorfiles #拷贝错误页面
,ln -s /usr/local/haproxy/errorfiles /etc/haproxy/errorfiles #添加软连接
mkdir -p /usr/local/haproxy/log #创建日志文件目录
touch /usr/local/haproxy/log/haproxy.log #创建日志文件
ln -s /usr/local/haproxy/log/haproxy.log /var/log/haproxy.log #添加软连接 cp
/usr/local/src/haproxy-1.4.24/examples/haproxy.init /etc/rc.d/init.d/haproxy #拷贝开机启动文件
chmod x /etc/rc.d/init.d/haproxy #添加脚本执行权限
chkconfighaproxy on #设置开机启动
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin #添加软连接
5、配置haproxy.cfg 参数
cp /usr/local/haproxy/conf/haproxy.cfg /usr/local/haproxy/conf/haproxy.cfg-bak #备份
vi /usr/local/haproxy/conf/haproxy.cfg #编辑,修改
#####################################################################
# thisconfig needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0 #在本机记录日志
log 127.0.0.1 local1 notice
#log loghost local0 info
,maxconn 65535 #每个进程可用的最大连接数
chroot /usr/local/haproxy #haproxy安装目录
uid 500 #运行haproxy 的用户uid (cat /etc/passwd查看)
gid 500 #运行haproxy 的组uid (cat /etc/group查看)
daemon #以后台守护进程运行
pidfile /usr/local/haproxy/haproxy.pid #将所有进程写入pid 文件
#debug #调试模式
#quiet #安装模式
defaults
#log global
log 127.0.0.1 local3 #日志文件设置
mode http #运行模式tcp 、http 、health
option httplog
option httpclose #每次请求完毕后主动关闭http 通道
option dontlognull #不记录健康检查的日志信息
option redispatch #如果后端有服务器宕机,强制切换到正常服务器
option abortonclose #丢弃由于客户端等待时间过长而关闭连接但仍在haproxy 等待队列中的请求
option forwardfor #获取客户端真实访问IP
option originalto #记录客户端访问的目的IP
maxconn 65535 #每个进程可用的最大连接数
,balance source #同一IP 地址的所有请求都发送到同一服务器
retries 3 #三次连接失败,则判断服务不可用
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
timeout check 5s #检测超时
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy-status #统计页面URL 路径
stats realm haproxy-status #统计页面输入密码框提示信息
stats auth admin:123456 #统计页面用户名和密码
stats hide-version #隐藏统计页面上HAProxy 版本信息
frontend web #自定义描述信息
bind :80 #监听80端口
acl bbs.osyunwei.com hdr(host) -i bbs.osyunwei.com #规则设置,-i 后面是要访问的域名,如果访问bbs.osyunwei.com 这个域名,就负载均衡到bbs.osyunwei.com 作用域
use_backend bbs.osyunwei.com if bbs.osyunwei.com #acl和if 后面的名称必须相同这里为bbs.osyunwei.com
acl sns.osyunwei.com hdr(host) -i sns.osyunwei.com #规则设置,-i 后面是要访问的域名,如果访问sns.osyunwei.com 这个域名,就负载均衡到sns.osyunwei.com 作用域
use_backend sns.osyunwei.com if sns.osyunwei.com
backend bbs.osyunwei.com
mode http
,balance source
#option httpchk /index.php #检测服务器此文件是否存在,如果没有,则认为服务器连接异常,此参数可以不设置
server 192.168.21.127 192.168.21.127:80 check inter 2000 rise
3 fall 3 weight 100 #inter 2000 心跳检测时间;rise 3 三次连接成功,表示服务器正常;fall 3 三次连接失败,表示服务器异常; weight 100 权重设置
server 192.168.21.128 192.168.21.128:80 check inter 2000 rise
3 fall 3 weight 100
backend sns.osyunwei.com
mode http
balance source #设置负载均衡模式,source 保存session 值,roundrobin 轮询模式 #option httpchk /index.php #检测服务器此文件是否存在,如果没有,则认为服务器连接异常,此参数可以不设置
server 192.168.21.127 192.168.21.127:80 check inter 2000 rise
3 fall 3 weight 100
server 192.168.21.128 192.168.21.128:80 check inter 2000 rise
3 fall 3 weight 100
#errorloc 503 http://www.osyunwei.com/404.html
errorfile 403 /etc/haproxy/errorfiles/403.http
errorfile 500 /etc/haproxy/errorfiles/500.http
,errorfile 502 /etc/haproxy/errorfiles/502.http
errorfile 503 /etc/haproxy/errorfiles/503.http
errorfile 504 /etc/haproxy/errorfiles/504.http
#####################################################################
:wq! #保存退出
service haproxy start #启动
service haproxy stop #关闭
service haproxy restart #重启
6、设置HAProxy 日志
vi /etc/syslog.conf #编辑,在最下边增加
# haproxy.log
local0.* /var/log/haproxy.log
local3.* /var/log/haproxy.log
:wq! #保存退出
vi /etc/sysconfig/syslog #编辑修改
SYSLOGD_OPTIONS="-r -m 0" #接收远程服务器日志
:wq! #保存退出
service syslog restart #重启syslog
三、安装keepalived
,下载keeplived :http://www.keepalived.org/software/keepalived-1.2.12.tar.gz 上传keepalived-1.2.12.tar.gz 到/usr/local/src目录
cd /usr/local/src
tarzxvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure #配置,必须看到以下提示,说明配置正确,才能继续安装
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
make #编辑
make install #安装
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
chmod x /etc/rc.d/init.d/keepalived #添加执行权限
chkconfigkeepalived on #设置开机启动
service keepalived start #启动
service keepalived stop #关闭
,service keepalived restart #重启
四、配置keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak vi /etc/keepalived/keepalived.conf #编辑,修改为以下代码
######################################################### #以下为192.168.21.129服务器:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_scriptchk_haproxy {