導航:首頁 > 程序命令 > haproxy命令

haproxy命令

發布時間:2022-07-24 07:03:54

① 如何查看haproxy是否支持ssl

使用ldd命令查看haproxy的依賴庫
ldd haproxy | grep ssl
如果有類似於libssl.so.10 => /lib64/libssl.so.10 (0x00007fad4d072000)
表示支持

② 用docker搭建一個高可用可擴展的服務支撐系統怎麼做

一種方案為Haproxy+etcd+confd,採用鬆散式的組織結構,但各個組件之間的通訊是非常嚴密的,且擴展性更強,定製也更加靈活。

一、架構優勢

約定由Haproxy+etcd+confd+Docker構建的基礎服務平台簡稱「HECD」 架構,整合了多種開源組件,看似鬆散的結構,事實上已經是一個有機的整體,它們互相聯系、互相作用,是Docker生態圈中最理想的組合之一,具有以下優勢:

③ 如何查看 haproxy 是否運行

命令:systemctl status haproxy

Active: Runing....... ##haproxy正在運行中。

④ docker 的這個命令是什麼意思呢 docker kill -s HUP haproxy

子命令分類 子命令
Docker環境信息 info,version
容器生命周期管理 create,exec,kill,pause,restart,rm,run,start,stop,unpause
鏡像倉庫命令 login,logout,pull,push,search
鏡像管理 build,images,import,load,rmi,save,tag,commit
容器運維操作 attach,export,inspect,port,ps,rename,stats,stop,wait,cp,diff
系統日誌信息 events,history,logs

⑤ 如何在Linux上使用HAProxy配置HTTP負載均衡系統

TTP負載均衡簡介

HTTP負載均衡是一種網路解決方案,負責在託管相同應用內容的幾台伺服器之間分配進入的HTTP或HTTPS流量。由於在多台可用伺服器之間均衡了應用請求,負載均衡系統就能防止任何應用伺服器變成單一故障點,因而提高了整體的應用可用性和響應能力。它還讓你可以隨著不斷變化的工作負載,輕松地縮小/擴大部署的應用系統的規模,只需添加或刪除額外的應用伺服器。

哪裡使用負載均衡、何時使用?

由於負載均衡系統改進了伺服器的利用率,最大限度地提高了可用性,只要你的伺服器開始面臨繁重負載,或者正為一個較龐大的項目規劃架構,就應該使用它。事先規劃好負載均衡系統的用途是個好習慣。那樣,未來你需要擴展環境規模時,它會證明其用途。

HAProxy是什麼東東?

HAProxy是一種流行的開源負載均衡和代理系統,面向GNU/Linux平台上的TCP/HTTP伺服器。HAProxy採用了單一線程的事件驅動型架構而設計,它能夠輕松地處理10G網卡線路速度,現廣泛應用於許多生產環境中。其功能特性包括:自動檢查健康狀況、可定製的負載均衡演算法、支持HTTPS/SSL以及會話速率限制等。

我們在本教程中要達到什麼樣的目的?

在本教程中,我們將逐步介紹為HTTP網站伺服器配置基於HAProxy的負載均衡系統這個過程。

前提條件

你至少需要一台(最好是兩台)網站伺服器來證實所搭建負載均衡系統的功能。我們假設,後端HTTP網站伺服器已經搭建並運行起來。

將HAProxy安裝到Linux上

就大多數發行版而言,我們可以使用你所用發行版的軟體包管理器來安裝HAProxy。

將HAProxy安裝到Debian上

在Debian中,我們需要為Wheezy添加向後移植功能。為此,請在/etc/apt/sources.list.d中創建一個名為「backports.list」的新文件,其內容如下:

deb http://cdn.debian.net/debian wheezy­backports main
更新你的軟體庫數據,並安裝HAProxy。

# apt­ get update
# apt ­get install haproxy
將HAProxy安裝到Ubuntu上

# apt ­get install haproxy
將HAProxy安裝到CentOS和RHEL上

# yum install haproxy
配置HAProxy

在本教程中,我們假設有兩台HTTP網站伺服器已搭建並運行起來,其IP地址分別為192.168.100.2和192.168.100.3。我們還假設,負載均衡系統將在IP地址為192.168.100.4的那台伺服器處進行配置。

