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 {

标签: