haproxy

                       haproxy


Haproxy:是反向代理服務器的負載均衡,擁有不錯的服務器健康檢查功能,當其後端的的代理服務器出現故障時。Haproxy會自動去除該服務,故障服務後在自動運行該服務。HAProxy支持兩種主要的代理模式:"tcp"也即4層(大多用於郵件服務器、內部協議通信服務器等),和7層(HTTP)。在4層模式 下,HAProxy僅在客戶端和服務器之間轉發雙向流量。7層模式下,HAProxy會分析協議,並且能通過允許、拒絕、交換、增加、修改或者刪除請求 (request)或者回應(response)裏指定內容來控制協議,這種操作要基於特定規則。

 

可以用rpm安裝方式,也可以源碼編譯。

軟件下載:http://haproxy.1wt.eu/

rpm 包方式:

rpmbuild -tb haproxy-1.4.23.tar.gz

rpm -ivh /root/rpmbuild/RPMS/x86_64/haproxy-1.4.23-1.x86_64.rpm

 

此實驗是用源碼編譯:

實驗主機 server5 haproxy

         Server6 web1

      Server7 web2

需要的包:

haproxy-1.4.24.tar.gz

[root@server5 ~]# tar zxfhaproxy-1.4.24.tar.gz

編譯成二進制文件包。發現找不到rpmbuild說明沒有裝rpmbuild

wKiom1eaIHuDHXt7AAAVam82nKM941.png

[root@server5 ~]# yum install rpm-build -y

[root@server5 ~]# rpmbuild -tbhaproxy-1.4.24.tar.gz 編譯失敗,缺什麼程序就下什麼程序

wKiom1eaINDCPuURAAAqU2tXbCo818.png

[root@server5 ~]# yum install pcre-devel -y

[root@server5 ~]# rpmbuild -tbhaproxy-1.4.24.tar.gz 

wKioL1eaIPKAl0hWAABo2qrBWDI896.png

這樣就編譯成功。

編譯成的二進制文件一般都在 /root/rpmbuild/RPMS/x86_64裏

 

[root@server5 x86_64]# rpm -ivhhaproxy-1.4.24-1.x86_64.rpm

[root@server5 x86_64]# cd /etc/haproxy/

[root@server5 haproxy]# ls  生成一個haproxy配置文件

Haproxy.cfg

 [root@server5 haproxy]# vim haproxy.cfg

 1 #this config needs haproxy-1.1.28 or haproxy-1.2.1

  2

  3global

 4         log 127.0.0.1   local0

 5         log 127.0.0.1   local1 notice

 6         #log loghost    local0 info

 7         maxconn 4096

 8         chroot/usr/share/haproxy

 9         uid 99

 10        gid 99

 11        daemon

 12        #debug

 13        #quiet

 14

 15defaults

 16        log     global

 17        mode    http

 18        option  httplog

 19        option  dontlognull

 20        retries 3

 21        option redispatch

 22        maxconn 2000

 23        contimeout      5000    連接超時

 24        clitimeout      50000     客戶端連接超時

 25        srvtimeout      50000     服務端連接超時

 27listen  westos *:80                  監聽的實例名稱,地址和端口

 28        balance roundrobin         負載均衡算法

 29        server web1 172.25.137.6 check inter 2000 rise 2 fall 3

 30        server web2 172.25.137.7 check inter 2000 rise 2 fall 3

check inter   檢測心跳   rise 2連接2次正確認爲服務器可用 

fall 3  連接3次認爲連接失敗 web1只是一個名稱

 

Server6和server7的阿帕奇服務要開

wKiom1eaIRvQ1B3-AAA77QDog3g342.png

當haproxy啓動失敗是沒有/usr/shre/haproxy這個目錄

[root@server5 share]# mkdir/usr/share/haproxy

再次啓動服務

wKiom1eaIXqxVolgAAAub_QnVek539.png

wKioL1eaIY_DI_oxAAAzNUGCd4I376.png

這樣一個負載均衡就做出來了。

在配置文件還可以加

26        stats uri /status    haproxy監控頁面

還要把阿帕奇的端口改爲8080,因爲haproxy用的是80端口

wKioL1eaIf6BHm2MAAFWs05ufbQ964.png

 29     server web1 172.25.137.6 check inter 2000 rise 2 fall 3 weight 5

 30     serverweb2 172.25.137.7 check inter 2000 rise 2 fall 3  weight 1

 31     server backup 127.0.0.1:8080 backup

Weight 是權重,表現在頁面上是server6上刷5次之後在刷server7上刷一次。

後臺檢測當web1和2的服務都停止的時候本地就開始接管,當web1和2正常運行時他就不會出現在前臺頁面

wKiom1eaIoOwMD9IAAFWVgsJoNE649.png

web12服務停止時

wKiom1eaI1eAmelCAAA8wttG4c8631.png

wKioL1eaIt7i6GzAAAFHQmMdpnw299.png

28         acl badhost src 172.25.137.250 只要是通過這個ip訪問都會被禁止。

 29        block if badhost

Acl :訪問控制列表是用來控制端口進出數據包,acl適用於所有的路由協議,例如:IP,IPX等。


wKioL1eaI4HC3RXYAAAjgesPhe0192.png

30       errorloc 403 http://172.25.137.5:8080  就上述的錯誤重定向在本地的http服務

wKioL1eaI6vDhD3GAAAmg5zRuv4003.png


[root@server5 haproxy]# vim /var/www/html/index.htm

wKioL1eaI-2xUPFPAAAQylhG138378.png

[root@server5 haproxy]# /etc/init.d/httpd restart

wKioL1eaJCCSWiJeAAAobQ_mgv0047.png

爲了給用戶呈現一個美感有必要寫一個頁面。

動靜分離

Server6需要寫一個php測試頁(動態)

Vim /var/www/html/index.php

wKiom1eaJEXhcP1SAAAKSwd63jI646.png


[root@server6 ~]# /etc/init.d/httpd restart

 

Server7 需要在/var/www/html/目錄裏見一個images目錄存照片文檔之類的。

[root@server7 html]# mkdir images

[root@server7 html]# ls

images index.html

吳彥祖.jpeg

[root@server7 html]# cd images/

[root@server7 images]# ls

[root@server7 images]# ls

32        acl url_static path_beg -i /images

33        acl url_static path_end -i .jpg$ .png$ .jpeg$ .gif$  靜態服務器支持的圖片類型

35        use_backend group2 if url_static  如果是靜態就在group2上否則是group1

 36        default_backend group1

[root@server5 haproxy]# /etc/init.d/haproxyreload

動態

wKiom1eaJJ-DpulSAAG3i5ntbCk928.png

靜態

wKioL1eaJM7CJDkFAABeFICUhB4510.png

讀寫分離:

Server6

需要這兩個php文件 在upload_file.php裏有限定上傳圖片的大小

wKiom1eaJO2gt8VJAAA12QtVu1g594.png

Server7

[root@server7 upload]# yum install php -y

[root@server7 html]# ls

images index.html  index.php  upload_file.php   在upload_file.php裏有限定上傳圖片的大小

 

[root@server7 html]# mkdir upload  這個目錄是上傳圖片的保存位置

[root@server7 html]# chmod -R 777/var/www/html/upload

wKioL1eaJQnSLBSZAAAdZ7eXZuM909.png

wKiom1eaJb6TVe2VAAAfUgbrYR0963.png


這是上傳保存的位置

wKioL1eaJd6jvcrGAAAP0GmIe7I628.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章