Từng buớc một để triển khai hệ thống Cluster

Từng buớc một để triển khai hệ thống Cluster


1. Mở đầu
2. Kĩ thuật cluster là gì ?
3. HAC và HPC
3.1. HAC (High Availability Computing )
3.1.1. HA Cluster
3.2. HPC (High Performance Computing)
4. Nâng cao tính khả dụng cho hệ thống 
5. Giới thiệu về Linux Virtual Server (LVS)
5.1. Load blance bằng LVS / NAT
5.1.1. Định nghĩa
5.1.2. Mô hình thiêt lập
5.1.3. Build/patch/config kernel
5.1.4. Cài đặt ipvsadmin
5.1.5. Cấu hình load blance (LV1)
5.1.5.1. Khai báo network
5.1.5.2. Khai báo realserver
5.1.5.3. Điều chỉnh kernel
5.2. Load blance bằng LVS / DR
5.2.1. Định nghĩa
5.2.2. Mô hình thiết lập
5.2.3. Build/patch/config kernel
5.2.4. Điều chỉnh network
5.2.4.3. Khai báo / điều chỉnh RealServer
5.3. Đánh giá và giải pháp tối ưu cho hệ thống
5.3.1. Đánh giá / Giải pháp (1)
5.3.2. Đánh giá / Giải pháp (2)
5.3.3. Đánh giá / Giải pháp (3)
6. Sử dụng keepalived để giám sát hệ thống (Real Server)
7. VRRP Load blance
8. MySQL và load blance
9. Samba và load blance
10. FPT và load blance
11. Mail và load blance
12. Tài liệu tham khảo




1. Mở đầu
Để nâng cao tính bảo mật và tính khả dụng của máy chủ, thật sự không phải là 1 chuyên đơn giản , không chỉ riêng về mặt kĩ thuật , trang bị hàng loạt thiết bị có tính năng load blancing cũng không rẻ . bênh cạnh đó, những tài liệu viết về load blancing bằng tiếng việt cũng không thể nói là phong phú .
đó là những lý do tôi quyết định viết bài này để chia sẽ với bạn đọc về kĩ thuật cấu trúc cluster.

2. Kĩ thuật cluster là gì ?
Hệ thống được xây dựng cần thiết nhất là không bị down, bảo mật tốt ,và chịu được 1 số lượng truy cập lớn vv…. để đáp ứng được nhu các cầu trến , từ đó kĩ thuật cluster đã ra đời , khái niệm của cluster được hình thành rất đa dạng . định nghĩa của cluster được chia ra thành 2 phần lớn, đó là HPC và HAC . HAC được viết tắt của High- Availability Computing và HPC được viết tắt của High Performance Computing . sau đây tôi xin lấy khái niệm HAC và HPC để giới thiệu .

3.1 HAC và HPC
Những phương thức tiêu biểu được chia nhỏ ra từ 2 khái niệm HAC và HPC .

3.1.1 HA Cluster

– Failover cluster
Share type
Data mirror type
Remote cluster

– Load-balancing cluster
Load balance Cluster
Parallel database cluster

3.2. HPC Cluster

HPC – High performance computing

Bài viết này sẽ trình bày cách cấu hình HA cluster và kèm theo những giải thích kĩ thuật của HA Cluster . bạn đọc muốn tìm hiểu về HPC Cluster xin tham khảo tài liệu từ các trang sau đây .

Beowulf : http://www.beowulf.org/
Score : http://www.pccluster.org/index.html.en
Open mosix : http://openmosix.sourceforge.net/

4. Cách nâng cao tính khả dụng cho hệ thống
Bài viết sẽ được hình thành dưới hình thức “Cách cấu hình cụ thể” “Các khái niệm của những kĩ thuật xung quanh cần thiết khi cấu hình” , do đó về phần giải thích cụ thể về khái niệm của những kĩ thuật sẽ không được phong phú . bạn đọc có thể tìm hiểu thêm từ các nguồn sau đây .

http://www.linux-ha.org/
http://www.linuxvirtualserver.org/

