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ề load balancer giữa tomcat với MySQL server  XML
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 15/06/2012 13:38:37 (+0700) | #1 | 265216
[Avatar]
ngtrongtri
Member

[Minus]    0    [Plus]
Joined: 27/03/2012 22:54:13
Messages: 114
Offline
[Profile] [PM]
Vấn đề tạo master -master thì mình đã làm được. Tuy nhiên mình muốn thế này

---------------------------Tomcat (Liferay)
------------------------------|
------------------------------|
------------------------------|
-----------------Software Controller (ip1)
----------------------------|--|
---------------------------|----|
--------------------------|------|
-------------------------|--------|
------------mysql 1 (ip2)-------mysql2 (ip3)

Vậy cho mình hỏi phần mềm dùng để phân tải truy vấn với mysql là phần mềm nào được không ạ ?
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với myslq server 15/06/2012 15:52:53 (+0700) | #2 | 265224
centos
Member

[Minus]    0    [Plus]
Joined: 28/03/2008 17:13:12
Messages: 219
Offline
[Profile] [PM]
Chẳng hiểu bạn muốn gì
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với myslq server 16/06/2012 09:44:29 (+0700) | #3 | 265243
[Avatar]
ngtrongtri
Member

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

centos wrote:
Chẳng hiểu bạn muốn gì 

Nghĩa là thế này bạn ah. Mình có 1 trang web Liferay chạy trên Tomcat, cấu hình database của trang web như sau:
Code:
jdbc.default.url=jdbc:mysql://192.168.2.2:3306/liferay?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false

Như thế nghĩa là nó chỉ liên kết đến 1 địa chỉ mysql server mà thôi. Trong khi ở đây mình có 2 mysql server trên 2 địa chỉ khác nhau, mục đích là dùng để replication.
Vậy làm thế nào để liferay có thể biết được là khi mysql server 1 die thì có thể tự động chuyển sang dùng database trên mysql server 2 ?
Hoặc khi mysql server 1 quá tải thì liferay tự động điều hướng request sang mysql server 2 ?
Mình đã tham khảo trên mạng và thấy rằng có 1 phần mềm có thể thực hiện việc đó. Nó nằm giữa Tomcat và Mysql server, mình chỉ cần cấu hình database của Liferay trỏ về server cài phần mềm controller đó, và phần mềm controller đó nó sẽ điều hướng đến 1 trong 2 mysql server.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với myslq server 16/06/2012 15:53:29 (+0700) | #4 | 265258
[Avatar]
quanta
Moderator

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

ngtrongtri wrote:

Mình đã tham khảo trên mạng và thấy rằng có 1 phần mềm có thể thực hiện việc đó. Nó nằm giữa Tomcat và Mysql server, mình chỉ cần cấu hình database của Liferay trỏ về server cài phần mềm controller đó, và phần mềm controller đó nó sẽ điều hướng đến 1 trong 2 mysql server. 

Phần mềm đó tên là gì vậy? Bạn thử triển khai chưa, có gì vướng mắc không?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với myslq server 21/06/2012 08:04:52 (+0700) | #5 | 265351
[Avatar]
ngtrongtri
Member

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

quanta wrote:

Phần mềm đó tên là gì vậy? Bạn thử triển khai chưa, có gì vướng mắc không? 


Rất tiếc anh ah, em tham khảo nó chỉ nói chung đó là 1 "controller" thôi chứ không nói cụ thể là phần mềm nào.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với myslq server 21/06/2012 08:37:25 (+0700) | #6 | 265353
[Avatar]
quanta
Moderator

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

ngtrongtri wrote:

Rất tiếc anh ah, em tham khảo nó chỉ nói chung đó là 1 "controller" thôi chứ không nói cụ thể là phần mềm nào.
 

Cho mình xem link bạn đã tham khảo nhé.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 08:59:16 (+0700) | #7 | 265354
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Cài Ultra Money trên IP1.

http://www.ultramonkey.org/
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 09:21:07 (+0700) | #8 | 265355
[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!]
Hi ngtrongtri

