aproxy配合Nginx搭建Web集群部署实验(图文详解)
文章目錄
一、常見的Web集群調(diào)度器
二、Haproxy應(yīng)用分析
三、Haproxy調(diào)度算法原理
四、Haproxy搭建 Web 群集
實(shí)驗(yàn)所需安裝包
環(huán)境配置
1、部署haproxy服務(wù)器(192.168.184.10)
2、編譯安裝Nginx服務(wù)器(192.168.184.20、192.168.184.30)
3、測試 Web集群
五、日志定義
一、常見的Web集群調(diào)度器
目前常見的Web集群調(diào)度器分為軟件和硬件
軟件通常使用開源的LVS、Haproxy、Nginx
LVS性能最好,但是搭建相對復(fù)雜;Nginx的upstream模塊支持集群功能,但是對集群節(jié)點(diǎn)健康檢查功能不強(qiáng),高并發(fā)沒有Haproxy好
硬件一般使用的比較多的是F5,也有很多人使用梭子魚、綠盟等國內(nèi)產(chǎn)品
二、Haproxy應(yīng)用分析
LVS在企業(yè)應(yīng)用中抗負(fù)載能力很強(qiáng),但存在不足
LVS不支持正則處理,不能實(shí)現(xiàn)動靜分離
對于大型網(wǎng)站,LVS的實(shí)施配置復(fù)雜,維護(hù)成功相對較高
Haproxy是一款可提供高可用性、負(fù)載均衡、及基于TCP和HTTP應(yīng)用的代理的軟件
適用于負(fù)載大的Web站點(diǎn)
運(yùn)行在硬件上可支持?jǐn)?shù)萬計(jì)的并發(fā)連接的連接請求
三、Haproxy調(diào)度算法原理
Haproxy支持多種調(diào)度算法,最常用的有三種
RR (Round Robin)
RR算法是最簡單常用的一種算法,即輪詢調(diào)度
LC(Least Connections)
最小連接數(shù)算法,根據(jù)后端的節(jié)點(diǎn)連接數(shù)大小動態(tài)分配前端請求。
SH(Source Hashing)
基于來源訪問調(diào)度算法,用于一些有Session會話記錄在服務(wù)器端的場景,可以基于來源的IP、Cookie等做集群調(diào)度
四、Haproxy搭建 Web 群集
實(shí)驗(yàn)所需安裝包
微云鏈接:Haproxy、Nginx安裝包
haproxy-1.5.19.tar.gz
nginx-1.12.0.tar.gz
環(huán)境配置
主機(jī) 操作系統(tǒng) IP地址 所需軟件/安裝包/工具
Haproxy-Server CentOS7 192.168.184.10 haproxy-1.5.19.tar.gz
Nginx-Server1 CentOS7 192.168.184.20 nginx-1.12.0.tar.gz
Nginx-Server2 CentOS7 192.168.184.30 nginx-1.12.0.tar.gz
客戶端 CentOS7 192.168.184.40 ————
1、部署haproxy服務(wù)器(192.168.184.10)
1.關(guān)閉防火墻,將安裝Haproxy所需軟件包傳到/opt目錄下
systemctl stop firewalld
setenforce 0
cd /opt
haproxy-1.5.19.tar.gz
1
2
3
4
5
2、編譯安裝 Haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
1
2
3
4
5
6
參數(shù)說明
TARGET=linux26 ARCH=x86_64
內(nèi)核版本 系統(tǒng)位數(shù),64位系統(tǒng)
使用uname -r查看內(nèi)核,如:2.6.18-371.el5,此時該參數(shù)用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
3、Haproxy服務(wù)器配置
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
cd /etc/haproxy/
vim haproxy.cfg
global
1
2
3
4
5
6
–4~5行–修改,配置日志記錄,local0為日志設(shè)備,默認(rèn)存放到系統(tǒng)日志
log /dev/log local0 info
log /dev/log local0 notice
#log loghost local0 info
maxconn 4096 #最大連接數(shù),需考慮ulimit-n限制
1
2
3
4
–8行–注釋,chroot運(yùn)行路徑,為該服務(wù)自設(shè)置的根目錄,一般需將此行注釋掉
#chroot /usr/share/haproxy
uid 99 #用戶UID
gid 99 #用戶GID
daemon #守護(hù)進(jìn)程模式
defaults
log global #定義日志為global配置中的日志定義
mode http #模式為http
option httplog #采用http日志格式記錄日志
option dontlognull #不記錄健康檢查日志信息
retries 3 #檢查節(jié)點(diǎn)服務(wù)器失敗次數(shù),連續(xù)達(dá)到三次失敗,則認(rèn)為節(jié)點(diǎn)不可用
redispatch #當(dāng)服務(wù)器負(fù)載很高時,自動結(jié)束當(dāng)前隊(duì)列處理比較久的連接
maxconn 2000 #最大連接數(shù)
contimeout 5000 #連接超時時間
clitimeout 50000 #客戶端超時時間
srvtimeout 50000 #服務(wù)器超時時間
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
–刪除下面所有l(wèi)isten項(xiàng)–,添加
listen webcluster 0.0.0.0:80
option httpchk GET /test.html #檢查服務(wù)器的test.html文件
balance roundrobin #負(fù)載均衡調(diào)度算法使用輪詢算法roundrobin
server inst1 192.168.80.100:80 check inter 2000 fall 3 #定義在線節(jié)點(diǎn)
server inst2 192.168.80.101:80 check inter 2000 fall 3
1
2
3
4
5
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
2、編譯安裝Nginx服務(wù)器(192.168.184.20、192.168.184.30)
systemctl stop firewalld
setenforce 0
yum install -y pcre-devel zlib-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx #啟動nginx 服務(wù)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
192.168.184.20
echo “this is lic web” > /usr/local/nginx/html/test.html
1
在這里插入圖片描述
192.168.184.30
echo “this is kiki web” > /usr/local/nginx/html/test.html
1
在這里插入圖片描述
啟動Haproxy服務(wù)(192.168.184.10)
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
cd /etc/init.d/
ls
chmod +x haproxy
service haproxy start
1
2
3
4
5
在這里插入圖片描述
在這里插入圖片描述
3、測試 Web集群
在客戶端使用瀏覽器打開 http://192.168.184.10/test.html ,不斷刷新瀏覽器測試負(fù)載均衡效果
在這里插入圖片描述
在這里插入圖片描述
五、日志定義
默認(rèn)haproxy的日志是輸出到系統(tǒng)的syslog中,查看起來不是非常方便,為了更好的管理haproxy的日志,我們在生產(chǎn)環(huán)境中一般單獨(dú)定義出來。需要將haproxy的info及notice日志分別記錄到不同的日志文件中。
vim /etc/haproxy/haproxy.cfg
global
log /dev/log local0 info
log /dev/log local0 notice
service haproxy restart
1
2
3
4
5
6
需要修改rsyslog配置,為了便于管理。將haproxy相關(guān)的配置獨(dú)立定義到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog啟動時會自動加載此目錄下的所有配置文件。
vim /etc/rsyslog.d/haproxy.conf
if ($programname == ‘haproxy’ and KaTeX parse error: Expected 'EOF', got '&' at position 72: …proxy-info.log &?~ if (programname == ‘haproxy’ and $syslogseverity-text == ‘notice’)
then -/var/log/haproxy/haproxy-notice.log
&~
1
2
3
4
5
6
7
8
說明:
這部分配置是將haproxy的info日志記錄到/var/log/haproxy/haproxy-info.log下,將notice日志記錄到/var/log/haproxy/haproxy-notice.log下。“&~”表示當(dāng)日志寫入到日志文件后,rsyslog停止處理這個信息。
systemctl restart rsyslog.service
tail -f/var/log/haproxy/haproxy-info.log #查看haproxy的訪問請求日志信息
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的aproxy配合Nginx搭建Web集群部署实验(图文详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MariaDB [Warning] Co
- 下一篇: Nginx和lvs在负载均衡方面的对比