5. Linux Virtual Server
(được trích và chỉnh sửa từ bài “Linux virtual server” của anh Nguyễn Ngọc Khoa )

Là một phần mềm load balancing chạy trên *nix, cho phép xây dựng 1 server rất mạnh bao gồm tập hợp nhiều server thực có cấu hình giống nhau. Cấu trúc của Linux Virtual Server (thường gọi tắt là LVS) thông suốt đối với người dùng nên phía người dùng chỉ nhận biết thấy LVS là 1 server mạnh chứ không biết được cấu trúc thực bên trong. LVS cho phép load balancing theo 3 cách NAT (gọi là VS/NAT), Direct (gọi là VS/DR) và Tunneling (VS/TUN) .

VS/NAT





Phương pháp VS/DR và VS/TUN có chung cấu trúc như hình vẽ dưới, chỉ khác nhau ở cách kết nối giữa máy load balancing và real server. Hai cách này có nhược điểm là tốn địa chỉ IP, máy load balancing cần 2 IP, mỗi real server cũng cần 1 địa chỉ IP. Tuy nhiên ưu điểm là khả năng rất mạnh (có thể kết nối hàng trăm real server), máy load balancing không yêu cầu cao vì chỉ làm duy nhất nhiệm vụ load balancing. Các máy real server sẽ trả lời trực tiếp.

VS/DR – VS/TUN




LVS cho phép load balancing với rất nhiều dịch vụ , số lượng server cho mỗi dịch vụ cũng có thể khác nhau. Ngoài phần mềm chính LVS còn có một số phần mềm hỗ trợ như ipvsadmin để thiết lập, khai báo thêm, bớt các real server, keepalived để tự động kiểm tra các real server, xoá bỏ các khai báo của 1 real server ra khỏi LVS khi real server .

5.1. Load blance bằng LVS / NAT
Nâng cao tính khả dụng và giảm down time của hệ thống đến mức tối ưu, để thực hiện được những điều đó , LVS/NAT cũng là 1 giải pháp . sau đây là phần giới thiệu về cách thức triển khai bằng LVS/NAT. như mô hình dưới bạn có thể thấy khi từ client (bên hình cho là từ internet) request đến máy chủ , các cú request này đều qua LV1 và sau đó sẽ đến RealServer1.
Sau khi phía realserver1 nhận và xử lý xong sẽ reply cho LV1 , và LV1 sẽ thay thế realserver1 trả lời cho client .

5.1.1. Định nghĩa

LV1 : 172.16.0.1 ( Local IP : 10.0.0.1 )
RealServer1 : 10.0.0.101
RealServer2 : 10.0.0.102


Những IP thuộc 172.16.0.1/24 là các IP dùng để cung cấp dịch vụ .
Những IP thuộc 10.0.0.0/24 là các IP cục bộ của các realserver.


5.1.2. Mô hình




5.1.3. Thiết bị
Để hình thành được mô hình trên, bạn cần chuẩn bị 3 server có cấu hình tương đối gần nhau, tuy nhiên, dùng vmware hoặc các chương trình virtual pc vẫn có thể thực hiện được .


5.1.3. Build/patch/config kernel

Các phiên bản 2.6.x đã có hổ trợ LVS , do đó máy chủ đã được cài đặt các phiên bản 2.6.x sẽ không cần thiết thực thi bước này .
dùng phiên bản kernel 2.4.x phải lưu ý 1 điểm là khi biên dịch kernel phải lựa chọn phiên bản của ipvsadm và kernel thích họp với nhau vì chương trình quản lý ipvsadm rất có thể xãy ra xung đột với phiên bản kernel không thích họp .


Tham khảo thêm cách build/patch kernel 2.4.x tại link sau :
http://www.austintek.com/LVS/LVS-HOWTO/mini-HOWTO/LVS-mini-HOWTO.html#2.4.x_kernels


5.1.4. Cài đặt ipvsadmin
Tải chương trình ipvsadm
http://www.linux-vs.org/software/ipvs.html

Các lệnh cài đặt chương trình ipvsadm


