1. 程式人生 > 其它 >apache 負載均衡http 配置

apache 負載均衡http 配置

 yum  install  apr  apr-util apr-devel  gcc  gcc-c++ make cmake git wget  zip  unzip  bzip2
 
 ./configure --prefix=/usr/local/apache/ --enable-deflate --enable-expires \
 --enable-headers --enable-modules=most \
 --enable-so  --with-mpn=worker \
 --enable-rewrite && make  && make install
 
 
--enable-deflate 提供對內容的壓縮傳輸編碼的支援(html js css) 提高傳輸速率, --enable-expires 啟用允許通過配置檔案控制http 的'expires''cache-control' 頭內容 --enable-headers 提供允許對http請求頭的控制 --enable-modules=most 啟用大多數的模組 --enable-so 讓apapche可以支援大多數模組 --with-mpm=worker 工作在具備的兩種模式 worker/prefork --enable-rewrite 開啟url重寫 useradd
-M -s /sbin/nologin apache apache 虛擬主機, 反向代理以及負載均衡功能的實現 虛擬主機 #virtual hosts Include conf/extra/httpd-vhosts.conf <VirtualHost *:80> Serveradmin xxxxxx DocumentRoot /webdata/www1 ServerName www.www1.com ErrorLog logs/error_log CustomLog logs/access_log common <Directory "
/webdata/www1"> Options None AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost *:80> Serveradmin xxxxxx DocumentRoot /webdata/www2 ServerName www.www2.com ErrorLog logs/error_log CustomLog logs/access_log common <Directory "/webdata/www2"> Options Indexes FollowSymLinks #列出所有檔案, 不建議使用,會暴露目錄所有內容 AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost *:80> Serveradmin xxxxxx DocumentRoot /webdata/www3 #就訪問不到 ServerName www.www3.com ErrorLog logs/error_log CustomLog logs/access_log common </VirtualHost> 反向代理以及負載均衡功能的實現 要使用反向搭理功能, 首先需要動態開啟apache的代理模組, 找到apache的配置檔案httpd.conf, 新增如下模組到配置檔案 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so 可鞥還需要開啟如下模組, 後面會用到 LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so 1. ProxyPass 指令 ProxyPass 指令用法如下: ProxyPass [path] !|url path引數為本地主機的url 路徑, url 引數為代理的後端伺服器的url的一部分, 不能包含查詢引數, proxypass指令用於對映請求到後端伺服器, 它主要是用作url字首匹配, 不能有正則表示式, 它裡面配置的path 實際上是一個虛擬的路徑, 在反向代理到後端url後, path是不會帶過去的. 最簡單的代理示例是對所歐請求"/" 都對映到一個後端伺服器上, ProxyPass "/" "http://www.abc.com" 要在特定的url進行代理, 其它的所有請求都在本地處理, 可以配置如下: ProxyPass "/images" "http://www.abc.com" 這個配置說明只有 /images 開頭的路徑才會代理轉發, 假定訪問的域名為 http://www.example.com, 當客戶端請求 http://www.example.com/images/server.git 這個url後, /images這個路徑沒有帶過去, ProxyPass / image/ ! 表示 /images/請求不被轉發 2. ProxyPassReverse指令 此指令一般和proxypass 指令搭配使用, 此指令可使用 apache 調整http重定向應答中URL頭裡的url, 通過此指令, 可以避免在apache作為反向代理使用時後端伺服器 的http 重定向造成繞過反向代理的問題, ProxyPass /example http://www.abc.com ProxyPassReverse /example http://www.abc.com 3. ProxyPassMatch 指令 此指令實際上是正則匹配模式的proxypass, 是基於URL的正則匹配, 而匹配上的規則部分是會帶到後端的URL的, ProxyPassMatch ^/images ! 表示對/images的請求, 都不會被轉發 ProxyPassMatch ^(/.*.gif) http://www.static.com/$1 表示對所有gif圖片的請求, 都會轉到後端伺服器, 假定訪問的域名為www.abc.com 當有如下訪問請求時: http://www.abc.com/img/abc.gif ,那麼法相代理將會轉換為下面的內部請求地址: http://www.static.com/img/abc.gif <VirtualHost *:80> Serveradmin xxxxxx DocumentRoot /webdata/www2 ServerName www.www2.com ErrorLog logs/error_log CustomLog logs/access_log common <Directory "/webdata/www2"> Options Indexes FollowSymLinks #列出所有檔案, 不建議使用,會暴露目錄所有內容 AllowOverride None Require all granted </Directory> </VirtualHost> ProxyPass /a/b/c http://192.168.62.168 ProxyPassReverse /a/b/c/ http://192.168.62.168 負載均衡 apache 支援建立一個後端伺服器節點組, 通過反向代理進行引用, 實現負載均衡功能, <Proxy balancer://myserver> BalancerMember http://1.1.1.1 BalancerMember http://2.2.2.2 ProxySet lbmethod=byrequests </Proxy> ProxyPass "/img" "balancer://myserver/img" ProxyPassReverse "/img" "balancer://myserver/img" httpd 有3種負載均衡演算法,分別是 byrequests: 預設, 基於請求數量計算權重 bytraffic: 基於I/O流量大小計算權重 bybusyness: 基於掛起的請求(排隊暫未處理) 數量計算權重 <Proxy balancer://myserver> BalancerMember http://1.1.1.1 BalancerMember http://2.2.2.2 loadfactor=3 timeout=1 ProxySet lbmethod=byrequests </Proxy> ProxyPass "/img" "balancer://myserver/img" ProxyPassReverse "/img" "balancer://myserver/img" 引數 loadfactor 表示apache 傳送請求到後端伺服器的權重,預設為1, 可以將該值設定為1 到100之間, 值越大,權重越高 才是 timeout 表示等待後端節點返回資料的超時時間, 單位為秒 在使用了apache負載均衡後,檢視負載狀態, apache提供了負載均衡狀態顯示頁面.在httpd.conf 新增 <Location "/lbstatus"> SetHandler balancer-manager Require hosts localhost Require ip 172.16.230.120 </Location>