Haproxy是目前比較流行的一種羣集調度工具,同類羣集調度工具備不少,如LVS和Nginx。相比較而言,LVS性能最好,可是搭建相對複雜;Nginx的upstream模塊支持羣集功能,可是相對羣集節點健康檢查功能不強,性能沒有Haproxy好,更多的是應用在企業內網環境中。
搭建LVS羣集能夠參考博文:Centos 7搭建LVS+Keepalived高可用Web服務羣集html
Nginx羣集能夠參考博文:基於centos 7安裝Tomcat服務及其負載均衡linux
關於Haproxy搭建Web羣集原理概述參考博文:Haproxy搭建Web羣集概述nginx
部署環境以下:
web
準備工做redis
1)調通網絡,防火牆放行相關流量(我這裏直接將防火牆關閉了);算法
2)準備系統映像,配置本地yum(自行配置);apache
3)下載haproxy源碼包,能夠從我提供的網盤連接下載使用:https://pan.baidu.com/s/1I8JCUhejz0VSe8Q4lhzUpQ
提取碼:th9xvim
4)web網站使用apache、Nginx、Tomcat搭建均可以,只要能夠訪問就行,我這裏部署兩臺Nginx和一臺Apache,web網站搭建能夠參考:
APache網站服務配置訪問控制和構建虛擬主機centos
關於Nginx詳細配置及說明能夠參考:Centos 7部署Nginx網站服務
[root@centos01 ~]# yum -y install prce-devel zlib-devel <!--安裝依賴軟件包--> [root@centos01 ~]# useradd -M -s /sbin/nologin nginx <!--建立管理Nginx帳戶--> [root@centos01 ~]# umount /mnt/ <!--卸載操做系統光盤--> [root@centos01 ~]# mount /dev/cdrom /mnt/ <!--切換Linux光盤--> mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@centos01 ~]# scp /mnt/nginx-1.6.0.tar.gz root@192.168.100.20:/root <!--複製Nginx包到第二臺Nginx服務器--> The authenticity of host '192.168.100.20 (192.168.100.20)' can't be established. ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I. ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b. Are you sure you want to continue connecting (yes/no)? yes <!--輸入yes--> Warning: Permanently added '192.168.100.20' (ECDSA) to the list of known hosts. root@192.168.100.20's password: <!--輸入密碼--> nginx-1.6.0.tar.gz 100% 784KB 68.2MB/s 00:00 [root@centos01 ~]# scp /mnt/haproxy-1.4.24.tar.gz root@192.168.100.30:/root <!--複製haproxy軟件包到100.30服務器--> The authenticity of host '192.168.100.30 (192.168.100.30)' can't be established. ECDSA key fingerprint is SHA256:PUueT9fU9QbsyNB5NC5hbSXzaWxxQavBxXmfoknXl4I. ECDSA key fingerprint is MD5:6d:f7:95:0e:51:1a:d8:9e:7b:b6:3f:58:51:51:4b:3b. Are you sure you want to continue connecting (yes/no)? yes <!--輸入yes--> Warning: Permanently added '192.168.100.30' (ECDSA) to the list of known hosts. root@192.168.100.30's password: <!--輸入密碼--> haproxy-1.4.24.tar.gz 100% 817KB 31.1MB/s 00:00 00:00 [root@centos01 ~]# tar zxvf /mnt/nginx-1.6.0.tar.gz -C /usr/src/ <!--解壓縮nginx包--> [root@centos01 ~]# cd /usr/src/nginx-1.6.0/ <!--進入nginx目錄--> [root@centos01 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module <!--配置nginx--> [root@centos01 nginx-1.6.0]# make && make install <!--編輯及安裝nginx--> [root@centos01 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ <!--優化執行命令--> [root@centos01 ~]# echo "192.168.100.10:nginx" > /usr/local/nginx/html/index.html <!--建立nginx網站主頁,寫入測試數據--> [root@centos01 ~]# nginx <!--啓動nginx服務--> [root@centos01 ~]# netstat -anptu | grep nginx <!--監聽Nginx服務是否啓動--> tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3685/ngin: master
[root@centos02 ~]# yum -y install pcre-devel zlib-devel <!--安裝依賴軟件包--> [root@centos02 ~]# ls <!--查看Nginx包是否成功從第一臺Nginx網站複製成功--> anaconda-ks.cfg initial-setup-ks.cfg nginx-1.6.0.tar.gz [root@centos02 ~]# tar zxvf nginx-1.6.0.tar.gz -C /usr/src/ <!--解壓縮nginx軟件包--> [root@centos02 ~]# useradd -M -s /sbin/nologin nginx <!--建立管理nginx帳戶--> [root@centos02 ~]# cd /usr/src/nginx-1.6.0/ <!--進入Nginx目錄--> [root@centos02 nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module <!--配置nginx--> [root@centos02 nginx-1.6.0]# make && make install <!--編譯及安裝--> [root@centos02 ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ <!--優化執行路徑--> [root@centos02 ~]# echo "192.168.100.20:nginx" > /usr/local/nginx/html/index.html <!--建立nginx網站主頁,寫入測試數據 --> [root@centos02 ~]# nginx <!--啓動nginx服務--> [root@centos02 ~]# netstat -anptu | grep nginx <!--監聽Nginx服務是否啓動--> tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6059/ngin: master
<!--安裝haproxy--> [root@centos03 ~]# yum -y install pcre-devel bzip2-devel <!--安裝依賴程序--> [root@centos03 ~]# ls anaconda-ks.cfg haproxy-1.4.24.tar.gz initial-setup-ks.cfg [root@centos03 ~]# tar zxvf haproxy-1.4.24.tar.gz -C /usr/src/ <!--解壓縮haproxy壓縮包--> [root@centos03 ~]# cd /usr/src/haproxy-1.4.24/ <!---進入haproxy目錄-> [root@centos03 haproxy-1.4.24]# make TARGET=linux26<!--編譯haproxy支持64位系統--> [root@centos03 haproxy-1.4.24]# make install <!--安裝haproxy--> <!--接下來開始生成haproxy配置文件--> [root@centos03 ~]# mkdir /etc/haproxy <!--建立保存haproxy配置文件目錄--> [root@centos03 ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.cfg /etc/haproxy/ <!--生成配置文件--> [root@centos03 ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy <!--建立haproxy服務控制腳本--> [root@centos03 ~]# chmod +x /etc/init.d/haproxy <!--添加執行權限--> [root@centos03 ~]# chkconfig --add haproxy <!--添加爲系統服務--> [root@centos03 ~]# chkconfig --level 35 haproxy on <!--設置開機自動啓動--> [root@centos03 ~]# cp /usr/src/haproxy-1.4.24/haproxy /usr/sbin/<!--優化程序執行命令--> [root@centos03 ~]# mkdir -p /usr/share/haproxy <!--建立服務運行的臨時目錄--> <!--接下來開始配置haproxy羣集--> [root@centos03 ~]# vim /etc/haproxy/haproxy.cfg <!--修改haproxy主配置文件--> # this config needs haproxy-1.1.28 or haproxy-1.2.1 gid 99 <!--用戶gid--> daemon #debug #quiet defaults log global <!--定義日誌爲global配置中的日誌定義--> mode http <!--模式爲http--> option httplog <!--採用http日誌格式記錄日誌--> option dontlognull retries 3 <!--檢查節點服務器失敗次數,連續達到三次失敗,則認爲節點不可用--> redispatch <!--當服務器負載很高時,自動結束當前隊列處理比較久的鏈接--> maxconn 2000 <!--最大鏈接數--> contimeout 10 <!--鏈接超時時間--> clitimeout 10 <!--客戶端超時時間--> srvtimeout 10 <!--服務器超時時間--> listen nginx 192.168.100.30:80 <!--定義一個nginx的應用--> balance roundrobin <!--負載均衡調度算法使用輪詢算法--> server web01 192.168.100.10:80 check inter 2000 fall 3 <!--定義在線節點--> server web02 192.168.100.20:80 check inter 2000 fall 3 <!--定義備份節點--> [root@centos03 ~]# /etc/init.d/haproxy start <!--啓動haproxy服務--> Starting haproxy (via systemctl): [ 肯定 ]
至此Haproxy羣集部署完成,如今可使用客戶端訪問Haproxy服務器的IP地址,第一次訪問到的頁面是第一臺Nginx服務器,第二次訪問到的頁面會是第二臺Nginx服務器
我這裏就直接配置了,關於DNS詳細配置及配置項解釋及DNS工做原理概述請參考博文:CentOS7簡單搭建DNS服務
[root@centos03 ~]# yum -y install bind bind-chroot bind-utils <!--安裝依賴軟件--> [root@centos03 ~]# echo "" > /etc/named.conf <!--清空主配置文件--> [root@centos03 ~]# vim /etc/named.conf <!--編輯DNS主配置文件--> options { listen-on port 53 { 192.168.100.0/24; }; directory "/var/named"; }; zone bdqn.com IN { type master; file "bdqn.com.zone"; }; [root@centos03 ~]# named-checkconf -z /etc/named.conf<!--檢查DNS主配置文件是否錯誤--> [root@centos03 ~]# vim /var/named/bdqn.com.zone<!--編輯bdqn.com正向解析區域配置文件--> $TTL 86400 @ SOA bdqn.com. root.bdqn.com.( 2019112201 1H 15M 1W 1D ) @ NS centos03.bdqn.com. centos03 A 192.168.100.30 www A 192.168.100.30 [root@centos03 ~]# named-checkzone bdqn.com /var/named/bdqn.com.zone <!--檢查正向解析區域配置文件是否錯誤--> zone bdqn.com/IN: loaded serial 2019112201 OK [root@centos03 ~]# chmod +x /var/named/bdqn.com.zone <!--正向解析區域配置文件添加執行權限--> [root@centos03 ~]# chown named:named /var/named/bdqn.com.zone <!--修改屬組屬組--> [root@centos03 ~]# systemctl start named <!--啓動服務--> [root@centos03 ~]# systemctl enable named <!--設置服務開機自動啓動-->
至此DNS已經配置完成,客戶端添加DNS地址,打開瀏覽器使用域名訪問便可
關於Apache網站詳細配置及工做原理概述參考博文:CentOS 7.4搭建Apache網站服務
[root@centos04 ~]# tar zxvf /mnt/httpd-2.2.17.tar.gz -C /usr/src/ <!--解壓縮httpd壓縮包--> [root@centos04 ~]# cd /usr/src/httpd-2.2.17/ [root@centos04 httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so –enable-rewrite --enable-charset-lite --enable-cgi <!--配置apache--> [root@centos04 httpd-2.2.17]# make && make install <!--編輯及安裝--> [root@centos04 ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ <!--優化執行路徑--> [root@centos04 ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd<!--建立apache服務--> [root@centos04 ~]# chmod +x /etc/init.d/httpd <!--添加執行權限--> [root@centos04 ~]# vim /etc/init.d/httpd <!--修改apache服務--> #!/bin/sh #chkconfig 35 80 20 #description:apache server [root@centos04 ~]# chkconfig --add httpd <!--添加系統服務--> [root@centos05 ~]# echo "192.168.100.40:apache" > /usr/local/httpd/htdocs/index.html <!--建立網站主頁,寫入測試數據--> [root@centos04 ~]# apachectl -t <!--檢查apache服務配置文件是否錯誤--> [root@centos04 ~]# systemctl start httpd <!--啓動apache服務--> [root@centos04 ~]# systemctl enable httpd <!--設置開機自動啓動--> [root@centos04 ~]# netstat -anptu | grep httpd <!--監聽Apache服務是否啓動--> tcp6 0 0 :::80 :::* LISTEN 53801/httpd [root@centos04 ~]# systemctl is-enabled httpd.service <!--查看apache服務開機自動啓動狀態--> enabled
listen nginx 192.168.100.30:80 balance roundrobin server web01 192.168.100.10:80 check inter 2000 fall 3 <!--定義在線節點--> server web02 192.168.100.20:80 check inter 2000 fall 3 <!--定義備份節點--> server apache01 192.168.100.40:80 check inter 2000 fall 3 weight 1 <!--定義備份節點(Haproxy主配置文件中添加此行便可)--> [root@centos03 ~]# /etc/init.d/haproxy restart <!--重啓動haproxy服務--> Restarting haproxy (via systemctl): [ 肯定 ]
至此基於Apache網站羣集已經部署完成,如今可使用客戶端訪問
[root@centos03 ~]# tail -f /var/log/haproxy/haproxy-info.log <!--查看haproxy訪問日誌-->
—————— 本文至此結束,感謝閱讀 ——————