Viblo CTF
0

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 NFS server) 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.

drbd.jpg

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”.

ha_drbd.png

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.1Cá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-udev udev 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 [email protected], 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

Sử dụng một ổ đĩa ngoài để tăng tốc kết nối dữ liệu.

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.

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

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.

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

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.

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.

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/


All Rights Reserved