banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Cho mình hỏi về vấn đề Load Balancer 2 web với Apache  XML
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 12/11/2013 14:47:51 (+0700) | #1 | 278993
[Avatar]
ngtrongtri
Member

[Minus]    0    [Plus]
Joined: 27/03/2012 22:54:13
Messages: 114
Offline
[Profile] [PM]
Xin chào, mình có vấn đề về Load Balancer Apache mod_jk, mong mọi người giúp đỡ.
Mình có setup 2 web Tomcat, sử dụng Apache mod_jk để load balancer, tuy nhiên mình gặp vấn đề về thời gian chuyển qua lại giữa 2 server.

File cấu hình như hình dưới:

worker.list=worker1,worker2,loadbalancer
worker.worker1.port=8009
worker.worker1.host=192.168.2.60
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.worker2.port=8209
worker.worker2.host=192.168.2.61
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

#setup the load-balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1,worker2
worker.loadbalancer.sticky_session=True
#worker.loadbalancer.sticky_session_force=True


Ở đây mình chưa rõ nó Lb theo kiểu gì, nhưng mình nghĩ là theo kiểu round robin vì phiên làm việc của app mình nó cứ chạy qua chạy lại giữa 2 server, dữ liệu sync không kịp làm cho app bị lỗi.

Nên cho mình hỏi làm thế nào để cố định 1 phiên làm việc trên 1 server thôi, hoặc tăng thời gian chuyển qua chuyển lại giữa 2 server ?
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 12/11/2013 18:13:17 (+0700) | #2 | 278994
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
1. Nó không làm việc theo roundrobin . Trừ khi bạn sử dụng DNS để làm việc này. Trong trường hợp của bạn, bạn đang sử dụng mod_proxy để làm việc này.

- Dễ nhận thấy là 2 instance Tomcat đang chạy ở port 8009 & 8209
- Người dùng truy cập vào Port 80 sau đó được Forward (Forward Proxy) vào 2 port trong của Tomcat. Ngược lại Tomcat coi Apache như 1 Reverse Proxy để communicate với client bên ngoài thông qua Port 80

2. Bạn thử truy cập domain/balancer-manager xem có ra cái page nào không ?
Nếu ra thì đó là page quản lí để bạn có thể điều chỉnh việc cách làm việc cho từng node.

Về cách chia thời gian và quản lí phiên làm việc thông qua mod_proxy bạn tham khảo ở đây

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

Chú í phần router & loadfactor

Cheers
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 12/11/2013 20:52:18 (+0700) | #3 | 278995
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

http://tomcat.apache.org/connectors-doc/reference/workers.html wrote:

If you want to use session stickiness, you must set different jvmRoute attributes in the Engine element in Tomcat's server.xml. Furthermore the names of the workers which are managed by the balancer have to be equal to the jvmRoute of the Tomcat instance they connect with.
 
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 13/11/2013 13:57:55 (+0700) | #4 | 278999
[Avatar]
ngtrongtri
Member

[Minus]    0    [Plus]
Joined: 27/03/2012 22:54:13
Messages: 114
Offline
[Profile] [PM]

quanta wrote:

http://tomcat.apache.org/connectors-doc/reference/workers.html wrote:

If you want to use session stickiness, you must set different jvmRoute attributes in the Engine element in Tomcat's server.xml. Furthermore the names of the workers which are managed by the balancer have to be equal to the jvmRoute of the Tomcat instance they connect with.
 
 


Dạ có anh, em có khai báo như sau
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">
với worker1 trên server 1 và worker2 trên server2.

Hệ thống load balancer bình thường, chỉ là phiên làm việc nó cứ tự nhảy qua nhảy lại giữa 2 server (test trên ứng dụng mobile).

Em thử truy cập domain/balancer-manager nhưng không hiện ra gì hết. Tài liệu của anh Ikut3 em vẫn chưa làm được, mong anh chỉ thêm ạ
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 15/11/2013 09:17:41 (+0700) | #5 | 279008
vd_
Member

[Minus]    0    [Plus]
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
[Profile] [PM]
1. Bạn dùng cookies view trên browser để xem cái JSESSIONID của bạn có đính kèm worker1 hoặc worker2 không?
2. Bạn có load module mod_proxy_ajp không?
3. Balancer-manager chỉ chạy được nếu apache bạn load module mod_status và mod_proxy, mod_proxy_balancer?
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 15/11/2013 09:49:03 (+0700) | #6 | 279009
[Avatar]
ngtrongtri
Member

[Minus]    0    [Plus]
Joined: 27/03/2012 22:54:13
Messages: 114
Offline
[Profile] [PM]

vd_ wrote:
1. Bạn dùng cookies view trên browser để xem cái JSESSIONID của bạn có đính kèm worker1 hoặc worker2 không?
2. Bạn có load module mod_proxy_ajp không?
3. Balancer-manager chỉ chạy được nếu apache bạn load module mod_status và mod_proxy, mod_proxy_balancer?
 


Thank bạn đã reply:
1. Mình chắc chắn trên web vẫn giúp session trên 1 server, vấn đề ở đây là trên App (app trên Iphone + Android) không biết nó có giữ session hay không mà nó chạy quanh quanh.

2. Mình không load module, trong /etc/apache2/mods-enabled/jk.load, mình chỉ load LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so

3. Mình không sử dụng mod_proxy_balancer. Mình đơn giản chỉ khai báo worker trong server.xml, xong config trong file workers.properties như sau

worker.list=worker1,worker2,loadbalancer
worker.worker1.port=8009
worker.worker1.host=192.168.2.53
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.worker2.port=8009
worker.worker2.host=192.168.2.50
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

#setup the load-balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1,worker2
worker.loadbalancer.sticky_session=False
#worker.loadbalancer.sticky_session_force=True


Chỉ đơn giản vậy thôi.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về vấn đề Load Balancer 2 web với Apache 18/11/2013 09:58:35 (+0700) | #7 | 279026
vd_
Member

[Minus]    0    [Plus]
Joined: 06/03/2010 03:05:09
Messages: 124
Offline
[Profile] [PM]
@ngtrongtri:

Bạn không sử dụng sticky session (worker.loadbalancer.sticky_session=False) vì thế nên request đến mod_jk sẽ được phân tải về các tomcat worker "ngẫu nhiên"

Bạn sử dụng sticky session thì request/response từ worker nào sẽ được gửi về lại worker đó -> không bị tình trạng mất session hoặc không đồng bộ.

Chỉ khi nào mở session mới thì mod_jk mới phân tài về worker "ngẫu nhiên".
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|