HAProxy
HAProxy 提供高可用性、負載均衡以及基於 TCP 和 HTTP 應用的代理,支持虛擬主機,它是免費、快速而且可靠的一種解決方案。HAProxy 特別適用於那些負載特大的 web 站點, 這些站點一般又須要會話保持或七層處理。HAProxy 運行在當前的硬件上,徹底能夠支持數以萬計的併發鏈接。而且它的運行模式使得它能夠很簡單安全的整 合進您當前的架構中, 同時能夠保護你的 web 服務器不被暴露到網絡上。
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
web