使用Haproxy
Haproxy是目前比較流行的一種集群調(diào)度工具 四層負(fù)載均衡;七層負(fù)載均衡;
Haproxy 與LVS、Nginx的比較
LVS性能最好,但是搭建相對(duì)復(fù)雜 四層負(fù)載均衡
Nginx的upstream模塊支持集群功能已球,但是對(duì)集群節(jié)點(diǎn)健康檢查功能不強(qiáng),性能沒有Haproxy好 七層負(fù)載均衡
比較:
Nginx:
網(wǎng)絡(luò)穩(wěn)定性的依賴非常小辅愿,承擔(dān)高負(fù)載壓力且穩(wěn)定智亮,
負(fù)載均衡和反向代理,可以作為中層反向代理使用
LVS:
抗負(fù)載能力強(qiáng)点待,高可用阔蛉,高性能
Haproxy:
支持tcp協(xié)議的負(fù)載均衡轉(zhuǎn)發(fā),負(fù)載均衡策略多
LVS的負(fù)載調(diào)度算法:
輪詢(RR),加權(quán)輪詢(WRR)癞埠,最少連接(LC)状原,加權(quán)最少連接(WLC)
Nginx的負(fù)載調(diào)度算法:
輪詢(RR),IP-HASH(基于來源IP地址),URL-HASH(基于來源url地址)苗踪,F(xiàn)air(智能)
Haproxy的負(fù)載調(diào)度算法:
輪詢(RR)颠区,最小連接數(shù)(LC),基于來源訪問調(diào)度(SH)
HTTP請(qǐng)求方式:
GET方式
POST方式
返回狀態(tài)碼
正常的狀態(tài)碼為1xx信息提示通铲、2××成功毕莱、3××重定向
異常的狀態(tài)碼為4××請(qǐng)求錯(cuò)誤、5××服務(wù)器錯(cuò)誤
實(shí)驗(yàn)
-----client---------haproxy-------Nginx1---------Nginx2------
| | | |
192.168.1.254 192.168.1.1 192.168.1.2 192.168.1.3
一、安裝Nginx (兩個(gè)安裝相同)
[root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar -zxvf nginx-1.6.0.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.6.0/
[root@localhost nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx
--group=nginx --with-file-aio --with-http_stub_status_module
--with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module
[root@localhost nginx-1.6.0]# make && make install
[root@localhost ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@localhost ~]# nginx -t
[root@localhost ~]# nginx
[root@localhost ~]# netstat -anpt | grep 80
[root@localhost ~]# killall -s HUP nginx //重新加載
[root@localhost ~]# killall -s QUIT nginx //關(guān)閉服務(wù)
[root@localhost ~]# nginx
WEB——1:
[root@localhost ~]#echo "192.168.1.2 web server" >
/usr/local/nginx/html/index.html
web——2:
[root@localhost ~]#echo "192.168.1.3 web server" >
/usr/local/nginx/html/index.html
二朋截、安裝haproxy
1蛹稍、安裝
[root@localhost ~]# yum -y install pcre-devel zlib-devel
[root@localhost ~]# tar -zxvf haproxy-1.4.24.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-1.4.24/
[root@localhost ~]# make TARGET=linux26 PREFIX=/usr/local/haproxy
注意:linux26是指linux的內(nèi)核版本號(hào)。
[root@localhost ~]# make install PREFIX=/usr/local/haproxy
2质和、配置haproxy
[root@localhost ~]# mkdir /etc/haproxy 創(chuàng)建配置文件目錄
[root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.cfg /etc/haproxy/
將配置文件復(fù)制到配置文件目錄
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
修改:
#配置介紹haproxy配置文件通常分為三個(gè)部分稳摄,即global稚字、default和listen饲宿。global為全局配置,defaults為默認(rèn)配置胆描,listen為應(yīng)用組件配置
global
log 127.0.0.1 local0 //配置日志記錄瘫想,local0為日志設(shè)備,默認(rèn)放到系統(tǒng)日志
log 127.0.0.1 local1 notice //notice為日志級(jí)別昌讲,通常有24個(gè)級(jí)別
#log loghost local0 info
maxconn 4096 //最大連接數(shù)
chroot /usr/share/haproxy 禁錮
uid 99 用戶
gid 99 用戶
#debug
#quiet
defaults
log global 定義日志為global配置中的日志定義
mode http 模式為http
option httplog 采用http日志格式記錄日志
retries 3 檢查節(jié)點(diǎn)服務(wù)器失敗次數(shù)国夜,連續(xù)達(dá)到三次失敗,則認(rèn)為節(jié)點(diǎn)不可用
#redispatch
maxconn 2000 最大連接數(shù)
contimeout 50 連接超時(shí)時(shí)間
clitimeout 50 客戶端超時(shí)時(shí)間
srvtimeout 50 服務(wù)器超時(shí)時(shí)間
listen webcluster 0.0.0.0:80 定義一個(gè)webcluster的應(yīng)用
option httpchk GET /index.html 注意:可以刪除
balance roundrobin 負(fù)載均衡調(diào)度算法使用輪詢算法
server inst1 192.168.1.2:80 check inter 2000 fall 3 //定義在線節(jié)點(diǎn)
server inst2 192.168.1.3:80 check inter 2000 fall 3
3短绸、啟動(dòng)haproxy
[root@localhost ~]# ln -s /usr/local/haproxy/sbin/* /usr/sbin/ //注意軟鏈接的目錄
[root@localhost ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
[root@localhost ~]# chmod +x /etc/init.d/haproxy
[root@localhost ~]# /etc/init.d/haproxy start
[root@localhost ~]# /etc/init.d/haproxy status
[root@localhost ~]# netstat -anp | grep haproxy //占用的也是TCP的80端口
[root@localhost ~]# chkconfig --add haproxy
[root@localhost ~]# chkconfig haproxy on
注意:
如果啟動(dòng)時(shí)出現(xiàn)報(bào)錯(cuò):/haproxy.main()] Cannot chroot(/usr/share/haproxy)
則手動(dòng)創(chuàng)建:
[root@localhost ~]# mkdir /usr/share/haproxy
如果啟動(dòng)時(shí)出現(xiàn)報(bào)錯(cuò):Starting proxy cacti: cannot bind socket
則執(zhí)行:
[root@localhost ~]# sysctl -e
net.ipv4.ip_nonlocal_bind=1
三车吹、驗(yàn)證:
客戶端輸入:
http://192.168.1.1/
注意:haproxy本身是沒有日志文件,為此需要配置生成醋闭。