Apache +Tomcat的負載均衡與叢集配置
實驗拓撲圖:
一.搭配環境
(1)。Tomcat的安裝和配置
Tomcat_a的ip:192.168.55.229
Tomcat_b的ip:192.168.55.231
Tomcat的需要安裝jdk和tomcat包(例如apache-tomcat-6.0.30.zip和jdk-6u5-linux-x64.bin)
tomcat的安裝和配置可以參考我的部落格:
http://blog.csdn.net/zhuying_linux/article/details/6583096
測試:分別訪問http://192.168.55.229:8080和http://192.168.55.231:8080
如果出現tom貓說明已經成功
(2)。Apache 的安裝:(採用原始碼編譯安裝的方式)
Apache的地址為:192.168.50.50
#tar xzvf httpd-2.2.17.tar.gz
#cd httpd-2.2.17
# ./configure --with-ldap --enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"【此選項為編譯所有的模組】
1. 測試
/usr/local/apache2/conf/httpd.conf 中設定
ServerName localhost
#cd /usr/local/apache2/bin
#./apachectl start
將出現類似httpd (pid 17040) already running的輸出
訪問地址:http://192.168.50.50
It works!hehe...
說明已經成功~\(≧▽≦)/~啦啦啦,(~ o ~)~zZ
二.(1)mod_proxy負載均衡配置
1.載入proxy模組
所有需要載入的代理模組為mod_proxy.so,mod_proxy.ajp.so,mod_proxy.http.so,mod_proxy.ftp.so,mod_proxy.connect.so,mod_proxy.balancer.so
由於已經將所有模組載入,所以不用在配置中做修改,即為/usr/local/apache2/conf/httpd.conf檔案中的如下指令:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
2.配置虛擬主機proxyblancer
在/usr/local/apache2/conf/httpd.conf尾部新增Include conf/app1.conf
在conf/app1.conf 中新增以下內容:
Listen 8051
<VirtualHost *:8051>
ServerAdmin angel.zhu@99bill.com# 指定伺服器管理員的E-MAIL地址,伺服器自動將錯誤報告給該地址
ServerName localhost # web客戶端搜尋的主機名
ErrorLog "/opt/apache_log/app1_error.log"
CustomLog "/opt/apache_log/app1_access.log" common
ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On lbmethod=byrequests timeout=5 maxattempts=3
# balancer: 複製會話的方式,包括JSESSIONID
或PHPSESSIONID
;
nofailover:on 表示會話在worker出錯或停掉時會中斷,當後端伺服器不支援會話複製時設為on
; lbmethod:選擇負載的排程演算法,預設byrequests
表示輪詢排程(就是1:1),
bytraffic
表示加權重的排程,需加
loadfactor指定權重值。
ProxyPassReverse / balancer://cluster/ #此指令使Apache調整HTTP重定向應答中Location, Content-Location, URI頭裡的URL。這樣可以避免在Apache作為反向代理使用時,後端伺服器的HTTP重定向造成的繞過反向代理的問題。
#The ProxyRequests directive should usually be set off when using ProxyPass.
ProxyRequests Off# 不允許作為正向代理
ProxyPreserveHost On# 當啟用時,此選項將把傳入請求的"Host:"行傳遞給被代理的主機,而不是傳遞在ProxyPass中指定的主機名。
<proxy balancer://cluster>
BalancerMember ajp://192.168.55.229:8009 route=tomcat_a
BalancerMember ajp://192.168.55.231:8009 route=tomcat_b
# rout 值附加在session ID 後面
</proxy>
</VirtualHost>
此時訪問http://192.168.50.50:8051,就出現了tom貓,說明apache已經來自8051埠的訪問定向到tomcat伺服器上。可是現在並看不出來是哪一臺tomcat伺服器,下面在兩臺tomcat中加入測試頁面使效果更明顯
2.在tomcat_a上面新增檔案/usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,內容為<font color=red>aaaaaaaaaaaaaaaaaa</font><b>
另一臺tomcat_b上面新增檔案:
/usr/local/apache-tomcat-6.0.30/webapps/ROOT/test.jsp,內容為
<font color=blue>bbbbbbbbbbbbbbbbb</font><b>
3.分別修改server.xml檔案 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
另: 如果是jetty應用的話,就修改$jetty_home/etc/jetty.xml
<!-- =========================================================== -->
<Set name="sessionIdManager">
<New class="org.mortbay.jetty.servlet.HashSessionIdManager">
<Set name="workerName"> tomcat_a </Set>
</New>
</Set>
此時在問http://192.168.50.50:8080 /test.jsp,就會交替出現aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,則表明測試成功。
二(2):mod_jk負載均衡配置
1. 由於mod_jk 為第三方模組,需要到tomcat官網下載,url為http://mirror.bjtu.edu.cn/apache//tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz 。
2. 在Apache Server 上將jk 模組編譯進apache中:
# tar xvfz tomcat-connectors-1.2.31-src.tar.gz
# cd tomcat-connectors-1.2.31-src/native/
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-Java-home=/usr/local/jdk
make && make install
此時在/usr/local/apache2/modules 下會出現一個mod_jk.so,則已編譯成功。
3. 配置apache 的配置檔案
1 vi vi /usr/local/apache2/conf/httpd.conf 新增以下內容:
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel warn
</IfModule>
Include conf/app2.conf
2 建立並配置app2.conf檔案
Listen 8052
<VirtualHost *:8052>
DocumentRoot "/usr/local/apache2/htdocs"
ServerName localhost
ServerAdmin app2.Admin@99bill.com
ErrorLog "/usr/local/apache2/logs/app2 error_log”
TransferLog "/usr/local/apache2/logs/app2 access_log"
JkMount /* tomcatbalancer
</VirtualHost>
3 建立並配置workers.properties檔案
worker 是一個Tomcat 例項 ,用來處理從web server 來的servlet 請求,可以一個worker 或 多個worker,來實現載入平衡或網站分割槽。 每個worker 都向web server 註冊其主機的ip 地址,埠號和通訊協議。
vi /usr/local/apache2/conf/workers.properties,新增以下內容:
worker.list=tomcattest1
worker.tomcattest1.port=8009
worker.tomcattest1.host=192.168.55.229
worker.tomcattest1.type=ajp13
worker.tomcattest1.lbfactor=2
worker.list=tomcattest2
worker.tomcattest2.port=8009
worker.tomcattest2.host=192.168.55.231
worker.tomcattest2.type=ajp13
worker.tomcattest2.lbfactor=1
worker.list=tomcatbalancer
worker.tomcatbalancer.type=lb
worker.tomcatbalancer.balance_workers=tomcattest1,tomcattest2
1. 分別修改server.xml檔案 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_a">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_b">
另: 如果是jetty應用的話,就修改$jetty_home/etc/jetty.xml
<!-- =========================================================== -->
<Set name="sessionIdManager">
<New class="org.mortbay.jetty.servlet.HashSessionIdManager">
<Set name="workerName"> tomcat_a </Set>
</New>
</Set>
5 測試:
此時在問http://192.168.50.50:8052/test.jsp,就會交替出現aaaaaaaaaaaaaaaaaa和bbbbbbbbbbbbbbbbb ,並且bbbbbbbbbbbbbbbbb出現的平均次數是的2倍,這是因為worker.tomcattest2.lbfactor=1
worker.tomcattest1.lbfactor=2 權重的設定
http://blog.csdn.net/zhuying_linux/article/details/6587814
相關文章
- 負載均衡叢集負載
- Linux環境搭建Nginx+Tomcat負載均衡叢集LinuxNginxTomcat負載
- 注意這幾點,輕輕鬆鬆配置 Nginx + Tomcat 的叢集和負載均衡NginxTomcat負載
- 使用Redis儲存Nginx+Tomcat負載均衡叢集的SessionRedisNginxTomcat負載Session
- Nginx/Httpd負載均衡tomcat配置Nginxhttpd負載Tomcat
- kubernetes叢集內排程與負載均衡負載
- dubbo叢集和負載均衡負載
- mariadb叢集與nginx負載均衡配置–centos7版本Nginx負載CentOS
- 叢集、負載均衡、分散式的區別與聯絡負載分散式
- centos7下配置nginx反向代理負載均衡叢集CentOSNginx負載
- haproxy(單機)+mysql叢集負載均衡MySql負載
- orleans叢集及負載均衡實現負載
- LNMP 分散式叢集(一):Nginx+PHP平臺搭建與負載均衡配置LNMP分散式NginxPHP負載
- 負載均衡環境搭建實戰之apache和tomcat負載ApacheTomcat
- 叢集,lvs負載均衡的四種工作模式負載模式
- 負載均衡 - MQTT Broker 叢集詳解(一)負載MQQT
- Haproxy+Keepalived高可用負載均衡叢集負載
- Dubbo學習筆記(四)叢集容錯與負載均衡筆記負載
- Nginx+Tomcat部署負載均衡NginxTomcat負載
- LVS負載均衡配置與keepalive服務配置負載
- docker初體驗:docker部署nginx負載均衡叢集DockerNginx負載
- LVS+Keepalive 實現負載均衡高可用叢集負載
- Java程式設計解密-Dubbo負載均衡與叢集容錯機制Java程式設計解密負載
- 淺談達夢DSC叢集以及負載均衡實現與驗證負載
- Keepalived+Nginx+Tomcat配置高可用負載均衡系統示例NginxTomcat負載
- nginx+tomcat實現負載均衡NginxTomcat負載
- Ribbon負載均衡策略與自定義配置負載
- Nginx+Tomcat實現負載均衡、動靜分離叢集部署NginxTomcat負載
- 粘性會話負載均衡 - MQTT Broker 叢集詳解(二)會話負載MQQT
- linux搭建LVS+keepalive+nginx實現叢集高效能負載均衡配置詳解LinuxNginx負載
- nginx配置+uwsgi+負載均衡配置Nginx負載
- RabbitMQ(四):使用Docker構建RabbitMQ高可用負載均衡叢集MQDocker負載
- Dapr + .NET Core實戰(十一)單機Dapr叢集負載均衡負載
- 藉助 TCP 負載均衡和 Galera 叢集擴充套件 MySQLTCP負載套件MySql
- 使用Nginx配置TCP負載均衡NginxTCP負載
- IdentityServer4 負載均衡配置IDEServer負載
- nginx讓多個tomcat實現負載均衡NginxTomcat負載
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- 做了反向代理和負載均衡的nginx配置檔案簡單示例(nginx.conf) HTTP負載均衡/TCP負載均衡負載NginxHTTPTCP