aproxy配合Nginx搭建Web集群部署实验(图文详解)
文章目錄
一、常見的Web集群調度器
二、Haproxy應用分析
三、Haproxy調度算法原理
四、Haproxy搭建 Web 群集
實驗所需安裝包
環境配置
1、部署haproxy服務器(192.168.184.10)
2、編譯安裝Nginx服務器(192.168.184.20、192.168.184.30)
3、測試 Web集群
五、日志定義
一、常見的Web集群調度器
目前常見的Web集群調度器分為軟件和硬件
軟件通常使用開源的LVS、Haproxy、Nginx
LVS性能最好,但是搭建相對復雜;Nginx的upstream模塊支持集群功能,但是對集群節點健康檢查功能不強,高并發沒有Haproxy好
硬件一般使用的比較多的是F5,也有很多人使用梭子魚、綠盟等國內產品
二、Haproxy應用分析
LVS在企業應用中抗負載能力很強,但存在不足
LVS不支持正則處理,不能實現動靜分離
對于大型網站,LVS的實施配置復雜,維護成功相對較高
Haproxy是一款可提供高可用性、負載均衡、及基于TCP和HTTP應用的代理的軟件
適用于負載大的Web站點
運行在硬件上可支持數萬計的并發連接的連接請求
三、Haproxy調度算法原理
Haproxy支持多種調度算法,最常用的有三種
RR (Round Robin)
RR算法是最簡單常用的一種算法,即輪詢調度
LC(Least Connections)
最小連接數算法,根據后端的節點連接數大小動態分配前端請求。
SH(Source Hashing)
基于來源訪問調度算法,用于一些有Session會話記錄在服務器端的場景,可以基于來源的IP、Cookie等做集群調度
四、Haproxy搭建 Web 群集
實驗所需安裝包
微云鏈接:Haproxy、Nginx安裝包
haproxy-1.5.19.tar.gz
nginx-1.12.0.tar.gz
環境配置
主機 操作系統 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服務器(192.168.184.10)
1.關閉防火墻,將安裝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
參數說明
TARGET=linux26 ARCH=x86_64
內核版本 系統位數,64位系統
使用uname -r查看內核,如:2.6.18-371.el5,此時該參數用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
3、Haproxy服務器配置
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為日志設備,默認存放到系統日志
log /dev/log local0 info
log /dev/log local0 notice
#log loghost local0 info
maxconn 4096 #最大連接數,需考慮ulimit-n限制
1
2
3
4
–8行–注釋,chroot運行路徑,為該服務自設置的根目錄,一般需將此行注釋掉
#chroot /usr/share/haproxy
uid 99 #用戶UID
gid 99 #用戶GID
daemon #守護進程模式
defaults
log global #定義日志為global配置中的日志定義
mode http #模式為http
option httplog #采用http日志格式記錄日志
option dontlognull #不記錄健康檢查日志信息
retries 3 #檢查節點服務器失敗次數,連續達到三次失敗,則認為節點不可用
redispatch #當服務器負載很高時,自動結束當前隊列處理比較久的連接
maxconn 2000 #最大連接數
contimeout 5000 #連接超時時間
clitimeout 50000 #客戶端超時時間
srvtimeout 50000 #服務器超時時間
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
–刪除下面所有listen項–,添加
listen webcluster 0.0.0.0:80
option httpchk GET /test.html #檢查服務器的test.html文件
balance roundrobin #負載均衡調度算法使用輪詢算法roundrobin
server inst1 192.168.80.100:80 check inter 2000 fall 3 #定義在線節點
server inst2 192.168.80.101:80 check inter 2000 fall 3
1
2
3
4
5
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
2、編譯安裝Nginx服務器(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 服務
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服務(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 ,不斷刷新瀏覽器測試負載均衡效果
在這里插入圖片描述
在這里插入圖片描述
五、日志定義
默認haproxy的日志是輸出到系統的syslog中,查看起來不是非常方便,為了更好的管理haproxy的日志,我們在生產環境中一般單獨定義出來。需要將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相關的配置獨立定義到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下。“&~”表示當日志寫入到日志文件后,rsyslog停止處理這個信息。
systemctl restart rsyslog.service
tail -f/var/log/haproxy/haproxy-info.log #查看haproxy的訪問請求日志信息
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的aproxy配合Nginx搭建Web集群部署实验(图文详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MariaDB [Warning] Co
- 下一篇: Linux Shell变量类型