$ wget http://www.linux-vs.org/software/kernel-2.6/ipvsadm-1.24.tar.gz



$ tar zxf ipvsadm-1.24.tar.gz



$ cd ipvsadm-1.24



$ make



# make install 




5.1.5. Cấu hình load blance (LV1)

Cho phép IP fowarding

# echo “1” > /proc/sys/net/ipv4/ip_forward 



Tạo virtual service cho LV server (qua phương thức round robin )



# ipvsadm -A -t 172.16.0.1:http -s rr 



Đối với dịch dịch vụ virtual trên , dùng các lệnh sau để cấu hình cho realserver




# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.101:http -m



# ipvsadm -a -t 172.16.0.1:http -r 10.0.0.102:http -m



 



Có thể kiểm tra kết quả bằng lệnh


ipvsadm -L  



Chỉnh default gateway tại máy LV1


route add -net default gw 10.0.0.1 



đến đây bạn đã cấu hình xong , để kiểm chứng những kết quả trên , bạn có thể request trực tiếp từ phía client đến địa chỉ http://172.16.0.1/ để xem kết quả các máy chủ có hoạt động đúng vai trò của chúng hay không .

———————————————————–


5.2. Load blance bằng LVS / DR
Phương thức xử lý cũng như cấu trúc của mô hình LVS/DR rất khác biệt so với mô hình LVS/NAT . như hình dưới ta có thể thấy được khi client yêu cầu đến máy chủ , LV1 sẽ trực không trực tiếp xử lý , thay vì đó sẽ chuyển nguyên cú request của client sang RealServer1 (RealServer2) xử lý , sau khi được realserver1 (realserver2) xử lý xong sẽ không chuyển về LV1 như mô hình LVS/NAT, thay vì đó realserver của mô hình LVS/DR sẽ tự động trả lời đến client mà không qua LV1.
và một sự khác biệt lớn giữa LVS/NAT với LVS/DR là LVS/DR nằm chung network với các Realserver .

phương thức xử lý theo thứ tự như sau

1) LVS nhận request của client
2) Chuyển request từ client sang RealServer, trong quá trình này , LV1 sẽ chỉ mang vai trò redirect .
3) RealServer nhận được cú request của LV1 sẽ trực tiếp xử lý và trả lời đến client

Từ các trình tự trên, khi ta có 2 Realserver , phía LV1 sẽ nhẹ hơn đáng kể ,bên cạnh đó các RealServer (1 , 2 ) sẽ phân tán các request từ phía client, từ đây chúng ta đã thực hiện được mô hình load blance một cách rất hiệu quả .


5.2.1. Định nghĩa
LV1 – 172.16.0.100 (eth0)
Virtual IP – 172.16.0.1(eth0:0)
RealServer1 – 172.16.0.101
RealServer2 – 172.16.0.102

5.2.2. Mô hình thiết lập



5.2.3. Build/patch/config kernel
Cũng như LVS/NAT , trước tiên ta phải điều chỉnh các thông số của kernel để có thể sử dụng chức năng IP forwarding .


echo “1” > /proc/sys/net/ipv4/ip_forward



 



hoặc có thể điều chỉnh trong /etc/sysctl.conf .

5.2.4. Điều chỉnh network

Ngoài việc điều chỉnh interface thực của LV1 (eth0) ta cũng phải thêm interface ảo cho LV1, vì mô hình LVS/DR yêu cầu ta phải tạo thêm virtual IP trên LV1, cách làm như sau .


# ifconfig eth0:0 172.16.0.1 netmask 255.255.255.0 



Điều chỉnh khi bạn khởi động máy có thể ghi vào như sau .

File : /etc/sysconfig/network-scripts/ifcfg-eth0:0


DEVICE=eth0:0



IPADDR=172.16.0.1



NETMASK=255.255.255.0



ONBOOT=yes 




5.2.4.3. Khai báo / điều chỉnh RealServer

Khai báo dịch vụ ảo cho LV1

LV1# ipvsadm -A -t 172.16.0.1:http -s rr  



