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 MySQL loadbalancing with HAproxy on CentOS  XML
  [Question]   MySQL loadbalancing with HAproxy on CentOS 25/03/2011 19:50:02 (+0700) | #1 | 233953
bumbumndb
Member

[Minus]    0    [Plus]
Joined: 23/04/2006 16:52:41
Messages: 10
Offline
[Profile] [PM]
Hi all ,

Mình đang tìmh hiểu về loadbalancing của HAproxy (1.4.13) cho MySQL , đã test và run với mô hình

HTTPserver(apache) > Load balancer (HAprxoy ) > Mysql-node1 ( master ) - Mysql-node2 (master )


giữa 2 Mysql node 1 và 2 là repliacation Master-Master .

########## haproxy.cfg################
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
stats socket /tmp/stats
defaults
log global
mode http
#option httplog
option dontlognull
retries 3
#redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen MySQL 0.0.0.0:3306
mode tcp
balance roundrobin
server mysql_node01 node01:3306 check port 9200 inter 5000 rise 3 fall 3
server mysql_node02 node02:3306 check port 9200 inter 5000 rise 3 fall 3
option httpchk
source 192.168.1.195
listen http 192.168.1.195:80
mode http
stats enable
stats uri /haproxy-stats
stats auth admin:admin
option httpclose
option httpchk

###################################
Note:
192.168.1.195 : Loadbalancer
node01 : Mysql master 01
node02 : Mysql master 02

port 9200 là port check mysql status từ loadbalancer đến từng node .


Vấn đề đặt ra ? Nếu triển khai mô hình trên thay vì Master-Master thì chuyển thành Master-Slave
Master : write only
Slave : read only

thì config của HAproxy sẽ như thế nào .

đã đọc guide nhưng chưa biết cách config sau nó tranfer write về Master và read về Slave , mong các bạn giúp đỡ tìm ra lối đi.
http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