為了讓HAProxy發揮功用,你需要更改/etc/haproxy/haproxy.cfg中的幾個項目。這些變更在本章節中予以描述。萬一某個配置對不同的GNU/Linux發行版而言有所不同,會在相應段落中加以註明。

1. 配置日誌功能

你首先要做的工作之一就是,為你的HAProxy建立合適的日誌功能,這對將來進行調試大有用處。日誌配置內容位於/etc/haproxy/haproxy.cfg的global部分。下面這些是針對特定發行版的指令,用於為HAProxy配置日誌。

CentOS或RHEL:

要想在CentOS/RHEL上啟用日誌功能,把:

log 127.0.0.1 local2

換成:

log 127.0.0.1 local0

下一步,在/var/log中為HAProxy創建單獨的日誌文件。為此,我們需要改動當前的rsyslog配置。為了讓配置簡單而清楚,我們將在/etc/rsyslog.d/中創建一個名為haproxy.conf的新文件,其內容如下。

$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%msg%\n"
local0.=info ­/var/log/haproxy.log;Haproxy
local0.notice ­/var/log/haproxy­status.log;Haproxy
local0.* ~
該配置將把基於$template的所有HAProxy消息隔離到/var/log中的日誌文件。現在,重啟rsyslog,讓變更內容生效。

# service rsyslog restart
Debian或Ubuntu:

要想在Debian或Ubuntu上為HAProxy啟用日誌功能,把:

log /dev/log local0
log /dev/log local1 notice
換成:

log 127.0.0.1 local0
下一步,為HAProxy配置單獨的日誌文件,編輯/etc/rsyslog.d/中一個名為haproxy.conf的文件(或者Debian中的49-haproxy.conf),其內容如下。

$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%msg%\n"
local0.=info ­/var/log/haproxy.log;Haproxy
local0.notice ­/var/log/haproxy­status.log;Haproxy
local0.* ~
該配置將把基於$template的所有HAProxy消息隔離到/var/log中的日誌文件。現在,重啟rsyslog,讓變更內容生效。

# service rsyslog restart
2. 設置默認值

下一步是為HAProxy設置默認變數。找到/etc/haproxy/haproxy.cfg中的defaults部分,把它換成下列配置。

log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 20000
contimeout 5000
clitimeout 50000
srvtimeout 50000
上述配置推薦HTTP負載均衡器使用,但可能不是最適合你環境的解決方案。如果那樣,請參閱HAProxy參考手冊頁,進行適當的改動和調整。

3. 網站伺服器集群的配置

網站伺服器集群(Webfarm)的配置定義了可用的HTTP伺服器集群。我們所建負載均衡系統的大部分設置都將放在這里。現在,我們將創建一些基本的配置,我們的節點將在這里加以定義。把從frontend部分到文件末尾的所有配置換成下列代碼:

listen webfarm *:80
mode http
stats enable
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth haproxy:stats
balance roundrobin
cookie LBN insert indirect nocache
option httpclose
option forwardfor
server web01 192.168.100.2:80 cookie node1 check
server web02 192.168.100.3:80 cookie node2 check
「listen webfarm *:80」這一行定義了我們的負載均衡系統將偵聽哪些介面。出於本教程的需要,我將該值設為「*」,這讓負載均衡系統偵聽我們的所有介面。在實際場景下,這可能不合意,應該換成可從互聯網來訪問的某個介面。

stats enable
stats uri /haproxy?stats
stats realm Haproxy\ Statistics
stats auth haproxy:stats
上述設置聲明,可以在http://<load-balancer-IP>/haproxy?stats處訪問負載均衡系統的統計數字。這種訪問由簡單的HTTP驗證以及登錄名「haproxy」和密碼「stats」來確保安全。這些設置應該換成你自己的登錄信息。如果你不想讓這些統計數字被人看到,那麼可以完全禁用它們。

下面是HAProxy統計數字的一個例子。

「balance roundrobin」這一行定義了我們將使用哪種類型的負載均衡。在本教程中,我們將使用簡單的輪叫調度演算法,這對HTTP負載均衡來說完全綽綽有餘。HAProxy還提供了其他類型的負載均衡:

•leastconn:連接數最少的伺服器優先接收連接。

•source:對源IP地址進行哈希處理,用運行中伺服器的總權重除以哈希值,即可決定哪台伺服器將接收請求。

•uri:URI的左邊部分(問號前面)經哈希處理,用運行中伺服器的總權重除以哈希值。所得結果決定哪台伺服器將接收請求。

•url_param:變數中指定的URL參數將在每個HTTP GET請求的查詢串中進行查詢。你基本上可以將使用蓄意製作的URL(crafted URL)的請求鎖定於特定的負載均衡節點。

•hdr(name):HTTP頭<name> 將在每個HTTP請求中進行查詢,被定向到特定節點。

「cookie LBN insert indirect nocache」這一行讓我們的負載均衡系統存儲持久性cookie,這讓我們得以准確查明集群中的哪個節點用於某一個會話。這些節點cookie將與指定的名稱一並存儲起來。在我們這個例子中,我使用了「LBN」,但你可以指定自己喜歡的任意名稱。節點將為該cookie把字元串作為一個值而存儲起來。

server web01 192.168.100.2:80 cookie node1 check
server web02 192.168.100.3:80 cookie node2 check
上述部分對網站伺服器節點集群進行了定義。每台伺服器都用內部名稱(比如web01和web02)、IP地址和獨特的cookie串來表示。cookie串可以定義為你需要的任何名稱。我使用了簡單的node1、node2 ... node(n)。

啟動HAProxy

你完成了配置工作後,可以啟動HAProxy,驗證一切按預期運行。

在Centos/RHEL上啟動HAProxy

使用下列指令,讓HAProxy能夠在系統啟動後啟動,並打開它:

# chkconfig haproxy on
# service haproxy start
當然,別忘了啟用防火牆中的埠80,如下所示。

CentOS/RHEL 7上的防火牆:

# firewall­cmd ­­permanent ­­zone=public ­­add­port=80/tcp
# firewall­cmd ­­reload
CentOS/RHEL 6上的防火牆:

把下面這一行添加到/etc/sysconfig/iptables中的這部分「:OUTPUT ACCEPT」:

A INPUT ­m state ­­state NEW ­m tcp ­p tcp ­­dport 80 ­j ACCEPT
然後重啟iptables:

# service iptables restart
在Debian上啟動HAProxy

使用下列指令啟動HAProxy:

# service haproxy start
別忘了啟用防火牆中的埠80,為此把下面這一行添加到/etc/iptables.up.rules:

A INPUT ­p tcp ­­dport 80 ­j ACCEPT
在Ubuntu上啟動HAProxy

讓HAProxy能夠在系統啟動後啟動,只要在/etc/default/haproxy中將「ENABLED」選項設為「1」:

ENABLED=1
啟動HAProxy:

# service haproxy start
然後啟用防火牆中的埠80:

# ufw allow 80
測試HAProxy

為了檢查HAproxy是否在正常工作,我們可以執行下列步驟:

首先,用下列內容准備好test.php文件:

<?php
header('Content-Type: text/plain');
echo "Server IP: ".$_SERVER['SERVER_ADDR'];
echo "\nX-Forwarded-for: ".$_SERVER['HTTP_X_FORWARDED_FOR'];
?>
該PHP文件將告訴我們哪台伺服器(即負載均衡系統)轉發請求,哪台後端網站伺服器實際處理請求。

把該PHP文件放到這兩台後端網站伺服器的根目錄下。現在,使用curl命令,從負載均衡系統(192.168.100.4)提取這個PHP文件。

$ curl http://192.168.100.4/test.php
我們多次運行這個命令時,應該會看到下面兩個輸出交替出現(由於輪叫調度演算法)。

Server IP: 192.168.100.2

X-Forwarded-for: 192.168.100.4

Server IP: 192.168.100.3

X-Forwarded-for: 192.168.100.4

如果我們停止這兩台後端網站伺服器中的其中一台,curl命令應該仍會執行,將請求定向到另一台可用的網站伺服器。

結束語

至此,你應該有了一套完全實用的負載均衡系統,能夠在輪叫循環模式下為你的網站節點提供請求。與往常一樣,你可以隨意更改配置,讓它更適合自己的基礎設施。希望本教程幫助你讓自己的網站項目具有更強的抗壓力和更高的可用性。

正如大家已經注意到的那樣,本教程所含的設置適用於僅僅一套負載均衡系統。這意味著,我們把一個單一故障點換成了另一個單一故障點。在實際場景下,你應該部署至少兩套或三套負載均衡系統,以防範可能出現的任何故障,但這不在本教程的討論范圍之內。

⑥ 如何在ubuntu14.0下為WordPress應用伺服器搭建四層負載均衡

當前環境快照
可選:在繼續本教程之前,你可能想為你當前環境創建快照。本教程中快照有兩個目的:
如果發生錯誤可以回滾到可工作環境
對原始伺服器做一次性復制,而不需要再次安裝和配置PHP以及Nginx
注意:為環境創建快照需要短暫的關閉VPS
為wordpress-1和mysql-1兩個VPS做一個快照。
現在有了快照以後,我們就可以准備好繼續搭建環境中其他部分了。

創建第二台web應用伺服器
現在我們需要創建第二個VPS來分擔原始應用伺服器的負載。有兩種選擇:
從之前的快照wordpress-1中創建一個新的VPS
從頭開始重新創建一個VPS並且設置該VPS和wordpress-1有相同的軟體和配置
不論那種方法,如果網路可用,一定要確保勾選個人網路。個人網路是本教程中所有VPS都需要的。
如果沒有個人網路選項,用你的VPS的公開IP來替代內網IP。需要注意的是,當使用公網IP在應用伺服器和資料庫伺服器之間傳輸敏感數據比如非加密的資料庫密碼,並不是一個很好的選擇,因為這些信息需要在互聯網上傳輸。
方式一:使用快照創建新的VPS
創建一個新的VPS,叫做wordpress-2,使用你為wordpress-1做的快照來做。
如果你選擇的這種方式,可以跳過「方式二」直接去看「同步web應用文件」小節。
方式二:從頭創建一個新的VPS
這種方式和「方式一」可二選一。
如果你想從頭設置wordpress-2伺服器,而不是使用wordpress-1的快照,那麼你要確保安裝的軟體相同。如果你忘了如何安裝和設置原始wordpress伺服器,可以參考預備知識章節中如何設置web伺服器小節。
快速參考,這里是一個相關軟體和配置文件的列表,需要你來安裝或復制:
軟體方面:
Mysql客戶端
Nginx
PHP
安裝完這些軟體後,在你的wordpress-2伺服器上運行一下命令:
sudo apt-get update
sudo apt-get install mysql-client
sudo apt-get install nginx php5-fpm php5-mysql
原始應用伺服器上需要創建或編輯的配置文件:
/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/www.conf
/etc/nginx/sites-available/example.com
/etc/nginx/sites-enabled/example.com
當你修改完配置文件後,不要忘了沖洗PHP和Nginx,可以使用一下命令:
sudo service php5-fpm restart
sudo service nginx restart
在新伺服器的安裝和配置完成以後,我們需要同步wordpress應用文件。
同步Web應用文件
在應用程序可以進行負載均衡之前,我們需要確保新應用伺服器的應用程序文件和原始wordpress伺服器的文件是同步的。這些文件的位置也就是你安裝wordpress的位置,以及其他的一些文件。除了wordpress運行所需要的配置文件之外,上傳的文件和通過wordpress介面安裝的插件的安裝文件和這些插件上傳的文件都需要去同步。在預備知識文章中,我們將wordpress安裝在/var/www/example.com路徑下--我們將
在所有的例子中都會使用這個路徑,但是你需要將這個路徑替換為你wordpress的實際安裝路徑。
有很多方法在伺服器之間同步文件--NFS或者glusterFS都是不錯的選擇。我們將使用glusterFS來滿足我們所有的同步需求,因為它允許每個應用伺服器來存儲應用程序文件的副本,同時也會保持文件系統的一致性。下圖是我們共享存儲方案的概念圖:

如果你對本小節中使用的glusterFS完全不熟悉,請參考這個GlusterFS教程(https://www.digitalocean.com/community/tutorials/how-to-create-a-rendant-storage-pool-using-glusterfs-on-ubuntu-servers),這是本小節的基礎。

注意:下面的內容將經常在wordpress-1和wordpress-2伺服器之間跳轉,請確保在正確伺服器上運行響應命令,否則你將遇到麻煩。
編輯hosts文件
如果你有一個內部DNS,而且這個DNS記錄了你VPS的內部IP地址,那麼你可以跳過這一步直接配置並執行glusterFS相關命令。
否則,需要在wordpress-1和wordpress-2上編輯/etc/hosts文件:
sudo vi /etc/hosts
增加以下兩行,將紅色字替換為你應用伺服器的各自ip:
wordpress_1_private_IP wordpress-1
wordpress_2_private_IP wordpress-2
保存並退出。
安裝GlusterFS並配置一個冗餘盤
在wordpress-1和wordpress-2上使用apt-get命令安裝glusterFS服務端軟體:
sudo apt-get install glusterfs-server
在wordpress-1上,運行以下命令來和wordpress-2保持對等:
sudo gluster peer probe wordpress-2
在wordpress-2上,運行以下命令來和wordpress-1保持對等:
sudo gluster peer probe wordpress-1
在wordpress-1和wordpress-2上,創建路徑用來存儲glusterFS所管理的文件,運行:
sudo mkdir /gluster-storage
在wordpress-1上,創建glusterFS副本,我們稱作volume1,glusterFS 會將它存放在/gluster-storage中的數據保存在你所有的應用伺服器上,運行:
sudo gluster volume create volume1 replica 2 transport tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage force
預期輸出以下結果:
volume create: volume1: success: please start the volume to access data
再次在wordpress-1上,運行一下命令來啟動剛剛創建的glusterFS卷,在volume1上運行:
sudo gluster volume start volume1
預期輸出以下結果:
volume start: volume1: success
在wordpress-1上,如果你想查看剛創建和啟動的glusterFS卷的信息,運行:
sudo gluster volume info
你需要明白的是目前有兩個glusterFS「同盟」,每個對應一個wordpress伺服器。
現在我們已經運行了一個glusterFS盤,為了能夠使用它來同步文件,我們需要將該盤掛載。

掛載共享存儲

首先掛載wordpress-1上的文件系統。
在wordpress-1上,修改fstab文件來使共享文件系統可以隨機啟動:
sudo vi /etc/fstab
添加以下行到fstab來將/storage-pool目錄作為掛載點:
wordpress-1:/volume1 /storage-pool glusterfs defaults,_netdev 0 0
保存並退出。
在wordpress-1上,現在將glusterFS盤掛載至/storage_pool文件系統:
sudo mkdir /storage-pool
sudo mount /storage-pool
在wordpress-1上掛載共享盤/storage-pool後,你可以運行df -h命令來列出當前已掛載的文件。接下來,我們將使用類似的流程來掛載wordpress-2上的共享文件系統。
在wordpress-2上,編輯fstab來使共享系統隨機啟動:
sudo vi /etc/fstab
添加以下行到fstab來將/storage-pool目錄作為掛載點:
wordpress-2:/volume1 /storage-pool glusterfs defaults,_netdev 0 0

在wordpress-2上,現在將glusterFS盤掛載至/storage_pool文件系統:
sudo mkdir /storage-pool
sudo mount /storage-pool
現在,所有在/storage-pool文件系統中創建、修改或刪除的文件都會在兩個wordpress伺服器之間同步,即使當其中一個伺服器暫時故障時也會同步。

將wordpress文件移至共享存儲
下一步是將wordpress-1的wordpress文件移動到共享存儲中。請將紅色字體替換為你自己的值。/var/www/example.com表示wordpress文件的位置(nginx也會在這里查找文件),example.com本身只是根目錄。
在wordpress-1上,運行以下命令來移動wordpress文件至共享文件系統/storage-pool:
sudo mv /var/www/example.com /storage-pool/
sudo chown www-data:www-data /storage-pool/example.com
接下來,你可能想創建一個符號鏈接來指向wordpress在共享文件中位置:
sudo ln -s /storage-pool/example.com /var/www/example.com
目前wordpress文件放在共享文件系統/storage-pool中,這些文件接受Nginx訪問他們的原始路徑/var/www/example.com。

將新的應用伺服器指向共享存儲區
下一步是我們在新web應用程序伺服器上創建一個符號鏈接指向WordPress文件共享文件系統。
如果你選擇使用快照創建wordpress-2,在wordpress-2上運行以下命令:
sudo rm /var/www/example.com
sudo ln -s /storage-pool/example.com /var/www/example.com

如果你從頭創建wordpress-2伺服器,在wordpress-2上運行以下命令:
sudo mkdir -p/var/www
sudo ln -s/storage-pool/example.com /var/www/example.com
這就是wordpress應用的文件同步。接下來是使新伺服器wordpress-2連接資料庫。

創建一個新的資料庫用戶
由於Mysql使用用戶名和源主機來區別用戶,我們需要創建一個新的wordpress用戶來連接新的伺服器wordpress-2。
在資料庫伺服器(mysql-1)上連接至MYSQL控制台:
mysql -u root -p
在一下mysql語句中,將紅色字體替換為你真實環境的參數:
wordpress用戶:Mysql中wordpress用戶。確保和已經存在的用戶名保持一致。
wordpress2private_IP:wordpress-2伺服器的內部ip。
密碼:wordpress用戶的Mysql資料庫密碼。去報和已經存在的用戶名密碼保持一致。
在wordpress-2上mysql控制台中運行以下命令:
CREATE USER 'wordpressuser'@'wordpress_2_private_IP' IDENTIFIED BY 'password';
GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'wordpressuser'@'wordpress_2_private_IP';
FLUSH PRIVILEGES;
現在第二台伺服器wordpress-2就可以登錄mysql伺服器mysql-1了。

還沒負載均衡
注意,有兩個應用伺服器在運行但是他們並沒有被負載均衡,因為每個伺服器必須通過他們的外網IP來訪問。而我們希望能夠通過相同的URL訪問該應用程序,如http://example.com/,以及在兩台伺服器之間做流量分配。

安裝HAProxy
在內網中創建一個新的VPS,在本教程中,我們叫做haproxy-www。
在haproxy-www伺服器上使用apt-get命令來安裝HAProxy:
sudo apt-get update
sudo apt-get install haproxy
我們需要使用HAProxy初始化腳本來啟動和停止HAProxy:
sudo vi /etc/default/haproxy
將ENABLED值改為1來開啟初始化腳本:
ENABLED=1
保存並退出。
現在HAProxy可以在伺服器上被啟動和停止。當然,你現在可以使用命令來控制HAProxy了。讓我們來檢查下它是否運行:
/etc/init.d$ sudo service haproxy status
輸出結果:
haproxy not running
HAProxy沒有運行。這是對的,因為它首先需要配置。接下來,讓我們來配置HAProxy。

HAProxy配置
HAProxy的配置文件主要分為以下兩部分:
Global:設置進程級參數
Proxies:包括默認、監聽、前端、後端參數
Global配置
所有的HAProxy配置都需要在HAProxy伺服器haproxy-www上進行。
首先,復制一份默認的haproxy.cfg文件:
cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig
現在,使用文本編輯器打開haproxy.cfg文件:
sudo vi /etc/haproxy/haproxy.cfg
你將看到有兩部分已經被定義:global和defaults。首先,我們將對一些默認參數做一些修改。
在默認情況下,找到一下兩行:
mode http
option httplog
將其中http替換為tcp,結果如下:
mode tcp
option tcplog
選擇tcp作為HAProxy執行第4層負載平衡模式配置。在我們的例子中,這意味著一個特定的IP地址和埠中所有傳入的流量將被轉發到同一後端。如果你不熟悉這一概念,請閱讀在HAProxy介紹中的負載均衡小節。
先不要關閉配置文件,我們將加上proxy配置。
代理配置(Proxyies)
我們首先要做的事情是增加前端。對一個基本的4層負載均衡設置,前端監聽一個特定的IP地址和埠的流量,並將傳入流量轉發到一個指定的後端。
在配置文件的末尾,讓我們添加上我們的前端:www。請將haproxy_www_public_IP替換為你自己的haproxy-www伺服器IP地址:
frontend www
bind haproxy_www_public_IP:80
default_backend wordpress-backend
以下是對上面的前端配置代碼片段中的每一行是什麼意思做出解釋:
frontend www:指定了一個名為「www」的前端,我們將用它來處理傳入www的流量
bind haproxywwwpublic_IP:80:將haproxywwwpublic_IP替換為你haproxy-www伺服器的外網ip。這是告訴haproxy這個前端將處理這個ip和埠上的流量。
default_backend wordpress-backend:這指定所有這些前端的流量將會轉發到wordpress-backend,這在下一步我們將定義
配置完前端後,繼續將以下後端配置加入文件末尾:
backend wordpress-backend
balance roundrobin
mode tcp
server wordpress-1 wordpress_1_private_IP:80 check
server wordpress-2 wordpress_2_private_IP:80 check
以下是對上面每行配置的解釋:
backend wordpress-backend:指定了一個名為「wordpress-backend」的後端
balance roundrobin:指定該後端將使用「輪循」的負載均衡演算法
server wordpress-1 ...:指定了一個名為「wordpress-1」的後端伺服器,內外nagIP(你必須替換為你自己伺服器ip)和埠監聽,在這個例子中為80埠。「check」選項表示使負載均衡器對這個伺服器定期進行健康檢查
server wordpress-2 ...:指定了一個名為「wordpress-2」的後端
保存並退出。
現在HAProxy可以啟動了,但是讓我們先開啟日誌功能。

開始HAProxy日誌功能
啟用HAproxy日誌功能非常簡單,首先編輯rsyslog.conf文件:
sudo vi /etc/rsyslog.conf
接著找到一下兩行,取消這兩行注釋來開啟UDP日誌功能:
$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1
現在重啟rsyslog來使新配置生效:
sudo service rsyslog restart
HAProxy日誌功能現在已經開啟了!日誌文件將在HAProxy啟動後被放在/var/log/haproxy.log。

啟動HAProxy和PHP/Nginx
在haproxy-www伺服器上,啟動HAProxy來使配置生效:
sudo service haproxy restart
取決於你如何設置您的新應用程序伺服器,您可能需要重新啟動你的WordPress應用程序通過重啟PHP和Nginx。
在wordpress-2伺服器上,重啟PHP和Nginx:
sudo service php5-fpm restart
sudo service nginx restart
現在WordPress應該運行在兩個應用程序伺服器,它們是負載均衡的。但仍有最後一個配置需要更改。

更新WordPress配置
現在你的WordPress應用程序的URL已經改變,我們必須在WordPress更新幾個設置。
在wordpress伺服器,編輯你的wp-config.php文件。它位於WordPress的安裝位置(在本教程中,它是安裝在/var/www/example.com但你安裝可能會有所不同):
cd /var/www/example.com; sudo vi wp-config.php
找到"DB_NAME"所在行;增加以下配置在該行之上,並且替換紅色的值:
define('WP_SITEURL', 'http://haproxy_www_public_IP');
define('WP_HOME', 'http://haproxy_www_public_IP');
保存並退出。
現在WordPress url配置為指向您的負載平衡器,而不是只有最初的WordPress伺服器,而且在當你試著訪問wp-admin控制台時發揮作用。

負載均衡完成
您的web應用程序伺服器現在是負載均衡的。你的負載平衡WordPress現在可以訪問您的用戶通過負載均衡器haproxy-www的外網IP地址或域名訪問!

⑦ Java web項目,怎麼做負載均衡啊

HAProxy是一款反向代理伺服器工具,通過它,可以實現負載均衡。它支持雙機熱備支持虛擬主機,但其配置簡單,擁有非常不錯的伺服器健康檢查功能,當其代理的後端伺服器出現故障, HAProxy會自動將該伺服器摘除,故障恢復後再自動將該伺服器加入。新的1.3引入了frontend,backend,frontend根據任意HTTP請求頭內容做規則匹配,然後把請求定向到相關的backend.

利用HAPorxy實現負載均衡

1. 利用HAProxy實現負載均衡
192.168.169.137 (haproxy)———負載均衡———-(192.168.169.117;192.168.169.118)
安裝配置HAproxy
cd /usr/local/
wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.2.tar.gz
tar zxvf haproxy-1.3.14.2.tar.gz
mv haproxy-1.3.14.2 haproxy
cd haproxy
make TARGET=linux26

2. 創建配置文件
# vi haproxy.cfg
global
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 2 #通過nbproc多設置幾個haproxy並發進程,這樣每個進程的task_queue相對就會短很多,性能自然就能提高不少
#pidfile /var/run/haproxy-private.pid

defaults
log global
mode http
option httplog
option dontlognull
log 127.0.0.1 local3
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen webfarm 0.0.0.0:80
mode http
stats uri /haproxy-stats #監控haproxy狀態
stats realm Haproxy\ statistics
stats auth netseek:52netseek #設置狀態監控的用戶名為netseek密碼為52netseek
balance roundrobin #負載均衡演算法
cookie SERVERID insert indirect
option httpclose #
option forwardfor #apache日誌轉發功能
option httpchk HEAD /check.txt HTTP/1.0 #健康檢測
server app_bbs1 192.168.169.117:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app_bbs2 192.168.169.118:80 cookie app1inst2 check inter 2000 rise 2 fall 5

syslog.conf里加一行
local3.* /var/log/haproxy.log

# touch /var/log/haproxy.log
# chown haproxy:haproxy /var/log/haproxy.log
# chmod u+x /var/log/haproxy.log

# tail –f /var/log/harpoxy.log 監控日誌

# ./haproxy -f haproxy.cfg 啟動服務.
監控狀態圖示http://192.168.169.137/haproxy-stats ,輸入用戶名密碼查看狀態。

後端apache日誌處理
配置httpd.conf
LogFormat 「%{X-Forwarded-For}i %l %u %t \」%r\」 %>s %b 」 combined
CustomLog /var/log/httpd/access_log combined

虛擬主機不記錄檢測日誌:
SetEnvIf Request_URI 「^/check\.txt$」 dontlog
LogLevel warn
ErrorLog /var/log/httpd/vhost_error.log
CustomLog /var/log/httpd/vhost_access.log combined env=!dontlog
相關介紹
#./haproxy –help //haproxy相關命令參數介紹.
haproxy -f <配置文件> [-n 最大並發連接總數] [-N 每個偵聽的最大並發數] [-d] [-D] [-q] [-V] [-c] [-p <pid文件>] [-s] [-l] [-dk]
[-ds] [-de] [-dp] [-db] [-m <內存限制M>] [{-sf|-st} pidlist...]
-d 前台,debug模式
-D daemon模式啟動
-q 安靜模式,不輸出信息
-V 詳細模式
-c 對配置文件進行語法檢查
-s 顯示統計數據
-l 顯示詳細統計數據
-dk 不使用kqueue
-ds 不使用speculative epoll
-de 不使用epoll
-dp 不使用poll
-db 禁用後台模式,程序跑在前台
-sf <pidlist>
程序啟動後向pidlist里的進程發送FINISH信號,這個參數放在命令行的最後
-st <pidlist>
程序啟動後向pidlist里的進程發送TERMINATE信號,這個參數放在命令行的最後

閱讀全文

與haproxy命令相關的資料

熱點內容
麗水四軸加工中心編程 瀏覽:689
國產系統怎麼解壓 瀏覽:552
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852
java棧的元素 瀏覽:737
程序員與籃球事件 瀏覽:675
app反編譯不完整 瀏覽:788
電腦上的文件夾怎麼調整 瀏覽:7
伺服器無響應是什麼原因呀 瀏覽:984
wd文檔里的app怎麼製作 瀏覽:513
電腦里的文件夾沒有了一般能恢復嗎 瀏覽:418
哪裡有配加密鑰匙的 瀏覽:210
伺服器開不了機怎麼把數據弄出來 瀏覽:958
gif動態圖片怎麼壓縮 瀏覽:521
黑猴子棒球壓縮文件解壓密碼 瀏覽:631
如何讓app適應不同的手機屏幕大小 瀏覽:10
蘋果手機如何給安卓手機分享軟體 瀏覽:761
蘋果電腦怎麼運行騰訊雲伺服器 瀏覽:59
明日之後沙石堡命令助手 瀏覽:261