1.案例概述
Haproxy是目前比較流行的一種羣集調度工具,同類的調度工具備不少,如LVS和Nginx。相較而言,LVS性能最好,但搭建相對複雜;Nginx的upstream模塊支持羣集功能,但對羣集節點健康檢查功能不強,性能沒有Haproxy好。html
2.案例前置知識
1)HTTP請求
經過URL訪問網站使用的協議是HTTP協議,此類請求通常稱爲HTTP請求。HTTP請求的方式分爲GET方式和POST方式。當使用瀏覽器訪問某一個URL,會根據請求URL返回狀態碼,一般正常狀態碼爲2x x,3x x(如200,301),若是出現異常會返回狀態碼爲4x x,5x x(如400,500)。linux
2)負載均衡經常使用調度算法nginx
3.案例環境
1)編譯安裝nginx服務器web
(1)搭建nginx1,使用nginx-1.12.0.tar.gz安裝包進行編譯安裝。 [root@localhost ~]# yum -y install pcre-devel zlib-devel [root@localhost ~]# useradd -M -s /sbin/nologin nginx [root@localhost media]# tar xf nginx-1.12.0.tar.gz -C /usr/src/ [root@localhost media]# cd /usr/src/nginx-1.12.0/ [root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx [root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html [root@localhost html]# echo 111 > test.html //創建測試頁面 [root@localhost html]# /usr/local/nginx/sbin/nginx //啓動nginx
2)編譯安裝Haproxyredis
使用haproxy-1.5.19.tar.gz安裝包進行編譯安裝。 [root@localhost ~]# yum -y install pcre-devel bzip2-devel [root@localhost media]# tar xf haproxy-1.5.19.tar.gz -C /usr/src/ [root@localhost media]# cd /usr/src/haproxy-1.5.19/ [root@localhost haproxy-1.5.19]# make TARGET=linux26 //64位系統 [root@localhost haproxy-1.5.19]# make install
3)Haproxy服務配置
創建haproxy的配置文件算法
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy [root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/ //將haproxy.cfg文件複製到配置文件目錄
4)Haproxy主配置需改動以下vim
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg # this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #chroot /usr/share/haproxy //此處須要註釋「#」 uid 99 gid 99 daemon #debug #quiet defaults log global mode http option httplog option dontlognull retries 3 #redispatch //此處須要註釋「「#」 maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen appli4-backup 0.0.0.0:80 //默認全部端口爲80 option httpchk GET /index.html //HTTP的請求方式爲GET balance roundrobin server inst1 192.168.1.20:80 check inter 2000 fall 3 //端口更改成80 server inst2 192.168.1.30:80 check inter 2000 fall 3 //BACKUP 表示爲備用服務器
5)建立自啓動腳本後端
[root@localhost haproxy-1.5.19]# cp /usr/src/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy [root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy [root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy [root@localhost haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy [root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start Starting haproxy (via systemctl): [ 肯定 ]
最後測試web羣集只需在兩臺nginx服務器上echo兩條測試文件就能夠啦!