Thanks all.
[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 26/03/2011 10:24:40 (+0700) | #2 | 233980
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Theo tớ biết thì HAProxy, trừ HTTP, cái khác nó load balance theo connection, ở layer 4 và không quan tâm đến nội dung.
Vì thế nó sẽ không phân biệt được lúc nào là read, lúc nào là write. => không thể load balance kiểu 1 bên read 1 bên write.
Nếu cậu muốn làm vậy, thì không cần HAproxy làm gì. Trong ứng dụng của cậu làm 2 DB Handle, 1 kết nối tới write chỉ chuyên write, 1 kết nối tới read only. Kỹ thuật kiểu này được áp dụng ở 1 số ứng dụng rồi, ví dụ MediaWiki nó có 1 kết nối DB phụ gọi là shadow db, chuyển dùng để read, giảm tải cho DB server chịu trách nhiệm write.
[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 27/03/2011 09:29:36 (+0700) | #3 | 234022
bumbumndb
Member

[Minus]    0    [Plus]
Joined: 23/04/2006 16:52:41
Messages: 10
Offline
[Profile] [PM]

myquartz wrote:
Theo tớ biết thì HAProxy, trừ HTTP, cái khác nó load balance theo connection, ở layer 4 và không quan tâm đến nội dung.
Vì thế nó sẽ không phân biệt được lúc nào là read, lúc nào là write. => không thể load balance kiểu 1 bên read 1 bên write.
Nếu cậu muốn làm vậy, thì không cần HAproxy làm gì. Trong ứng dụng của cậu làm 2 DB Handle, 1 kết nối tới write chỉ chuyên write, 1 kết nối tới read only. Kỹ thuật kiểu này được áp dụng ở 1 số ứng dụng rồi, ví dụ MediaWiki nó có 1 kết nối DB phụ gọi là shadow db, chuyển dùng để read, giảm tải cho DB server chịu trách nhiệm write. 


Thanks bạn , nhưng mình đã xem về hoạt động của HAproxy là ở layer 7 , xin trích dẩn trên trang chủ HAproxy.

Description

[color=brown]HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for web sites crawling under very high loads while needing persistence or Layer7 processing.


Và trong web này http://www.alexwilliams.ca/blog/2009/08/10/using-haproxy-for-mysql-failover-and-redundancy/'

Has an acceptable ratio of reads/writes (i.e: 100:1)
Can separate reads and writes at the application level


P/S : không biết có ai xài qua Mysql-proxy cho môi trường thậ chưa để config Loadbalancing Master-Slave

Thanks for reading .




[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 27/03/2011 13:18:33 (+0700) | #4 | 234046
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Tớ nghĩ bạn nên xem kỹ cách người ta triển khai. Không đọc mấy dòng tiếng Anh (mà đôi khi hiểu sai nghĩa cái cụm từ at the application level ấy) rồi mò mẫm đâm vào ngõ cụt.
Trong cái link bạn chỉ, tớ chỉ thấy là tác giả đã triển khai và tách việc read và write ra 2 IP khác nhau của front_end. Tức là ở phía ứng dụng của bạn ấy, phải có 2 kết nối khác nhau và câu tiếng Anh kia hiểu đúng là ứng dụng phải có thể tách read và write ở tại ứng dụng.
Xem cái config họ làm ở dưới đây, họ chú thích rất rõ:
Code:
# Load-balanced IPs for DB writes and reads
#
frontend db_write
	bind 172.16.0.50:3306
	default_backend cluster_db_write
 
frontend db_read
	bind 172.16.0.51:3306
	default_backend cluster_db_read


Chúc thành công.
[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 27/03/2011 15:05:54 (+0700) | #5 | 234059
bumbumndb
Member

[Minus]    0    [Plus]
Joined: 23/04/2006 16:52:41
Messages: 10
Offline
[Profile] [PM]

myquartz wrote:
Tớ nghĩ bạn nên xem kỹ cách người ta triển khai. Không đọc mấy dòng tiếng Anh (mà đôi khi hiểu sai nghĩa cái cụm từ at the application level ấy) rồi mò mẫm đâm vào ngõ cụt.
Trong cái link bạn chỉ, tớ chỉ thấy là tác giả đã triển khai và tách việc read và write ra 2 IP khác nhau của front_end. Tức là ở phía ứng dụng của bạn ấy, phải có 2 kết nối khác nhau và câu tiếng Anh kia hiểu đúng là ứng dụng phải có thể tách read và write ở tại ứng dụng.
Xem cái config họ làm ở dưới đây, họ chú thích rất rõ:
Code:
# Load-balanced IPs for DB writes and reads
#
frontend db_write
	bind 172.16.0.50:3306
	default_backend cluster_db_write
 
frontend db_read
	bind 172.16.0.51:3306
	default_backend cluster_db_read


Chúc thành công. 



ok , mình sẽ xem lại config của họ , và test cai Mediawiki xem thế nào . Thanks for your answer.
[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 27/03/2011 16:16:28 (+0700) | #6 | 234067
[Avatar]
Michael_Scotfield
Member

[Minus]    0    [Plus]
Joined: 12/10/2009 02:23:16
Messages: 43
Location: Fox River Prison
Offline
[Profile] [PM]
Cho mình hỏi thêm, nếu áp dụng mô hinh 2 DB handle 1 read 1 write, thì cách nào syn dữ liệu giữa 2 database tốt nhất ??
Breaking!!!!!
[Up] [Print Copy]
  [Question]   MySQL loadbalancing with HAproxy on CentOS 29/03/2011 16:22:15 (+0700) | #7 | 234218
bumbumndb
Member

[Minus]    0    [Plus]
Joined: 23/04/2006 16:52:41
Messages: 10
Offline
[Profile] [PM]

Michael_Scotfield wrote:
Cho mình hỏi thêm, nếu áp dụng mô hinh 2 DB handle 1 read 1 write, thì cách nào syn dữ liệu giữa 2 database tốt nhất ?? 


Bạn nên sử dụng Mysql replication Master-Slave để repl databases .
http://dev.mysql.com/doc/refman/5.5/en/replication.html
[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|