使用Haproxy及Nginx搭建Web群集
阿新 • • 發佈:2018-06-22
腳本 netstat 客戶端使用 更改 tpc 自測 st2 實驗環境 lan 什麽是HAProxy?
HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理,可以運行於大部分主流的Linux操作系統上。
本次實驗使用三臺服務器搭建Web群集,Haproxy作為調度服務器,兩臺Nginx服務器作為節點服務器。
實驗環境
主機 | 系統 | IP地址 | 主要軟件 |
---|---|---|---|
Haproxy服務器 | CentOS-7-x86_64 | 192.168.100.100 | haproxy |
Nginx服務器1 | CentOS-7-x86_64 | 192.168.100.110 | nginx |
Nginx服務器2 | CentOS-7-x86_64 | 192.168.100.120 | nginx |
客戶端 | windows 7 | 192.168.100.30 | IE瀏覽器 |
編譯安裝nginx服務器
- 安裝編譯所需的環境
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
- 解壓安裝包,創建管理用戶,編譯安裝
tar zxf nginx-1.12.0.tar.gz useradd -M -s /sbin/nologin nginx cd nginx-1.12.0/ ./configure --prefix=/usr/local/nginx \ //指定安裝路徑 --user=nginx \ //指定管理用戶 --group=nginx //指定管理組 make && make install
- 創建測試頁面
在nginx的默認站點裏測試首頁,只需要對默認首頁文件做些更改即可(與nginx2服務器首頁內容有區別即可),或者也可以自己創建測試首頁文件。 - 啟動nginx服務
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ //創建軟連接,方便管理 nginx -t //檢查配置文件是否正確 nginx //啟動服務 netstat -ntap | grep 80 //查看服務是否正確開啟
- 關閉防火墻
systemctl disable firewalld.service systemctl stop firewalld.service setenforce 0
- 使用火狐瀏覽器自測
nginx2服務器的搭建步驟與nginx1的方法相同,唯一的區別就是首頁的內容,要與nginx1不相同,方便驗證實驗
編譯安裝Haproxy服務器
安裝haproxy軟件
- 安裝編譯環境
yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
- 編譯安裝
tar zxf haproxy-1.5.19.tar.gz cd haproxy-1.5.19/ make TARGET=linux26 //安裝64位系統 make install
配置haproxy服務器
- 在/etc下創建haproxy/文件夾,將配置文件復制到該目錄下
mkdir /etc/haproxy cp haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/haproxy.cfg
- 修改配置文件
刪除以下兩行內容chroot /usr/share/haproxy //第8行 redispatch //第21行
將listen部分修改為以下內容
listen webcluster 0.0.0.0:80 option httpchk GET /index.html //首頁文件名稱根據自身情況寫入,例如之前創建的我首頁文件名稱為text.html,則此處寫入test.html balance roundrobin server inst1 192.168.100.110:80 check inter 2000 fall 3 server inst2 192.168.100.120:80 check inter 2000 fall 3 //節點服務器地址(nginx1,nginx2地址)
將啟動腳本復制到/etc/init.d/下,同時將服務添加到chkconfig管理,創建軟連接便於管理
cp haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy chmod +x haproxy chkconfig --add /etc/init.d/haproxy ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
- 啟動服務
service haproxy start
- 關閉防火墻
systemctl disable firewalld.service systemctl stop firewalld.service setenforce 0
測試web群集
在windows 7 客戶端使用ie瀏覽器訪問http://192.168.100.100/,多次涮新,nginx1和nginx2網頁輪換顯示。
haproxy的日誌優化
Haproxy的日誌默認輸出到系統的syslog中。查看起來不是很方便,為了更好的管理haproxy的日誌,我們需要將日誌單獨定義出來,方法如下:
- 修改Haproxy配置文件中關於日誌配置的選項(/etc/haproxy/haproxy.cfg),將Haproxy的info及notice日誌分別記錄到不同的日誌文件中,修改為如下內容:
log /dev/log local0 info log /dev/log local0 notice //替換第4、第5行內容
- 修改rsyslog配置
為了方便管理,將haproxy相關的配置獨立定義到haproxy.conf,並放到/etc/rsyslog.d/下,rsyslog啟動時會自動加載此目錄下的所有配置文件。touch /etc/rsyslog.d/haproxy.conf vim /etc/rsyslog.d/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 &~
- 重啟haproxy服務及rsyslog服務
service haproxy restart systemctl restart rsyslog.service
- 測試日誌信息
再次使用客戶機訪問網站,即可在查看到日誌已經成功分離出來。
使用Haproxy及Nginx搭建Web群集