bước kế tiếp là khai báo realserver



LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.101:http -m



LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.102:http -m



LV1# ipvsadm -a -t 172.16.0.1:http -r 172.16.0.103:http -m  



Kiểm tra


LV1# ipvsadm -L 



Điều chỉnh RealServer để có thể nhận được các gói từ LV1 .


RealServer1 # iptables –t nat –A PREROUTING –d 172.16.0.1 –p tcp –dport 80 –j REDIRECT –to-ports 80 



RealServer2 # iptables –t nat –A PREROUTING –d 172.16.0.1 –p tcp –dport 80 –j REDIRECT –to-ports 80 




Đến đây bạn đã cấu hình xong LVS/DR , để kiểm chứng những kết quả trên , bạn có thể request trực tiếp từ phía client đến địa chỉ http://172.16.0.1/ để xem kết quả các máy chủ có hoạt động đúng vai trò của chúng hay không .

Bài viết này nhằm đưa ra giải pháp cho các nhu cầu cấu trúc hệ thống có tính khả dụng cao . Tại đây sẽ lấy ví dụ mô hình như sau .

Tính năng của hệ thống này chỉ có việc khi khách hàng (User PC) kết nối đến yêu cầu WEB cung cấp dữ liệu , WEB server có nhiệm vụ lấy các dữ liệu được lưu trong LDAP server và hiển thị cho khách hằng . Hoặc có thể Update dữ liệu của khách hàng . Như vậy trong mô hình này , sự lien kết giữa WEB Server, LDAP server là việc tất yếu , và đồng thời giữa các LDAP server với nhau cũng có giải pháp liên kết nào đó với nhau.

Giám sát hệ thống
Các bài viết về WEB server thì đã có nhiều người đề cập đến , nhưng đôi khi mô hình chỉ gói trọn vào 2 hoặc 3 server với nhau là đa số . Tại bài viết này, ta sẽ tham khảo cách cấu hình cho chương trình giám sát keepalived . Không chỉ riêng 2 hoặc 3 máy chủ , nếu bạn có nhu cầu , bạn có thể áp dụng vào hơn vài chục máy chủ để cung cấp các dịch vụ như apache , mysql , ldap .Tại ví dụ bên dưới , ta sẽ cấu hình cho keepalived (VRRP)giám sát các máy chủ được thiết lập dịch vụ LDAP . Tuy nhiên , như đã đề cập bên trên, bạn chỉ cần thay đổi vài dòng thôi cũng sẽ áp dụng cho cách dịch vụ khác.
Từ mô hình trong ví dụ trên , ta sẽ thiết lập tính năng giám sát khi LDAP1- MASTE chết , trong vòng 1 giây sẽ tự động chuyển LDAP2-SLAVE thành LDAP2 – MASTER . Thêm vào đó, sẽ gửi email đến conmale@hvaonline.net .

Cấu hình keepalived .

1. Cài đặt OpenLdap, Apache (Tham khảo các bài khác trong diễn đàn HVA)
2. Install & Cấu hình keepalived

# cd /usr/local/src
# tar zxf keepalived-1.1.15.tar.gz
# cd keepalived-1.1.15
# ./configure
# make
# make install
# cd /etc/init.d
# cp /usr/local/src/keepalived-1.1.15/keepalived/etc/init.d/keepalived.rh.init keepalived
 

Sau khi cài đặt thành công keepalived , ta xem những thông số ? cấu hình của chúng có những chức năng gì và hoạt động như thế nào .


/etc/keepalived/keepalived.conf

global_defs {
notification_email {
conmale@hvaonline.net
}
notification_email_from keepalived@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id MY_LDAP
}
 

Trước tiên là global_dfs . Tại đây ta có thể ấn định những thông tin có đặt tính là “global” . Những thông số này có đặc điểm như sau . Ví dụ trong notification_email , ta có thể chỉ định địa chỉ email của người chịu trách nhiệm quản lý . và quan trọng là router_id , theo giải thích trên trang web chính thức của chương trình , thì thông số này là định nghĩa cluster ID . Cũng có thể hiểu là đạt đại cho vui!

