Apache 2.x+jboss6.1反向 Proxysession共用問題設定,

來源:互聯網
上載者:User

Apache 2.x+jboss6.1反向 Proxysession共用問題設定,

2016年8月4日,第一次開筆寫部落格園,今天在公司解決了一個問題。

apache+jboss做負載平衡的問題一直困擾了很久。問題描述如下,使用apche做反向 Proxy轉寄給3台jboss 的app,app有session會話。為了跳轉不丟失session會話,需要配置。經過幾天的尋找,大概有兩種方法:

1、jboss上配置session共用

2、apache上將請求轉寄至已訪問過的鏈路

 

 

Session處理
另一方面就是多個商務邏輯單元之間的Session處理,處理方式有兩種,一種是Session sticky模式,另外一種是Session共用模式。

 

 

Session處理方式

Session Sticky

Session共用

處理邏輯

把同一個使用者的Session一直發送到同一個邏輯單元處理

所有的後端處理邏輯單元共用Session或者Session更新時通知其它邏輯單元

主要實現方式

指定負載的分發組件(如Apache),把請求中包含特定屬性的請求發到同一個串連,如指定jsessionid一致的請求到同一個請求,或者在負載組件中給每個響應增加一個頭部屬性,指定下次的分發目的地

優勢

本地維護Session,不需要訪問網路存取或者通知其它處理單元變更

完全的隨機分發,可以根據服務忙閑調整分發策略,高可用性

劣勢

一台伺服器宕機後,當前Session斷掉

網路存取操作等耗時,影響處理效率(根據選用的策略不同造成影響不同)

 

 官方文檔描述:

Examples of a balancer configuration

Before we dive into the technical details, here's an example of how you might use mod_proxy_balancer to provide load balancing between two back-end servers:

<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80
BalancerMember http://192.168.1.51:80
</Proxy>
ProxyPass /test balancer://mycluster

Another example of how to provide load balancing with stickyness using mod_headers, even if the back-end server does not set a suitable session cookie:

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80 route=1
BalancerMember http://192.168.1.51:80 route=2
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass /test balancer://mycluster

 

 

ProxyRequests Off 這條可以看出,實際上負載平衡器就是一個反向 Proxy,只不過它的代理轉寄地址不是某台具體的伺服器,而是一個 balancer:// 協議: ProxyPass / balancer://mycluster協議地址可以隨便定義。然後,在<Proxy>段中設定該balancer協議的內容即可。 BalancerMember指令可以添加負載平衡組中的真實伺服器位址。

 

 

摘抄網上資訊:

配置負載分發
以下配置修改都是在Apache的conf/httpd.conf設定檔中完成
1.    修改載入mod proxy需要的模組
找到配置中被注釋掉的幾行,刪除注釋,使Apache在啟動的時候載入如下模組
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module modules/mod_headers.so
LoadModule status_module modules/mod_status.so
2.    給HTTP要求標頭部添加路由辨別碼
直接在loadModule模組下面增加即可
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
3.    配置負載平衡後端的商務邏輯單元處理地址
注意本步驟標紅的需要與上面步驟中的ROUTEID一致。
<Proxy balancer://mycluster>
BalancerMember http://192.168.77.213:9005 route=1
BalancerMember http://192.168.77.213:9004 route=2
BalancerMember http://192.168.77.213:9002 route=3
BalancerMember http://192.168.77.213:9003 route=4
ProxySet stickysession=ROUTEID
</Proxy>
4.    配置mod proxy路由規則
ProxyPass / balancer://mycluster/
注意“/”不要少加,mycluster與上面的後端處理叢集的名字一致。這裡的意思是把所有的請求都轉寄給上面的叢集進行處理
5.    2,3,4步驟的最終配置如下:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
BalancerMember http://192.168.77.213:9005 route=1
BalancerMember http://192.168.77.213:9004 route=2
BalancerMember http://192.168.77.213:9002 route=3
BalancerMember http://192.168.77.213:9003 route=4
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass / balancer://mycluster/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.