Bạn có thể dùng openais và crm_mon để add resource IP cho 2 nodes kia. Nếu 1 trong 2 bị fail thì node còn lại sẽ sử dụng Resource IP để thay thế. Ngoài ra áp dụng DRBD cho việc đồng bộ dữ liệu trong case này cũng khả thi.
Tuy nhiên có 2 điều bạn cần chú ý là .
1.Nếu sử dụng chức năng có sẵn của MySQL để syncreplication thì có nhanh hơn, sử dụng DRBD
2. Trong trường hợp việc connect giữa 2 máy MySQL có vấn đề, 2 con không nhận được tín hiệu của nhau trong 1 khoảng thời gian nhất định. Bạn sẽ bị Split Brain. Đối với trường hợp này bạn phải giải quyết ra sao ? :-D
Cheers,
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 10:17:39 (+0700) | #9 | 265361
[Avatar]
quanta
Moderator

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

conmale wrote:
Cài Ultra Monkey trên IP1.

http://www.ultramonkey.org/ 

Em chưa dùng Ultra Monkey nhưng cho em hỏi: có lý do gì đặc biệt để anh recommend thằng này (có vẻ hơi "cổ") thay vì một load balancer thông dụng như HAProxy không ạ?

ngtrongtri wrote:

Vậy cho mình hỏi phần mềm dùng để phân tải truy vấn với mysql là phần mềm nào được không ạ ?
 

ngtrongtri wrote:

Vậy làm thế nào để liferay có thể biết được là khi mysql server 1 die thì có thể tự động chuyển sang dùng database trên mysql server 2 ?
Hoặc khi mysql server 1 quá tải thì liferay tự động điều hướng request sang mysql server 2 ?
 

Cần xác định lại xem nhu cầu của bạn là load balancing, failover hay cả hai? Mình lưu ý một chút: nếu muốn load balancing thì bạn cần 2 load balancer đặt giữa Tomcat và MySQL đấy nhé. Sau đó setup một virtual IP chuyển qua lại giữa 2 load balancers này. Mô hình trên của bạn bị SPOF (Single Point Of Failure) rồi, IP1 chết thì Tomcat cũng khỏi truy cập đến MySQL luôn.
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 10:26:53 (+0700) | #10 | 265362
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Chỉ vì nó work và cấu hình đơn giản mà thôi em. Không phải cái gì "cổ" là dở smilie.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 10:54:39 (+0700) | #11 | 265364
pntri85
Member

[Minus]    0    [Plus]
Joined: 25/08/2011 07:37:41
Messages: 83
Offline
[Profile] [PM]
Bồ thử dùng haproxy , nó làm việc good đó.
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 10:55:32 (+0700) | #12 | 265365
tmlinhkct
Member

[Minus]    0    [Plus]
Joined: 06/06/2012 02:55:48
Messages: 11
Offline
[Profile] [PM]

Ikut3 wrote:
Hi ngtrongtri
2. Trong trường hợp việc connect giữa 2 máy MySQL có vấn đề, 2 con không nhận được tín hiệu của nhau trong 1 khoảng thời gian nhất định. Bạn sẽ bị Split Brain. Đối với trường hợp này bạn phải giải quyết ra sao ? :-D
Cheers, 

cái này em thấy đối với active/active thì vào /etc/drbd.d/global_common.conf

net {
allow-two-primaries yes;
after-sb-0pri discard-zero-changes;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;
}
 


khi phát hiện ra split brain là tự động reboot trên 1 node đc coi là mất dữ liệu. sau reboot thì connect lại bt.

với acive/passive thì chĩ có mỗi manual còn auto thì hok bít.smilie