——————–

vrrp_instance LDAP {
state BACKUP
interface eth2
garp_master_delay 5
virtual_router_id 200
priority 100
advert_int 1
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.223.33/25 dev eth2
}
notify_master “/etc/keepalived/ldap.sh active”
notify_backup “/etc/keepalived/ldap.sh backup”
notify_fault “/etc/keepalived/ldap.sh backup”
notify “/etc/keepalived/ldap.sh status”
}
 

Tiếp theo là ấn định VRRP instance . Block này có ý nghĩa là dùng cấu trúc cho những router ảo trong VRRP. Nếu khó hiểu thì bạn hiểu là cấu hình chổ này là quan trọng nhất trong chương trình này và tìm hiểu các option bên dưới . Các option mang đặc tính như sau :

state : Cho server chạy bằng MASTER hay SLAVE . MASTER có nghĩa là máy cung cấp dịch vụ , còn SLAVE là máy backup .

interface : Ấn định trên của NIC . Thông thường bạn dùng linux với mục đích server , sẽ có 2 NIC . trong ví dụ này tôi dùng eth2 .

garp_master_delay : Khi server được nâng cấp lên trạng thái MASTER, sẽ có packet ARP báo delay .

priority : Thông thương MASTER sẽ có số cao hơn SLAVE .Có thể dung từ 0 ~ 255 . Và những máy chủ có thong số priority cao sẽ tự động thành chế độ MASTER .

nopreempt : Không dùng chế độ Preemt của VRRP . Khi ta tắt chế độ này, mấy chủ nào mang số priority thấp được nâng thành MASTER cũng không trở về trạng thái SLAVE . Cũng có thể hiểu là , không bị những máy có priority cao dành chế độ MASTER . Phần này khá quan trọng nên xin được thêm vài dòng ,

ví dụ : Khi hệ thống được cấu hình và đưa vào hoạt động 1 thời gian , trong khi đó LDAP1 default là MASTER, và LDAP2 dùng với SLAVE . Nhưng khi LDAP1 bị sự cố và bổng nhiên bị tắt , keepalived sẽ chạy các script như ta đã cấu hình , trong môi trường của bài viết , là khi LDAP1 bị teo thì LDAP2 sẽ chạy file cấu hình (slapd.conf) mang chức nang MASTER để trở LDAP2 trở thành MASTER. Nhưng khi thực hiện việc này sẽ có sự xung đột . Các server SLAVE thông thường sẽ mang số priority thấp hơn MASTER , vì vậy khi SLAVE được keepalived nâng cấp lên thành MASTER khi LDAP1 là MASTER bị chết , thì vẫn có khả năng tụt xuống lại vì priority thấp . Do đó ta cần phải dùng nopreempt : .

advert_int : Theo dõi sống chết giữa các máy chủ có khoảng cách bào nhiêu giây đều có thể ghi tại option này . Ví dụ tại bài viết này là 1 giây .

virtual_ipaddress : IP của nhóm server MASTER và SLAVE . Tất cả các máy LDAP tại bài viết này đều có 1 IP là 192.168.223.33 . Giải thích them một chút nữa thì network này mang subnet là 25 .

notify_master : Khi keepalived khẳng định LDAP1 đã chết , sẽ tự động chuyển LDAP2 thành master . Trong khi đó , tại option này ta có thể định nghĩa script khởi động cho LDAP2 .

notify_backup : Khi keepalived khẳng định LDAP1 là MASTER , sẽ tự động chuyển LDAP2 thành SLAVE . Trong khi đó , tại option này ta có thể định nghĩa script khởi sang trạng thái slave cho LDAP2 .

Cuối cùng là tạo script

/etc/keepalived/ldap.sh

#!/bin/bash
// Set path đến openldap directory
LDAP_CONFDIR=”/usr/local/openldap/etc/openldap”

