Upload
chien-nguyen
View
216
Download
1
Embed Size (px)
DESCRIPTION
high available
Citation preview
TÌM HIỂU VÀ CẤU HÌNH PHÂN PHỐI DỮ LIỆU VỚI DRBDLiNux December 11, 2012 Leave a comment
Đề tài :
TÌM HIỂU VÀ CẤU HÌNH PHÂN PHỐI DỮ LIỆU VỚI DRBD
I.Tổng quan khái niệm
DRBD (viết tắt của Distributed Replicated Block Device) sao chép dữ liệu trên các
thiết bị chính cho các thiết bị phụ trong một cách mà đảm bảo rằng cả hai bản sao của
dữ liệu vẫn còn giống hệt nhau. Hãy suy nghĩ về nó như là nối mạng RAID 1. Ánh xạ dữ
liệu trong thời gian thực, do đó, nhân rộng của nó xảy ra liên tục. Các ứng dụng không
cần phải biết rằng trong thực tế dữ liệu của họ được lưu trữ trên đĩa khác nhau.
High Availability có nghĩa là “Độ sẵn sàng cao“, những máy chủ, thiết bị loại này
luôn luôn sẵn sàng phục vụ, người sử dụng không cảm thấy nó bị trục trặc, hỏng hóc
gây gián đoạn. Để đảm bảo được điều đó, tối thiểu có một cặp máy, thiết bị chạy song
song, liên tục liên lạc với nhau, cái chính hỏng, cái phụ sẽ lập tức biết và tự động thay
thế. Một ví dụ đơn giản nhất là một số máy chủ có hai bộ nguồn, tự động thay thế
nóng cho nhau.
Phần mềm DRBD (Distributed Replicated Block Device) đảm nhận việc
đồng bộ này. Khi được cài đặt trên hai hay nhiều máy chủ trong một nhóm (cluster),
drbd thực hiện việc liên tục đồng bộ giữa các partition ổ cứng được chỉ định thông qua
mạng. Một lệnh ghi ổ cứng trên máy chủ chính chỉ được coi là hoàn thành khi lệnh ghi
đó cũng được thực hiện xong ở các máy chủ khác trong cùng cluster. Nói cách khác,
drbd thực hiện việc tạo các nhóm ổ cứng RAID-1 qua mạng, còn gọi là net-raid.
Heartbeat đảm nhận các công việc còn lại (trước năm 2007). Heartbeat chạy
thường trú (daemon) trên các máy trong một cluster, thông tin liên tục cho máy phụ
biết về trạng thái dịch vụ cần high availability trên máy chính (tôi còn sống và đang
làm việc!). Một khi dịch vụ đó “chết”, heartbeat lập tức khởi động các dịch vụ thay thế
trên máy phụ để chuyển máy đó thành máy chính. Việc thay thế này thực hiện được vì
partition ổ cứng trên hai máy đã được drbd đồng bộ như nói ở trên.
Khi một cặp máy chủ Mail server, File server, Web server sẵn sàng cao chạy, nếu máy
chính bị shutdown, hỏng card mạng, phần mềm mail server, … bị treo, v.v… máy chính
sẽ bị loại ra ngoài hệ thống, máy phụ lập tức khởi động dịch vụ thay thế và được
chuyển thành máy chính. Quá trình đó hoàn toàn tự động và trong suốt với người
dùng. Người dùng chỉ cảm thấy bị gián đoạn lúc máy phụ đang khởi động dịch vụ.
DRBD và Heartbeat đều là phần mềm nguồn mở chạy trên các máy chủ Linux (trong
các kho phần mềm của RedHat, SUSE, Ubuntu, CentOS, … đều có sẵn hai phần mềm
này)
DRBD cũng là một hệ thống lưu trữ distributed cho các nền tảng GNU/Linux cho phép
ngăn chặn các thiết bị mirro trên mạng. Điều này rất hữu ích cho thiết lập có độ sẵn
sàng cao (giống như HA NFSserver) bởi nếu một nút bị lỗi, toàn bộ dữ liệu vẫn có
sẵn từ các nút khác.
Hinh ảnh minh họa
DRBD là một mô-đun hạt nhân Linux và nằm giữa I / O scheduler vào cuối thấp hơn và
hệ thống tập tin ở cuối phía trên. Để giao tiếp với DRBD, người dùng sử dụng lệnh cấp
cao drbdadm . Đối với sự linh hoạt tối đa DRBD đi kèm với công cụ ở mức độ
thấp drbdsetup .xem Hình 1.1, “Vị trí của DRBD trong Linux”.
Hình 1.1 : Vị trí của
DRDB trong Linux
DRBD cho phép bạn sử dụng bất kỳ thiết bị khối hỗ trợ bởi Linux, thường là:
phân vùng hoặc ổ đĩa cứng hoàn toàn. (partition or complete hard disk)
phần mềm RAID. (software RAID)
Logical Volume Manager (LVM) . (Logical Volume Manager )
Khối lượng Hệ thống quản lý doanh nghiệp (EVMS). (Enterprise Volume
Management System).
Theo mặc định, DRBD sử dụng các cổng TCP 7788 và cao hơn cho việc giao tiếp giữa
các nút DRBD.Hãy chắc chắn rằng tường lửa của bạn không ngăn chặn thông tin liên
lạc trên cổng này.
Bạn phải thiết lập các thiết bị DRBD trước khi tạo hệ thống tập tin trên chúng. Tất cả
mọi thứ liên quan đến dữ liệu người dùng nên được thực hiện chỉ qua /dev/drbd_ R
thiết bị và không trên thiết bị thô, như DRBD sử dụng 128 MB mới nhất của thiết bị thô
cho các siêu dữ liệu. Hãy chắc chắn rằng để tạo ra các hệ thống tập tin chỉ trên /
dev / drbd <n> thiết bị và không phải trên các thiết bị thô.
Ví dụ, nếu thiết bị là 1024 MB trong kích thước, thiết bị DRBD có chỉ có 896 MB có sẵn
cho dữ liệu, với 128 MB ẩn và dành riêng cho siêu dữ liệu. Bất kỳ cố gắng để truy cập
vào không gian giữa 896 MB và 1024 MB không thành công vì nó không có sẵn cho dữ
liệu của người sử dụng.
II. CÀI ĐẶT DỊCH VỤ DRBD
1.Cài đặt gói DRBD
1.1 : Các file yêu cầu trong gói cài đặt DRBD
Cách cài đặt : có thể cài một gói Drbd hoặc từng phần nhỏ trong gói .rpm.
Filename Explanation
drbd Convenience package, split into other
drbd-bash-completion Programmable bash completion support for drbdadm
drbd-heartbeat Heartbeat resource agent for DRBD (only needed for Heartbeat)
drbd-kmp-default Kernel module for DRBD (cần thiết)
drbd-kmp-xen Module hạt nhân cho DRBD
drbd-udevudev integration scripts for DRBD, managing symlinks to DRBD devices in/dev/drbd/by-res and /dev/drbd/by-disk
drbd-utils Management utilities for DRBD (needed)
drbd-pacemaker Pacemaker resource agent for DRBD
drbd-xen Xen block device quản lý tập lệnh cho DRBD
yast2-drbd YaST DRBD Configuration (recommended)
Các gói ở trên đây mình dùng phiên bản DRDB 8.3 nên các gói còn lại nếu download
thì cũng phải cùng phiên bản với DRDB 8.3.
Để đơn giản hóa công việc với drbdadm , sử dụng sự hỗ trợ hoàn thành Bash trong
các gói RPM drbd-bash-completion. Nếu bạn muốn kích hoạt nó trong phiên shell
hiện tại của bạn, tạo một file/root/.bashrc và chèn lệnh sau với quyền của Root :
source / etc / bash_completion.d / drbdadm.sh
2. Cấu hình DRBD
Trước khi cấu hình DRDB các bản phải sử dụng tên máy chủ A và B, tên tài nguyên là
R0(R0 là một phân vùng unpatition trong ở cứng máy tính và trên 2 máy có cùng dung
lượng). Thiết lập máy chủ A làm node chính.
Trước khi bạn bắt đầu cấu hình DRBD, chắc chắn rằng các thiết bị khối trong các nút
Linux của bạn đã sẵn sàng và phân vùng (nếu cần). Các thủ tục sau đây giả sử bạn có
hai nút, A và B và nó sử dụng các cổng TCP 7788 . Hãy chắc chắn rằng cổng này được
mở trong tường lửa hoặc bạn đang disable tường lửa của máy.
2.1: đăng nhập với người dùng Root
2.2: thay đổi các file cấu hình của DRBD :
2.2.1 mở tập tin /etc/drdb.conf và chèn vào những dòng sau nếu trong tập tin không có
sẵn :
Include “drbd.d/global_common.conf”;Include “drbd.d/*.res”;
Bắt đầu với DRBD 8.3 tập tin cấu hình được chia thành các tập tin riêng biệt ,nằm
trong thư mục :/etc/drdb.d/ .
2.2.2: chỉnh sửa tập tin :/etc/drbd.d/global_common.conf
– Mở tập tin /etc/drbd.d/global_common.conf .
– Đến dòng Startup và chèn vào những câu sau :
startup {# wfc-timeout degr-wfc-timeout outdated-wfc-timeout# wait-after-sb;wfc-timeout 1;degr-wfc-timeout 1;}
2.2.3:Tạo tập tin / etc/drbd.d/r0.res , thay đổi dòng theo cách cấu hình của bạn, và lưu
nó:
resource r0 { (1)device /dev/drbd_r0 minor 0; (2)disk /dev/sda1; (3)meta-disk internal; (4)
on thunhat { (5)
address 192.168.1.10:7788; (6)
}
on thuhai { (5)
address 192.168.1.11:7788; (6)
}
syncer {
rate 7M; (7)
}
}
Chú thích :
(1) Tên của tài nguyên chính, yêu cầu sử dụng tên là R0,R1 …
(2) Tên thiết bị dùng cho DRBD và đường dẫn phụ của nó.
Trong ví dụ trên, các nút tên thiết bị, như tạo ra với udev, được tham chiếu ( /
dev/drbd_r0 , với r0 đại diện cho tên tài nguyên). Đối với việc sử dụng này, bạn cần
phải có drbd-udev gói đã được cài đặt. Ngoài ra, bỏ qua tên nút thiết bị trong cấu hình
và sử dụng dòng sau để thay thế:
device minor 0
(3) Các thiết bị được nhân rộng giữa các nút. Lưu ý, trong ví dụ này các thiết bị đều
giống nhau trên cả hai nút. Nếu bạn cần các thiết bị khác nhau, di chuyển đĩa tham số
vào các phần trên .
(4) Tham số meta đĩa thường có chứa các giá trị nội bộ , nhưng nó có thể để xác định
một thiết bị rõ ràng để giữ các dữ liệu meta.
(5) Phân vùng chứa tên tên của nút.
(6) Địa chỉ IP và port number tương ứng ( port thường dùng 7788).
(7) Tốc độ đồng bộ hóa. Đặt bằng 1/3 băng thông , nó chỉ giới hạn đồng bộ hóa ,
không ánh xạ .
2.3 Kiểm tra file cấu hình nếu cấu lệnh trả về lỗi , xem lại file cấu hình
drbdadm dump all
2.4 Động bộ hóa (nên để mặc định file Csync2).
csync2-xv
Nếu không có file csync2-xv hoặc không muốn dùng nó , hãy copy file cấu hình DRBD
sang một node khác.
scp / etc / drbd.conf venus :/ etc /scp / etc / drbd.d / * venus: etc / drbd.d /
2.5 Khởi tạo dự liệu Meta trên cả 2 hệ thống bằng cách nhập :
drbdadm — –ignore-sanity-checks create-md r0rcdrbd start
Nếu đĩa của bạn đã có một hệ thống tập tin mà bạn không cần nữa, phá hủy các cấu
trúc hệ thống tập tin với lệnh sau đây và lặp lại bước này.
dd if = / dev / zero of = / dev/sdb1 count = 10000
2.6 Xem tình trạng của DRBD bằng cách nhập sau trên mỗi node :
rcdrbd status
Kết quả cần đạt được khi xem thông tin tình trạng DRBD
drbd driver loaded OK; device status:version: 8.3.7 (api:88/proto:86-91)GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by phil@fat-tyre, 2010-01-13 17:17:27m:res cs ro ds p mounted fstype0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C
2.7 Bắt đầu quá trình Resync trên nút chính của bạn dự định.
drbdadm — –overwrite-data-of-peer primary r0
2.8 kiểm tra lại tình trạng của rcdrdb :
rcdrbd status
Kết quả :
…m:res cs ro ds p mounted fstype0:r0 Connected Primary/Secondary UpToDate/UpToDate
2.9 Đặt node chính cho mô hình
drbdadm primary r0
2.10 Tạo hệ thống tập tin của bạn trên đầu trang của thiết bị DRBD
mkfs.ext3 /dev/drbd_r0
2.11 gắn hệ thống tập tin và sử dụng nó.
mount / dev/drbd_r0 / mnt /
3.1 Sử dụng YaST để cấu hình DRBD, tiến hành như sau:
v Bắt đầu YaST và lựa chọn cấu hình mô-đun High Availability + DRBD . Nếu bạn đã có
một cấu hình DRBD, YaST cảnh báo bạn. YaST sẽ thay đổi cấu hình của bạn và sẽ lưu
các file cấu hình cũ của bạn DRBD là *. YaSTsave
v Trong Start-up configuration + booting lựa chọn On để khởi động DRBD trong thời
gian khỏi động.
v Nếu bạn cần phải cấu hình nhiều hơn nguồn tài nguyên tái tạo 1, chọn Global
Configuration . Số đầu vào trường Tiểu lựa chọn bao nhiêu DRBD nguồn tài nguyên
khác nhau có thể được cấu hình mà không cần khởi động lại máy tính.
v Cấu hình thực tế của tài nguyên được thực hiện trong cấu hình tài
nguyên . Nhấn Add để tạo ra một nguồn tài nguyên mới. Phải được thiết lập các thông
số sau hai lần:
v Nếu bạn đã cấu hình Csync2 (mà nên là mặc định), các file cấu hình DRBD đã được
bao gồm trong danh sách các tập tin mà cần phải được đồng bộ hóa. Để đồng bộ hóa,
sử dụng:
csync2-xv
v Nếu bạn không có Csync2 (hoặc không muốn sử dụng nó), sao chép các tập tin cấu
hình DRBD tay để các nút khác (ví dụ là một nút khác với tên Venus):
scp / etc / drbd.conf venus :/ etc /scp / etc / drbd.d / * venus: etc / drbd.d /
v Khởi tạo và bắt đầu dịch vụ DRBD trên cả hai hệ thống bằng cách nhập sau đây trên
mỗi Node :
drbdadm create-md r0rcdrbd start
v Cấu hình node1 là nút chính bằng cách nhập sau đây trên node1 :
drbdsetup /dev/drbd0 primary –overwrite-data-of-peer
v Kiểm tra trạng thái dịch vụ DRBD bằng cách nhập sau đây trên mỗi nút:
rcdrbd status
Trong khi đồng bộ hóa trên cả 2 node mất một thời gian nhỏ ta kiểm tra lại để theo
dõi quá trình đồng bộ hóa bằng nhập lại lênh trên .Sau khi các thiết bị khối trên cả hai
nút được đồng bộ hoá hoàn toàn, định dạng các thiết bị DRBD trên tiểu học với hệ
thống tập tin ưa thích của bạn. Bất kỳ hệ thống tập tin Linux có thể được sử dụng.
Chú ý : Luôn luôn sử dụng / <n> dev / drbd tên trong lệnh, không phải thực tế / dev /
disk tên thiết bị.
4.Thử nghiệm dịch vụ DRBD
4.1 kiểm tra trên máy thứ nhất (thunhat)
– Các lệnh kiểm tra DRBD trên các máy với quyền Root :
– tạo một liên kết trên máy A như : / srv/r0mount:
mkdir-p / srv/r0mount
– gắn thiết bị với DRBD
mount-o rw / dev/drbd0 / srv/r0mount
– tạo một tập tin từ node chính :
touch / srv/r0mount/from_node1
4.2 kiểm tra trên máy thứ hai (thuhai)
– kiểm tra file SRV đã được tạo chưa , nếu có tháo liên kết với R0mount đã tạo trên
máy thứ nhất .
umount / srv/r0mount
– Chuyển phân vùng r0 của máy thứ nhất thành secondary trong DRBD:
drbdadm secondary r0
– Chuyển máy thứ hai thành primary dịch vụ drbd :
drbdadm primary r0
– Kiểm tra máy thứ hai đã trở thành primary :
rcdrbd status
– Trên máy thứ hai tạo một thư mục :/srv/r0mount:
mkdir /srv/r0mount
– Mount thiết bị DRBD vào thư mục /r0mount/ vừa tạo :
mount -o rw /dev/drbd_r0 /srv/r0mount
– Kiểm tra dữ liệu trong /r0mount trên máy thứ nhất đã có chưa :
ls /srv/r0mount
5. ĐIỀU CHỈNH DRBD
v Sử dụng một ổ đĩa ngoài để tăng tốc kết nối dữ liệu.
v Thay đổi quy tắc udev thay đổi đọc trước các thiết bị DRBD.Mở tập tin /
etc/udev/rules.d/82-dm-ra.rules và thay đổi giá trị Read_ahead_kb .
ACTION == “add”, KERNEL == “dm-*”, attr {BDI / read_ahead_kb} = “4100”
Lưu ý: dòng này chỉ chạy khi sử dụng LVM.
v Kích hoạt bmbv phần mềm RAID trên hệ điều hành Linux mở
/etc/drbd.d/global_common.conf:
disk {use-bmbv;}
6. Xử lý sự cố DRBD
v lệnh test cấu hình bằng cách chạy drbdadm với d- :
drbdadm -d adjust r0
Nếu xuất hiện sai sót nên kiểm tra cấu hình trong / etc / * / drbd.d và drbd.conf trước
khi tiếp tục.
v kiểm tra phân vùng và thiết lập .Chạy một lần nữa với drbdadm.
drbdadm adjust r0
v Tên máy chủ lưu trữ : trong drbd thì tên máy sẽ đucợ phân biệt như : node1 khác với
Node1.nếu sử dùng một thiết bị mạng chuyên dụng tên máy không thể phân giải địa
chỉ Ip. disable-ip-verification.
v Cổng TCP.
Thường thì DRBD chọn cổng 7788 dùng để giao tiếp giữa các node với nhau ,vì thế
phải chắc chắn cổng này được bật và không bị tường lửa chặn trên cả 2 node.
v Thiết bị DRBD bị hỏng sau khi khỏi động.
Kiểm tra / var / log / messages
Split-Brain detected, dropping connection!
Giải quyết tình trạng :nhập dòng sau vào máy có dữ liệu bị bỏ .
drbdadm secondary r0drbdadm — –discard-my-data connect r0
Vào máy có dữ liệu mới nhất nhập dòng :
drbdadm connect r0
III. Tài liệu tham khảo
http://doc.opensuse.org/products/draft/SLE-HA/SLE-ha-guide_sd_draft/cha.ha.drbd.html
http://www.drbd.org/
http://server-world.info/en/note?os=CentOS_6&p=drbd