[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 21/06/2012 22:16:02 (+0700) | #13 | 265402
[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!]
@ tmlinhkct

He he , đúng như bạn nói. Chuyện active/active thì có thể giải quyết được bằng vài lệnh cấu hình trên. Tuy nhiên chuyển sang bài toán active active thì thuật toán load balancing , hay nói đúng hơn là kĩ thuật phân tải của application phải đảm bảo không bị nghẽn cổ chai.

Đối với việc split brain thì mình cũng có 2 giải pháp đang áp dụng. Bên mình 1 số hệ thống cũ vẫn đang dùng drbd cho failover.

1. Using a dedicated interconnect between cluster nodes (do not need the switch)

Đối với cách này , mình tạo 1 địa chỉ ảo cho card mạng sử dụng 1 lớp IP riêng, và cắm dây mạng trực tiếp giữa 2 con server, không thông qua switch . Như vậy hạn chế được rủi do corrupt connection giữa 2 server. Làm tính cluster hiểu nhầm đưa con slave lên master, trong khi bản chất thật sự con master vẫn đang hoạt động

2. Using the fence device such as iLO, smart PDU,...

Sử dụng 1 số thiết chuyên dụng thông qua console. Fence để ngắt kết nối giữa 2 con, từ đó truyền tín hiệu đến PDU để tự shutdown luôn 1 trong 2 node.

Theo mình giải pháp thứ 1 sẽ không mất nhiều tiền mà giải quyết được khoảng 70% chuyện này. Tất nhiên nếu có tiền thì giải pháp 2 cũng sẽ mang lại kết quả không tệ
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 22/06/2012 08:04:09 (+0700) | #14 | 265417
[Avatar]
ngtrongtri
Member

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

quanta wrote:

Cần xác định lại xem nhu cầu của bạn là load balancing, failover hay cả hai? Mình lưu ý một chút: nếu muốn load balancing thì bạn cần 2 load balancer đặt giữa Tomcat và MySQL đấy nhé. Sau đó setup một virtual IP chuyển qua lại giữa 2 load balancers này. Mô hình trên của bạn bị SPOF (Single Point Of Failure) rồi, IP1 chết thì Tomcat cũng khỏi truy cập đến MySQL luôn. 

Mục đích của mình là load balancer, mình tham khảo theo mô hình này:
http://www.liferay.com/community/wiki/-/wiki/Main/High+Availability+Guide#section-High+Availability+Guide-Database+Clustering
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 22/06/2012 10:23:21 (+0700) | #15 | 265428
tmlinhkct
Member

[Minus]    0    [Plus]
Joined: 06/06/2012 02:55:48
Messages: 11
Offline
[Profile] [PM]
@Ikut3
cái này chỉ là hạn chế tính trạng split brain.
còn khi xảy ra split brain rồi thì làm sao để khắc phục 1 cách tự động được nhỉ....
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 25/06/2012 21:43:30 (+0700) | #16 | 265587
centos
Member

[Minus]    0    [Plus]
Joined: 28/03/2008 17:13:12
Messages: 219
Offline
[Profile] [PM]

ngtrongtri wrote:

quanta wrote:

Cần xác định lại xem nhu cầu của bạn là load balancing, failover hay cả hai? Mình lưu ý một chút: nếu muốn load balancing thì bạn cần 2 load balancer đặt giữa Tomcat và MySQL đấy nhé. Sau đó setup một virtual IP chuyển qua lại giữa 2 load balancers này. Mô hình trên của bạn bị SPOF (Single Point Of Failure) rồi, IP1 chết thì Tomcat cũng khỏi truy cập đến MySQL luôn. 

Mục đích của mình là load balancer, mình tham khảo theo mô hình này:
http://www.liferay.com/community/wiki/-/wiki/Main/High+Availability+Guide#section-High+Availability+Guide-Database+Clustering 


Bồ cho mình hỏi một vấn đề nhé.

1. Tại sao bạn lại dùng một controler để điều khiển request của app xuống mysql? Vậy database trên 2 con mysql1 và mysql2 có syc với nhau không?

2. nếu dùng HAproxy hoặc là LVS hay là Ultramonkey vậy thì làm sao bạn live được data của trong mysql? chẳng lẽ phải sync liên tục ở mức độ 0 second?

2. Mysql có hỗ trợ mysql cluster? nó có thể là một giải pháp mà bạn đang cần?
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 25/06/2012 22:11:53 (+0700) | #17 | 265593
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
@centos: MySQL 1 và MySQL 2 đã được cấu hình master-master replication rồi. Ý bạn ấy là cần một virtual IP để cấu hình Liferay trỏ đến virtual IP này thôi, load balancer sẽ chịu trách nghiệm phân tải đến 2 con backends, OK?
Let's build on a great foundation!
[Up] [Print Copy]
  [Question]   Cho mình hỏi về load balancer giữa tomcat với MySQL server 26/06/2012 08:37:55 (+0700) | #18 | 265600
centos
Member

[Minus]    0    [Plus]
Joined: 28/03/2008 17:13:12
Messages: 219
Offline
[Profile] [PM]
@quanta: ok mình hiểu rồi, thanks quanta

@ngtrongtri: nếu bạn chỉ đơn thuần sử dụng cho việc loadbalancer mà không cần đến failover thì mình nghĩ bạn thử nghiên cứu LVS thử xem. Bởi vì LVS hoạt động ở layer4 của TCP, việc chuyển dự liệu xuống mysql sẽ nhanh và hiểu quả hơn nhiều so với dùng HA hay dùng UltraMokey.

P/S: mọi người cho thêm ý kiế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|