case “$1” in
active)
logger “>>active”
// Chạy đến directory của LDAP
cd $LDAP_CONFDIR
// Đổi file config slave thành master
ln -sf slapd.conf.master slapd.conf
logger “result $?”
// Ngừng dịch vụ SLAVE
service slapd stop
// Chạy dịch vụ MASTER
service slapd start
logger “<

Đọc đến đây chắc bạn sẽ thắc mắc việc làm sao cấu hình keepalive trên LDAP1 và LDAP2 . Có cần thay đổi những trong số trong file config hay không ?
Tại ví dụ này , trong file config của keepalived bạn có thể copy & paster nguyên nội dung sang các server bạn cần làm backup . (LDAP1 và LDAP2) File cấu hình trong ví dụ có tính năng giảm tỷ lệ down cho hệ thống bạn . Vì vậy khi dùng 2 máy chủ trở lên , bạn chỉ cần cấu hình keepalived giống nhau, thì bạn sẽ có một hệ thống 1 máy LDAP cung cấp dịch vụ , nhưng khi LDAP đó chết , sẽ có nhiều máy backup chạy thay thế .

Các điểm cần chú ý khi cấu hình dịch vụ
1. Ví dụ mysql , bạn phải thêm chức năng đồng bộ giữ liệu .
2. Ví dụ apache , bạn chỉ cần cấu hình 2 server apache giống nhau , chắc nó sẽ chạy (vì tui chưa làm)
3. Ví dụ LDAP , cũng giống như mysql . Keepalived chỉ cung cấp dịch vụ giám sát chết/ sống và start và restart các script ta đã ấn định . Do đó , để chạy được dịch vụ đúng nghĩa của LDAP , bạn cần phải cấu hình LDAP riêng để giữa các máy chủ LDAP đồng bộ dữ liệu .
4. Để chạy được VRRP, bạn phải điều chỉnh firewall .

Tham khảo thêm về các thuật ngữ :

VRRP:http://www.quantrimang.com.vn/hethong/linux/35521_Su_dung_VRRP_tren_Linux_nang_cao_kha_nang_san_sang_cho_mang.aspx

keepalived : http://www.keepalived.org/pdf/UserGuide.pdf

Ứng dụng Heartbeat và DRDB cho Mysql (Phần 1)

Là một giải pháp khá phổ biến hiện nay là dùng DRBD để cấu trúc hệ thống HA Cluster cho Mysql . Có thể hiểu , DRBD là chương trình cho phép ta xây dựng RAID1 thông qua mạng . Nói dể hiểu hơn 1 chút thì DRBD là chương trình dùng mạng để đồng bộ dữ liệu partition của HD . Vì vậy , thật ra không cần phải là Mysql, khi xây dựng xong chương trình này, ta sẽ có thể ứng dụng cho apache , mail , ftp , ldap vv… . Với nhu cầu của thành viên HVA nênbài viết này đặt trọng tâm ứng dụng DRBD cho Mysql .

Cấu hình DRBD yêu cầu ta tạo các phần vùng meta data để quản lý phần vùng và tạo phần vùng chứa dữ liệu .

Cài đặt

# yum –y drbd kmod-drbd  

Tạo 2 tất cả là 2 phần vùng tại HD /dev/sdb như sau ,

# fdisk /dev/sdb
/dev/sdb1 – Meta data (128M hoặc 256M)
/dev/sdb2 – Data  

Chú ý : Để tránh tình trạng lãng phí tài nguyên giải quyết domain , nên cấu hình/etc/hosts tương ứng cho mạng LAN của bạn .

Sau khi fdisk xong , sẽ có kết quả như sau

コマンド (m でヘルプ): p

Disk /dev/sdb: 73.4 GB, 73407820800 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/sdb1 1 65 522081 83 Linux
/dev/sdb2 66 8924 71159917+ 83 Linux 

Copy file /usr/share/doc/drbd/drbd.conf vào /etc/ như sau

/etc/drbd.conf
resource d0 {
protocol C;
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 500M;
al-extents 257;
}
on hvaonline.net {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.10.10:7788;
meta-disk /dev/sdb1[0];
}
on hvaonline.net {
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.10.11:7788;
meta-disk /dev/sdb1[0];

}

