Web群集与日志管理Haproxy搭建
文章目錄
- 常見的web群集調度器
- Haproxy應用分析
- Haproxy調度算法原理
- 高并發架構
- Nginx的安裝與啟動
- Haproxy安裝與啟動
- Haproxy配置文件詳解
- Haproxy配置文件詳解
- Haproxy配置應用模塊參數
- 配置與測試
- Haproxy日志管理
- 實驗步驟
- haproxy服務器配置
常見的web群集調度器
目前常見的Web集群調度器分為軟件和硬件
軟件通常使用開源的LVS、Haproxy、Nginx
硬件一般使用比較多的是F5,也有很多人使用國內的一
些產品,如梭子魚、綠盟等
Haproxy應用分析
LVS在企業應用中抗負載能力很強,但存在不足
- .LVS不支持正則處理,不能實現動靜分離
- 對于大型網站,LVs的實施配置復雜,維護成本相對較高
Haproxy是一款可提供高可用性、負載均衡、及基于
TCP和HTTP應用的代理的軟件
- 適用于負載大的Web站點
- 運行在硬件上可支持數以萬計的并發連接的連接請求
Haproxy調度算法原理
Haproxy支持多種調度算法,最常用的有三種
1:RR (Round Robin)
RR算法是最簡單最常用的一種算法,即輪詢調度
理解舉例
◆有三個節點A、B、C
◆第一個用戶訪問會被指派到節點A
◆第二個用戶訪問會被指派到節點B
◆第三個用戶訪問會被指派到節點C
◆第四個用戶訪問繼續指派到節點A,輪詢分配訪問請求實現負載均衡效果
2:LC (Least Connections)
◆最小連接數算法,根據后端的節點連接數大小動態分配前端請求
理解舉例
◆有三個節點A、B、C,各節點的連接數分別為A:4、B:5、 C:6
◆第一個用戶連接請求,會被指派到A上,連接數變為A:5、B:5、 C:6.
◆第二個用戶請求會繼續分配到A上,連接數變為A:6、B:5、 C:6; 再
有新的請求會分配給B,每次將新的請求指派給連接數最小的客戶端
◆由于實際情況下A、B、C的連接數會動態釋放,很難會出現-樣連
接數的情況
◆此算法相比較rr算法有很大改進,是目前用到比較多的一種算法
3:SH (Source Hashing)
◆基于來源訪問調度算法,用于- 些有Session會話記錄在服務器端的場景, 可以
基于來源的IP、Cookie等做集群調度
理解舉例
◆有三個節點A. B、C,第一個用戶第一次訪問被指派到了A,第二個用戶第一次
訪問被指派到了B
◆當第一個用戶第二次訪問時會被繼續指派到A,第二個用戶第二二次訪問時依舊會
被指派到B,只要負載均衡調度器不重啟,第一個用戶訪問都會被指派到A,第二
個用戶訪問都會被指派到B,實現集群的調度
◆此調度算法好處是實現會話保持,但某些IP訪問量非常大時會引起負載不均衡,
部分節點訪問量超大,影響業務使用
高并發架構
主機要求
| Haproxy | centos7.3 | 192.168.136.60 | Haproxy1.5.19 |
| nginx1 | centos7.3 | 192.168.136.40 | nginx-1.12.0 |
| nginx2 | centos7.3 | 192.168.136.30 | nginx-1.12.0 |
| 客戶端 | windows10 | 192.168.136.99 | 游覽器 |
Nginx的安裝與啟動
- 在兩臺網站服務器.上安裝Nginx,并啟動服務
- 使用源碼編譯的方式進行安裝
- 關閉Firewalld防火墻
- 增加系統用戶賬號nginx
- 編譯安裝Nginx并啟動
- 在兩臺Nginx.上配置測試網站,注意測試網頁的內容應
該不同,以便進行測試
Haproxy安裝與啟動
在負載均衡器.上安裝Haproxy
安裝步驟
-
安裝基礎軟件包
-
編譯安裝haproxy
-
要注意操作系統版本,是32位系統還是64位
建立Haproxy的配置文件
-
創建配置文件目錄/etc/haproxy
-
將源碼包提供的配置文件樣例haproxy.cfg復制到配置文件
目錄中
Haproxy配置文件詳解
Haproxy配置文件通常分為3個部分
global:為全局配置
defaults:為默認配置
listen:為應用組件配置
Haproxy配置文件詳解
defaults配置項配置默認參數,一般會被應用組件繼承
如果應用組件中沒有特別聲明,將按默認配置參數設置
- log global:定義日志為globa|配置中的日志定義
- mode http:模式為http
- option httplog:采用http日志格式記錄日志
- retries 3:檢查節點服務器失敗連續達到三次則認為節點不可用
- maxconn 2000: 最大連接數
- contimeout 5000: 連接超時時間
- clitimeout 50000:客戶端超時時間
- srvtimeout 50000:服務器超時時間
Haproxy配置應用模塊參數
listen配置項目一般為配置應用模塊參數
- listen appli4-backup 0.0.0.0:10004:定義一個appli4-
backup的應用 - option httpchk /index.html:檢查服務器的index.html文件
- option persist :強制將請求發送到已經down掉的服務器
- balance roundrobin:負載均衡調度算法使用輪詢算法
- server/inst1 192.168.114.56:80 check inter 2000 fall 3:
定義在線節點 - server (inst2 192.168.114.56:81 check inter 2000 fall 3
backup:定義備份節點
http提交請求2種p
get,post
配置與測試
測試Haproxy集群
- 測試高性能
- 可在兩個不同的瀏覽器中分別訪問兩個測試網站,正常情況下應該出
現兩個網站的測試頁面
高可用性 - 將其中- -臺Nginx服務器停用,在客戶端瀏覽器中訪問Haproxy, 正
- 常情況下應出現另外一臺Nginx服務 器的網站測試頁面
Haproxy日志管理
默認是輸出到系統的syslog中,生產環境中-般單獨定義
定義的方法步驟
- 修改Haproxy配置文件中關于日志配置的選項,加入配置
- log /dev/log local0 info
- log /devlog local0 notice
- 修改rsyslog配置,將Haproxy相關的配置獨立定義到
haproxy.conf,并放到/etc/rsyslog.d/下 - 保存配置文件并重啟rsyslog服務,完成rsyslog配置
- 訪問Haproxy集群測試網頁并查看日志信息
實驗步驟
實驗需要4臺服務器
nginx1節點:192.168.136.30
nginx2節點:192.168.136.40
haproxy:192.168.136.60
window10:192.168.136.88
節點服務器web1和web2配置兩臺一樣的nginx
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# hostname web1 [root@localhost ~]# su .安裝依賴包 [root@web1 ~]# yum install gcc-c++ pcre-devel zlib-devel make -y rz waiting to receive.為web服務器創建用戶nginx,便于管理,再進行編譯安裝 [root@web1 ~]# useradd -M -s /sbin/nologin nginx [root@web1 ~]# tar zxvf nginx-1.12.0.tar.gz [root@web1 ~]# cd nginx-1.12.0/ [root@web1 nginx-1.12.0]# ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx [root@web1 nginx-1.12.0]# make && make install兩臺Nginx節點服務器創建首頁,首頁文件名一樣,內容不一樣 [root@web1 nginx-1.12.0]# cd /usr/local/nginx/ [root@web1 nginx]# cd html/ [root@web1 html]# vim test.html <h1>this is kgc web</h1> [root@web1 html]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ [root@web1 html]# nginx 啟動nginx 在網站上測試下nginx是否成功haproxy服務器配置
關閉防火墻
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0編譯環境
[root@haproxy ~]# yum install pcre-devel bzip2-devel gcc gcc-c++ make -y解壓服務包
[root@haproxy ~]# tar zxvf haproxy-1.5.19.tar.gz服務編譯
[root@haproxy ~]# cd haproxy-1.5.19/ [root@haproxy haproxy-1.5.19]# make TARGET=linux26 [root@haproxy haproxy-1.5.19]# make install將源碼包提供的配置文件樣例haproxy.cfg復制到配置文件
目錄中
修改Haproxy配置文件
[root@haproxy haproxy-1.5.19]# cd /etc/haproxy/ [root@haproxy haproxy]# vim haproxy.cfg # chroot /usr/share/haproxy # redispatch 把這兩句話注釋掉set nu 26行以下的全部刪除添加 listen webcluster 0.0.0.0:80 option httpchk GET /test.htmlbalance roundrobinserver inst1 192.168.169.100:40 check inter 2000 fall 3 server inst2 192.168.169.200:30 check inter 2000 fall 3開啟服務啟動腳本
[root@haproxy haproxy]# cd ~/haproxy-1.5.19/ [root@haproxy haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy [root@haproxy haproxy-1.5.19]# cd /etc/init.d/ [root@haproxy init.d]# chmod +x haproxy讓系統可以識別
[root@haproxy init.d]# chkconfig --add /etc/init.d/haproxy 名稱自動添加 [root@haproxy init.d]# ln -s /usr/local/sbin/haproxy /usr/sbin/ [root@haproxy init.d]# service haproxy start
日志定義
[root@haproxy haproxy]# vim /etc/haproxy/haproxy.cfg log /dev/log local0 infolog /dev/log local0 notice [root@haproxy haproxy]# service haproxy restart定義配置文件
[root@haproxy haproxy]# cd /etc/rsyslog.d/ [root@haproxy rsyslog.d]# vim haproxy.conf if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log &~ if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log &~開啟服務查看
[root@haproxy rsyslog.d]# systemctl restart rsyslog.service [root@haproxy rsyslog.d]# service haproxy restart [root@haproxy rsyslog.d]# ls /var/log/ 現在查看里面就有了haproxy這個文件了 [root@haproxy haproxy]# ls /var/log/haproxy/ haproxy-info.log haproxy-notice.log總結
以上是生活随笔為你收集整理的Web群集与日志管理Haproxy搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存水冷,选对套件才能提升性能
- 下一篇: ngixn+tomcat负载均衡 动静分