HAProxy Keepalived實現(xiàn)web服務器負載均衡
HAProxy keepalived實現(xiàn)web 服務器負載均衡說明:操作系統(tǒng):CentOS 5.X 64位Web 服務器:192.168.21.127、192.168.21.128站點:bbs.osy
HAProxy keepalived實現(xiàn)web 服務器負載均衡
說明:
操作系統(tǒng):CentOS 5.X 64位
Web 服務器:192.168.21.127、192.168.21.128
站點:bbs.osyunwei.com 和sns.osyunwei.com 部署在兩臺Web 服務器上 實現(xiàn)目的:
增加兩臺服務器(主主模式),通過HAProxy Keepalived實現(xiàn)Web 服務器負載均衡 架構規(guī)劃:
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 (虛擬路由器冗余協(xié))通信
-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、創(chuàng)建HAProxy 運行賬戶和組
groupaddhaproxy #添加haproxy 組
useradd -ghaproxyhaproxy -s /bin/false #創(chuàng)建nginx 運行賬戶haproxy 并加入到haproxy 組,不允許haproxy 用戶直接登錄系統(tǒng)
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 #安裝
參數(shù)說明:
TARGET=linux26 #使用uname -r查看內(nèi)核,如:2.6.18-371.el5,此時該參數(shù)就為linux26
CPU=x86_64 #使用uname -r查看系統(tǒng)信息,如x86_64 x86_64x86_64 GNU/Linux,此時該參數(shù)就為x86_64
PREFIX=/usr/local/haprpxy #/usr/local/haprpxy為haprpxy 安裝路徑
4、設置HAProxy
mkdir -p /usr/local/haproxy/conf #創(chuàng)建配置文件目錄
mkdir -p /etc/haproxy #創(chuàng)建配置文件目錄
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 #創(chuàng)建日志文件目錄
touch /usr/local/haproxy/log/haproxy.log #創(chuàng)建日志文件
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 #添加腳本執(zhí)行權限
chkconfighaproxy on #設置開機啟動
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin #添加軟連接
5、配置haproxy.cfg 參數(shù)
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 #每個進程可用的最大連接數(shù)
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 #調(diào)試模式
#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 #每個進程可用的最大連接數(shù)
,balance source #同一IP 地址的所有請求都發(fā)送到同一服務器
retries 3 #三次連接失敗,則判斷服務不可用
contimeout 5000 #連接超時
clitimeout 50000 #客戶端超時
srvtimeout 50000 #服務器超時
timeout check 5s #檢測超時
stats refresh 30s #統(tǒng)計頁面自動刷新時間
stats uri /haproxy-status #統(tǒng)計頁面URL 路徑
stats realm haproxy-status #統(tǒng)計頁面輸入密碼框提示信息
stats auth admin:123456 #統(tǒng)計頁面用戶名和密碼
stats hide-version #隱藏統(tǒng)計頁面上HAProxy 版本信息
frontend web #自定義描述信息
bind :80 #監(jiān)聽80端口
acl bbs.osyunwei.com hdr(host) -i bbs.osyunwei.com #規(guī)則設置,-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 #規(guī)則設置,-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 #檢測服務器此文件是否存在,如果沒有,則認為服務器連接異常,此參數(shù)可以不設置
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 #檢測服務器此文件是否存在,如果沒有,則認為服務器連接異常,此參數(shù)可以不設置
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 #配置,必須看到以下提示,說明配置正確,才能繼續(xù)安裝
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 #添加執(zhí)行權限
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 {