haproxy

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

HAProxy

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

1 (19).jpg

1)配置haproxy
haproxy-1.4.23.tar.gz
yum install rpm-build pcre-devel -y

cd /etc/haproxy/
vim haproxy.cfg
配置文件如下
# this config 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 localhost local0 info 日志等级,有erro,debug,waring等等
maxconn 4096 最大链接量
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet

defaults
log global
mode http
option httplog
option dontlognull
retries 3 重复链接三次都失败,则说明此服务器不可用
option redispatch 如果一台real server坏掉,让其它好的节点接管
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen www.semir.org *:80
cookie SERVERID rewrite 服务ID
balance roundrobin 负载算法
server web1 192.168.0.62:80 cookie app1inst1 check inter 2000 rise 2 fall 5 real server1
server web2 192.168.0.236:80 cookie app1inst2 check inter 2000 rise 2 fall 5 real server2

listen stats_auth 192.168.0.209:8080 这里是对监控页面所做的加密
stats enable
stats uri /status 监控页面
stats auth semir:westos 监控帐号和密码
stats refresh 5s 刷新频率

# mkdir /usr/share/haproxy
#/etc/init.d/haproxy start

配置日志信息
vim /etc/rsyslog.conf
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514 #打开这两行#

local0.* /var/log/haproxy.log

2)通过keepalive来调度haproxy
首先配置keepalive
! Configuration File for keepalived

vrrp_script check_haproxy {
script "/opt/check_haproxy.sh #听过调用脚本来控制haproxy的状态
interval 2
weight 2
}
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalive@server62.exaple.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 111
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.68
}
track_script {

check_haproxy #这里调用刚才建立那个资源
}
}

vim /opt/check_haproxy.sh
#!/bin/bash

[ -f /var/run/haproxy.pid ] || /etc/init.d/haproxy restart &> /dev/null #通过查看进程pid来判断haproxy的状态,

if [ $? -ne 0 ];
then
/etc/init.d/keepalived stop &> /dev/null #如果haproxy没有正确启动的话,那么keepalive也会被关掉
fi