Ý nghĩa của các thông số có ý nghĩa như sau ,

Resource : Đặt tên cho resource .

Protocol : Hãy chọn option này là C . Vì trong readme nó ghi vậy .

C: write IO is reported as completed, if we know it has
reached _both_ local and remote DISK.
* for critical transactional data.
B: write IO is reported as completed, if it has reached
local DISK and remote buffer cache.
* for most cases.
A: write IO is reported as completed, if it has reached
local DISK and local tcp send buffer. (see also sndbuf-size)
* for high latency networks
**********
# uhm, benchmarks have shown that C is actually better than B.
# this note shall disappear, when we are convinced that B is
# the right choice “for most cases”.
# Until then, always use C unless you have a reason not to.
# –lge
#********** 

on-io-error : Xử lý khi bị I/O error

pass_on : Report the io-error to the upper layers. (chưa hiểu lắm )

call-local-io-error : Chạy script mang tên call-local-io-error

detach : The node drops its backing storage device, and continues in disk less mode. (Chưa hiểu lắm)

Đọc module của drbd

lsmod |grep drbd
modprobe drbd minor_count=1 

Kết quả khi nhúng drbd vào .

# modinfo drbd
filename: /lib/modules/2.6.9-42.ELsmp/kernel/drivers/block/drbd.ko
author: Philipp Reisner , Lars Ellenberg
description: drbd – Distributed Replicated Block Device v8.0.7
license: GPL
parm: minor_count:Maximum number of drbd devices (1-255)
alias: block-major-147-*
parm: allow_oossmilieONT USE!
license: GPL
author: Evgeniy Polyakov
description: Generic userspace <-> kernelspace connector.
parm: cn_idx:Connector’s main device idx.
parm: cn_val:Connector’s main device val.
vermagic: 2.6.9-42.ELsmp SMP 686 REGPARM 4KSTACKS gcc-3.4

 

Tạo metadata.(chạy trên cả 2 máy chủ . )

# drbdadm create-md d0 

Khởi động và kiểm tra như sau . (chạy trên cả 2 máy chủ )

# drbdadm up all
# cat /proc/drbd
# service drbd start
 

Vào host 192.168.10.10, dùng lệnh sau để thành primary

#drbdadm — –overwrite-data-of-peer primary all 

-> Phần 2 : Tạo filesystem cho 2 node

Tại bước này , sẽ tạo file system và mount nó theo các trình tự sau

Tại Primary : 192.168.10.10

# mke2fs -j /dev/drbd0 

Mount /dev/drdb0 đã tạo

#mkdir /mnt/drbd
#mount /dev/drbd0 /mnt/drbd/ 

Xong bước này xem như đã có sẵn những thứ cần thiết để đồng bộ dữ liệu .

Thử failover bằng tay như sau

tại Primary node : 192.168.10.10

# umount /mnt/drbd/
# drbdsetup /dev/drbd0 secondary 

Tại Secondary node : 192.168.10.11

# drbdsetup /dev/drbd0 primary
# mount /dev/drbd0 /mnt/drbd/ 

Cuối cùng , tạo một file nào đó và xem phía primary:192.168.10.10 có tồn tại nó hay không .


-> Phần 3 : Setup Mysql để đồng bộ dữ liệu .

1. Cài đặt mysql -> Tìm trên HVA
2. cấu hình mysql

Phần này là dễ nhất , bạn chỉ cần ấn định tại basedir vào dưới directory /mnt/drdb là xong .

Ví dụ file cấu hình .

# Example MySQL config file for medium systems.

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir=/mnt/drbd/data
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

# Replication Master Server (default)
# binary logging is required for replication
log-bin

# required unique id between 1 and 2^32 – 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Nguồn : HVAOnline

About Tony Nguyễn
Tôi tên Tony tự Tèo trú tại thôn Tám, Trảng Thanh tỉnh Thừa Thiên. Thưở thiếu thời trí tuệ tôi thường thường, tuy thế tính tình thật thà thẳng thắng, thích thi thơ ...

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: