最近在玩這套 Web 的 Load Balance 軟體,其實這是之前我寫的一篇:[筆記] FreeBSD 一張網卡多重 ip 實現 Round Robin DNS Load Balancing,有網友留言給我說可以玩看看 HAProxy,這樣的確改善了很多效能,而且也是正確達到 load balance 的效果,不然用 DNS Robin DNS Load Balancing 的方式的卻沒辦法做的很好,關於 HAProxy 在 google 了一下,好像國內很少人在寫這方面的教學,我自己來寫一下筆記好了,其實我還不是對設定很熟悉,只是大概知道他的原理罷了,底下我們來看看官網的一張圖
其實原理很簡單,就是在最前面擺一台簡單的電腦架設 HAProxy 來達成分流功能,後端擺幾台 WEB 伺服器,然後最後面在擺一台資料庫MySQL或者是其他的資料庫,然後去設定 HAProxy 看看哪個ip進來就把它導向到後端的部份,然後後端機器就是設定一下 apache 的
virtualhost,其實這樣就差不多了 第一步:架設 FreeBSD 的 HAProxy
Port: haproxy-devel-1.3.12.2 Path: /usr/ports/net/haproxy-devel Info: The Reliable, High Performance TCP/HTTP Load Balancer Maint: hugo@barafranca.com B-deps: R-deps: WWW: http://haproxy.1wt.eu/
進行安裝: # # cd /usr/ports/net/haproxy-devel # make install clean第二步:設定 HAProxy 的 conf 檔
# # vi /usr/local/etc/haproxy.conf # global maxconn 32768 user nobody group nobody daemon nbproc 8 listen blog-balancer bind 140.123.107.54:80 mode http balance roundrobin maxconn 32768 clitimeout 60000 srvtimeout 60000 contimeout 5000 retries 3 server blog1 192.168.1.1:80 weight 3 check server blog2 192.168.1.2:80 weight 3 check server blog3 192.168.1.3:80 weight 3 check option forwardfor option httpclose option httplog option redispatch option dontlognull上面資料,我是參考
網路大神 Gslin 大大的 wiki,其實我自己還不太瞭解怎麼設定,所以要去參考官網寫的設定教學 第三步:要在後端主機設定 apache virtualhost
後端三台都是要加上這些設定,這樣在轉過去的時候,才會出現正確網站,大致設定這樣就可以 work 參考網站:ServerAdmin webmaster@host.foo.com DocumentRoot /www/docs/host.foo.com ServerName host.foo.com ErrorLog logs/host.foo.com-error_log TransferLog logs/host.foo.com-access_log
http://haproxy.1wt.eu/ 商業服務的Rails HTTP Cluster觀念及測試 Load Balancing & QoS with HAProxy http://www.ecase.com.cn/blog/?p=14 http://wiki.gslin.org/haproxy 期刊/商業服務的Rails伺服器叢集觀念與實做(下)
See also
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- OSDC 2014 Talk: Introduction to Percona XtraDB Cluster and HAProxy
- Jenkins + Apache User Auth
- HAProxy 搭配 CodeIgniter 取使用者真實 IP
- HAproxy 搭配 Nginx port redirect issue
- Nginx + phpMyAdmin 搭配 SSL 設定
- Galera Cluster for MySQL Multi-master Replication
- PHP MVC Framework 搭配 Nginx + PHP-FPM 設定檔
- [筆記] 解決 apache mod_fcgid: HTTP request length 136000 (so far) exceeds MaxRequestLen (131072)
- 如何使用 Apache Module mod_mime