1. 程式人生 > >windows/linux下Apache做負載均衡配置教程

windows/linux下Apache做負載均衡配置教程

第一次看到這個標題時我也很驚訝,Apache居然還能做負載均衡?真是太強大了。經過一番調查後發現的確可以,而且功能一點都不差。這都歸功於 mod_proxy 這個模組。不愧是強大的Apache啊。
廢話少說,下面就來解釋一下負載均衡的設定方法。
一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到負載均衡的目的。還有一種方式是用兩臺伺服器,一臺作為主伺服器(Master),另一臺作為熱備份(Hot Standby),請求全部分給主伺服器,在主伺服器當機時,立即切換到備份伺服器,以提高系統的整體可靠性。
負載均衡的設定
Apache可以應對上面這兩種需求。先來討論一下如何做負載均衡。首先需要啟用Apache的幾個模組:

程式碼如下
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
mod_proxy提供代理伺服器功能,mod_proxy_balancer提供負載均衡功能, mod_proxy_http讓代理伺服器能支援HTTP協議。如果把mod_proxy_http換成其他協議模組(如mod_proxy_ftp),或許能支援其他協議的負載均衡,有興趣的朋友可以自己嘗試一下。

然後要新增以下配置:
程式碼如下
ProxyRequests Off

    BalancerMember http://node-a.myserver.com:8080
    BalancerMember http://node-b.myserver.com:8080

ProxyPass / balancer://mycluster
# 警告:以下這段配置僅用於除錯,絕不要新增到生產環境中!!!
程式碼如下  複製程式碼

    SetHandler balancer-manager
    Order Deny,Allow
    Deny from all
    Allow from localhost

從上面的 ProxyRequests Off 這條可以看出,實際上負載均衡器就是一個反向代理,只不過它的代理轉發地址不是某臺具體的伺服器,而是一個 balancer:// 協議:

程式碼如下
ProxyPass / balancer://mycluster
協議地址可以隨便定義。然後,在段中設定該balancer協議的內容即可。 BalancerMember指令可以新增負載均衡組中的真實伺服器地址。
下面那段是用來監視負載均衡的工作情況的,除錯時可以加上(生產環境中禁止使用!),然後訪問 http://localhost/balancer-manager/ 即可看到負載均衡的工作狀況。
OK,改完之後重啟伺服器,訪問你的Apache所在伺服器的地址,即可看到負載均衡的效果了。開啟 balancer-manager 的介面,可以看到請求是平均分配的。
如果不想平均分配怎麼辦?給 BalancerMember 加上 loadfactor 引數即可,取值範圍為1-100。比如你有三臺伺服器,負載分配比例為 7:2:1,只需這樣設定:
程式碼如下
ProxyRequests Off

    BalancerMember http://node-a.myserver.com:8080 loadfactor=7
    BalancerMember http://node-b.myserver.com:8080 loadfactor=2
    BalancerMember http://node-c.myserver.com:8080 loadfactor=1

ProxyPass / balancer://mycluster
預設情況下,負載均衡會盡量讓各個伺服器接受的請求次數滿足預設的比例。如果要改變演算法,可以使用 lbmethod 屬性。如:
程式碼如下
ProxyRequests Off

    BalancerMember http://node-a.myserver.com:8080 loadfactor=7
    BalancerMember http://node-b.myserver.com:8080 loadfactor=2
    BalancerMember http://node-c.myserver.com:8080 loadfactor=1

ProxyPass / balancer://mycluster
ProxySet lbmethod=bytraffic
lbmethod可能的取值有:
lbmethod=byrequests  按照請求次數均衡(預設)
lbmethod=bytraffic  按照流量均衡
lbmethod=bybusyness  按照繁忙程度均衡(總是分配給活躍請求數最少的伺服器)
各種演算法的原理請參見Apache的文件。
熱備份(Hot Standby)
熱備份的實現很簡單,只需新增 status=+H 屬性,就可以把某臺伺服器指定為備份伺服器:
程式碼如下
ProxyRequests Off

    BalancerMember http://node-a.myserver.com:8080
    BalancerMember http://node-b.myserver.com:8080 status=+H

ProxyPass / balancer://mycluster
從 balancer-manager 介面中可以看到,請求總是流向 node-a ,一旦node-a掛掉, Apache會檢測到錯誤並把請求分流給 node-b。Apache會每隔幾分鐘檢測一下 node-a 的狀況,如果node-a恢復,就繼續使用node-a。
linux下Apache做負載均衡
作業系統:DEBIAN 5.03(Ubuntu也可以同理配置)
一、安裝apache載入模組
程式碼如下
apt-get install apache2
然後進入到apache的配置目錄
程式碼如下
cd /etc/apache2
apache的反向代理和負載均衡其實利用的都是反向代理的原理,至於什麼叫做反向代理可以點此http://baike.baidu.com/view/1165595.htm
關鍵需要載入下面三個模組
程式碼如下
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so
由於Debian系統下apache所有的模組都是放在/usr/lib/apache2/modules/裡面的,通過/etc/apache2/mods-available裡面的*.load載入的,如果要模組的話需要在/etc/apache2/mods-enabled裡面用ln建立連結,當然你也可以再/etc/apache2/apache2.conf裡面直接把上面三句話寫進入,但是不建議這樣做。執行程式碼如下
程式碼如下
ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
ln -s /etc/apache2/mods-available/proxy_balancer.load /etc/apache2/mods-enabled/proxy_banancer.load
做好上面幾步之後我們重啟下apache
程式碼如下
/etc/init.d/apache2 restart
二、配置反向代理功能
載入完模組後可以建立一個虛擬主機來作為反向代理
程式碼如下  複製程式碼
vi /etc/apache2/sites_available/proxy
配置如下
程式碼如下
Listen 202.xxx.xxx.xxx:80     (別人訪問的IP和埠)
(同上)
ServerAdmin [email protected]
ProxyRequests Off             (說明開啟的是反向代理)
ProxyMaxForwards 100
ProxyPreserveHost On
ProxyPass / http://10.x.xx.xxx/ (轉發到url上的請求)
ProxyPassReverse / http://10.x.xx.xxx/
                (這段是訪問的控制)
Order Deny,Allow
Allow from all


然後再在/etc/apache2/sites_enabled/裡面建立ln連結
程式碼如下
ln -s /etc/apache2/sites_available/proxy /etc/apache2/sites_enabled/proxy
重啟apache
程式碼如下
/etc/init.d/apache2 restart
然後反向代理就開啟了
當別人輸入http://202.xxx.xxx.xxx時就會通過反向代理轉到http://10.x.xx.xxx上,這樣簡單的反向代理功能就開啟了
三、apache負載均衡配置
a、簡單的負載均衡
然後接著講apache的負載均衡模組吧
同理建立一個虛擬主機來作為負載均衡
程式碼如下
vi /etc/apache2/sites_available/balancer
配置如下
程式碼如下
Listen 202.x.xx.xxx:80        (別人訪問的IP和埠)

     ServerAdmin [email protected]
     ProxyRequests Off
     Proxypass / balancer://proxy/
     
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1
         BalancerMember http://10.0.0.2
     

從上面的 ProxyRequests Off 這條可以看出,實際上負載均衡器就是一個反向代理,只不過它的代理轉發地址不是某臺具體的伺服器,而是一個 balancer://協議地址
ProxyPass / balancer://proxy/ 協議地址可以隨便定義。然後,在段中設定該balancer協議的內容即可。 BalancerMember指令可以新增負載均衡組中的真實伺服器地址。
然後再在/etc/apache2/sites_enabled/裡面建立ln連結
程式碼如下
ln -s /etc/apache2/sites_available/balancer /etc/apache2/sites_enabled/balancer
重啟apache
/etc/init.d/apache2 restart
這樣apache的負載均衡就配置好了
如果訪問http://202.x.xx.xxx的時候會均勻地開啟http://10.0.0.1和http://10.0.0.2,比如你兩次開啟http://202.x.xx.xxx會又一次開啟http://10.0.0.1一次開啟http://10.0.0.2這樣就是兩臺伺服器接受的請求平均了,達到了負載均衡的效果。
b、負載比例分配
當然如果你發現你的兩臺伺服器配置不一樣,一臺較好,一臺較差,那麼就要開始配置不同比例的負載均衡了。如果兩臺伺服器你想配置負載分配比為3:1則配置檔案如下
程式碼如下
Listen 202.x.xx.xxx:80        (別人訪問的IP和埠)

     ServerAdmin [email protected]
     ProxyRequests Off
     Proxypass / balancer://proxy/
     
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1   loadfactor= 3
         BalancerMember http://10.0.0.2   loadfactor= 1
     

c、負載分配演算法
當然你可能想通過不同的演算法實現負載均衡,比方說按照請求次數,或者按照流量均衡,這裡用到的指令是lbmethod
lbmethod可能的取值有:
lbmethod=byrequests 按照請求次數均衡(預設)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(總是分配給活躍請求數最少的伺服器)
按照流量的均衡配置如下
程式碼如下
Listen 202.x.xx.xxx:80        (別人訪問的IP和埠)

     ServerAdmin [email protected]
     ProxyRequests Off
     Proxypass / balancer://proxy/
     ProxySet lbmethod=bytraffic   (加上這句)
     
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1   loadfactor= 3
         BalancerMember http://10.0.0.2   loadfactor= 1
     

這樣你的負載均衡就可以按照流量均衡了
d、熱備份
在最後講一講熱備份吧,熱備份的實現很簡單,只需新增 status=+H 屬性,就可以把某臺伺服器指定為備份伺服器,配置檔案如下
程式碼如下
Listen 202.x.xx.xxx:80        (別人訪問的IP和埠)

     ServerAdmin [email protected]
     ProxyRequests Off
     Proxypass / balancer://proxy/
     ProxySet lbmethod=bytraffic   (加上這句)
     
         Order Deny,Allow
         Allow from all
         BalancerMember http://10.0.0.1 
         BalancerMember http://10.0.0.2   status=+H
     


  從配置中可以看出請求總是流向http://10.0.0.1,一旦http://10.0.0.1掛掉, Apache會檢測到錯誤並把請求分流給 http://10.0.0.2。Apache會每隔幾分鐘檢測一下http://10.0.0.1的狀況,如果http://10.0.0.1恢復,就繼續使用http://10.0.0.1,這樣就可以實現熱備份了
轉自【B5教程網】:http://www.bcty365.com/content-122-3439-1.html

相關推薦

windows/linuxApache負載均衡配置教程

第一次看到這個標題時我也很驚訝,Apache居然還能做負載均衡?真是太強大了。經過一番調查後發現的確可以,而且功能一點都不差。這都歸功於 mod_proxy 這個模組。不愧是強大的Apache啊。廢話少說,下面就來解釋一下負載均衡的設定方法。一般來說,負載均衡就是將客戶端的請求分流給後端的各個真實伺服器,達到

web叢集之一 linuxapache+tomcat負載均衡配置-筆記

負載均衡叢集配置(7):Apache配置——建立workers.properties    httpd.conf的最後新增的配置中workers.properties檔案是不存在的,需要我們自己在apache/conf路徑下建立。workers.properties檔案用於對負載均衡的負載器worker (

LinuxNginx+Tomcat負載均衡和動靜分離配置要點

cep 修改 div -c user setsebool index.php sebool bool 本文使用的Linux發行版:CentOS6.7 下載地址:https://wiki.centos.org/Download 一、

生產環境使用nginx負載均衡配置的五種策略

寫入 8.0 pass 其它 所有 highlight ups ron debug nginx的upstream目前支持5種方式的分配1.輪詢(默認) 每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。 2.weight指定輪詢幾率,w

LinuxNginx實現負載均衡 Nginx學習系列之搭建環境

關於在本地虛擬機器(VMware 14)下安裝Linux同時安裝Nginx,請參考Nginx學習系列之搭建環境 1、啟動Nginx 在Nginx安裝成功的前提下,啟動Nginx 已root模式登陸(許可權需要),接著找到Nginx的安裝目錄,啟動Nginx,並且指定Nginx啟動所需的配置檔案,該檔

Linux Apache 的安裝與配置

1、安裝APR (Apache Portable Runtime) wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz tar -zxf apr-1.4.5.tar.gz cd apr-1.4.5 ./configure --pre

LinuxNginx+Resin負載均衡,session問題解決例項

                     Linux下Nginx+Resin負載均衡,session問題解決例項   轉載:http://blog.chinaunix.ne

linuxapache https 虛擬主機配置

如果單純只想在傳輸資料時加密傳輸,那麼ssl證書是不需要認證的,但是瀏覽器開啟時會有警告資訊。假設我們做的不是一個公眾產品那麼也還好啦。 如下是今天學習時的一個筆記,其實我用的是真實環境。 環境:CentOS 64, 32bit;Apache 2.2.15; 1.檢查apa

LinuxApache httpd安裝及配置為服務

 Apache安裝 2016年9月26日 10:51 最重要的要點 安裝版本:2.4.23 依賴軟體:apr-1.4.5、apr-util-1.3.12和pcre-8.31 安裝環境

linuxapache負載均衡與jboss叢集配置

一、安裝並配置jdk 首先安裝JDK,執行命令./ jdk-6u27-linux-x64.bin,JDK安裝目錄為當前指定目錄或者是./jdk-6u33-linux-x64-rpm.bin,或者(如果是rpm格式)執行 rpm –ivh jdk-6u33-linux-amd

windows平臺利用Nginx負載均衡

htm oot 部署 top proxy rec cnblogs access cast 1.下載nginx(http://nginx.org/en/download.html)安裝包,解壓,並使用cmd命令轉到nginx.exe所在的目錄 2.執行cmd命令start n

Linux tomcat基於nginx負載均衡

tomcat 負載 測試目的:在一臺裝有nginx服務器上訪問nginx這臺的ip地址,刷新一次就會顯示後端三臺不同的tomcat服務器的測試頁。測試環境:三臺centos 6.8 一臺 centos 7.3軟件版本: nginx 1.12.1

nginx反向代理、負載均衡配置linux環境的安裝及通過ip和域名訪問nginx

本文主題: 一、什麼是nginx 二、nginx的應用場景 三、linux環境下nigix的安裝 四、nginx配置虛擬機器(ip、域名) 五、nginx實現反向代理 六、nginx實現負載均衡 一、什麼是nginx 1、http伺服器(通過nginx配置檔案配置

nginx在windows的安裝和負載均衡配置

1、windows版Nginx安裝 官網:https://nginx.org/en/download.html 選擇長的順眼的版本下載下來,然後解壓。 2、啟動 不要點選那個原諒色 Nginx.exe 啟動,總是一閃而過,不管他,不這樣啟動就好了。 正確的啟動方式,CMD進入命令列

tomcat7配置session複製和nginx負載均衡

基於Nginx+Tomcat叢集的Session共享 (如果啟用了防火牆請開發配置中用到的埠) 在Linux環境下  第一步:下載對應的nginx 和 tomcat 包並解壓、安裝、配置(此步驟之前文章有提過,在此省略。。)  #user nobody; worke

Nginx Linux環境安裝娛樂城原始碼搭建及負載均衡配置

在正式介紹Nginx之前先簡單說明下什麼是正向代理和反向代理,娛樂城原始碼搭建《企娥21717 93408》Nginx實現負載均衡功能正是基於其反向代理功能實現的。 正向代理類似一個跳板機,代理訪問外部資源。正向代理 是一個位於客戶端和原始伺服器之間的伺服器,為了從原始伺服器取得內容,客戶端向代理髮送一個請

Windows訪問Linux的共享目錄的配置方法

cat tab all samb dha server nbsp lan eno user安全級別 第一步:安裝samba3(如果已經安裝就跳過這一步) [[email protected]/* */ /]# yum groupinstall "CIFS

Linux & Windows 環境 RabbitMQ 安裝與基本配置

web tor tag ogr 使用 sts 管理員 pin ini 索引: 開源Spring解決方案--lm.solution 參看代碼 GitHub: rabbitmq.txt 一、Linux (DeepinOS) 環境 1 1.安裝: 2 su

多tomcat服務和nginx負載均衡配置 linux 配置多個tomcat

1、nginx服務安裝及配置,詳見:linux 配置之安裝nginx 2、多個tomcat服務安裝及配置,詳見:linux 配置多個tomcat 3、關鍵配置nginx.conf檔案 http { include /etc/nginx/mime.types;

windowsapache利用SSL來配置https

第一步開啟httpd.conf檔案找到以下兩個變數把註釋去掉。 #LoadModule ssl_module modules/mod_ssl.so (去掉前面的#號) #Include conf/extra/httpd-ssl.conf (去掉前面的#號) #LoadModule proxy_mo