Bộ lưu trữ LINSTOR và sự tích hợp của nó với OpenNebula

Bộ lưu trữ LINSTOR và sự tích hợp của nó với OpenNebula

Cách đây không lâu, những người đến từ LINBIT đã trình bày giải pháp SDS mới của họ - Linstor. Đây là bộ lưu trữ hoàn toàn miễn phí dựa trên các công nghệ đã được chứng minh: DRBD, LVM, ZFS. Linstor kết hợp sự đơn giản và kiến ​​trúc được thiết kế tốt, cho phép bạn đạt được sự ổn định và kết quả khá ấn tượng.

Hôm nay tôi muốn nói về nó chi tiết hơn một chút và cho thấy nó có thể được tích hợp với OpenNebula dễ dàng như thế nào bằng cách sử dụng linstor_un - một trình điều khiển mới mà tôi đã phát triển riêng cho mục đích này.

Linstor kết hợp với OpenNebula cho phép bạn xây dựng một đám mây nhanh và đáng tin cậy, có thể dễ dàng triển khai trên cơ sở hạ tầng của riêng bạn.

Kiến trúc Linstor

Linstor không phải là một hệ thống tệp hay khối lưu trữ, Linstor là một công cụ điều phối cung cấp lớp trừu tượng cho phép bạn tự động hóa việc tạo các ổ đĩa trong LVM hoặc ZFS và sao chép chúng bằng DRBD9.

Phá vỡ định kiến

Nhưng chờ đã, DRBD? — Tại sao phải tự động hóa nó và nó có thể hoạt động như thế nào?

Hãy nhớ lại quá khứ, khi DRBD8 còn rất phổ biến. Cách sử dụng tiêu chuẩn của nó liên quan đến việc tạo ra một thiết bị khối lớn và cắt nó thành nhiều mảnh nhỏ, sử dụng cùng một LVM. Một loại mdadm RAID-1 nhưng có khả năng sao chép qua mạng.

Cách tiếp cận này không phải là không có nhược điểm và do đó, với sự ra đời của DRBD9, các nguyên tắc thiết kế lưu trữ đã thay đổi; giờ đây, một thiết bị DRBD riêng biệt được tạo cho mỗi máy ảo.

Cách tiếp cận với các thiết bị khối độc lập cho phép sử dụng không gian trong cụm tốt hơn và cũng bổ sung thêm một số tính năng bổ sung. Ví dụ: đối với mỗi thiết bị như vậy, bạn có thể xác định số lượng bản sao, vị trí của chúng và cài đặt riêng lẻ. Chúng rất dễ tạo/xóa, chụp ảnh nhanh, thay đổi kích thước, bật mã hóa và hơn thế nữa. Điều đáng chú ý là DRBD9 cũng hỗ trợ đại biểu, cho phép bạn tránh các tình huống chia não.

Tài nguyên và phụ trợ

Khi tạo một thiết bị khối mới, Linstor đặt số lượng bản sao cần thiết trên các nút khác nhau trong cụm. Chúng tôi sẽ gọi mỗi bản sao như vậy là tài nguyên DRBD.

Có hai loại tài nguyên:

  • Nguồn dữ liệu — là một thiết bị DRBD nằm trên một nút trong nhóm LVM hoặc ZFS.
    Hiện tại, có sự hỗ trợ cho một số chương trình phụ trợ và số lượng của chúng không ngừng tăng lên. Có hỗ trợ cho LVM, ThinLVM và ZFS. Hai cái cuối cùng cho phép bạn tạo và sử dụng ảnh chụp nhanh.
  • Tài nguyên không cần đĩa — là một thiết bị DRBD được đặt trên một nút không có phần phụ trợ nhưng cho phép nó được coi như một thiết bị khối thông thường; tất cả các hoạt động đọc/ghi sẽ được chuyển hướng đến tài nguyên dữ liệu. Tương tự gần nhất với tài nguyên không đĩa là iSCSI LUN.

Mỗi tài nguyên DRBD có thể có tối đa 8 bản sao và chỉ một trong số chúng có thể hoạt động theo mặc định - Tiểu học, mọi người khác sẽ Trung và việc sử dụng chúng sẽ không thể thực hiện được miễn là có ít nhất một Chính, nghĩa là chúng sẽ chỉ sao chép dữ liệu giữa chúng.

Bằng cách cài đặt thiết bị DRBD vào hệ thống, nó sẽ tự động trở thành Tiểu học, do đó, ngay cả tài nguyên Diskless, theo thuật ngữ DRBD, cũng có thể là Tài nguyên chính.

Vậy tại sao bạn cần Linstor?

Bằng cách ủy thác tất cả các tác vụ sử dụng nhiều tài nguyên cho kernel, Linstor về cơ bản là một ứng dụng Java thông thường cho phép bạn dễ dàng tự động hóa việc tạo tài nguyên DRBD.
Hơn nữa, mỗi tài nguyên do anh ta tạo ra sẽ là một cụm DRBD độc lập hoạt động độc lập, bất kể trạng thái của mặt phẳng điều khiển và các tài nguyên DRBD khác.

Linstor chỉ bao gồm hai thành phần:

  • Bộ điều khiển Linstor - Bộ điều khiển chính, cung cấp API để tạo và quản lý tài nguyên. Nó cũng liên lạc với các vệ tinh, kiểm tra dung lượng trống trên chúng và gửi các tác vụ để tạo và xóa các tài nguyên mới. Nó chạy trong một phiên bản duy nhất và sử dụng cơ sở dữ liệu, có thể là cơ sở dữ liệu nội bộ (H2) hoặc bên ngoài (PostgreSQL, MySQL, MariaDB)
  • Linstor-vệ tinh — Được cài đặt trên tất cả các nút lưu trữ và cung cấp cho bộ điều khiển thông tin về không gian trống, đồng thời thực hiện các tác vụ nhận được từ bộ điều khiển để tạo và xóa các ổ đĩa mới cũng như thiết bị DRBD trên chúng.

Linstor hoạt động với các khái niệm chính sau:

  • Node - một máy chủ vật lý nơi tài nguyên DRBD sẽ được tạo và sử dụng.
  • Bể chứa — Nhóm LVM hoặc ZFS được tạo trên nút nơi đặt tài nguyên DRBD. Cũng có thể có một nhóm không có đĩa - đây là một nhóm chỉ chứa các tài nguyên không có đĩa.
  • Định nghĩa tài nguyên — Định nghĩa về tài nguyên về cơ bản là một nguyên mẫu mô tả tên và tất cả các thuộc tính của nó.
  • Định nghĩa khối lượng - Định nghĩa khối lượng. Mỗi tài nguyên có thể bao gồm nhiều tập, mỗi tập phải có một kích thước.
  • Tài nguyên — Một phiên bản được tạo của thiết bị khối, mỗi tài nguyên phải được đặt trên một nút cụ thể và trong một số nhóm lưu trữ.

Cài đặt Linstor

Tôi khuyên bạn nên sử dụng Ubuntu làm hệ thống, vì... tồn tại vì cô ấy PPA sẵn sàng:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

Hoặc Debian, nơi Linstor có thể được cài đặt từ kho lưu trữ chính thức cho Proxmox:

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" > 
    /etc/apt/sources.list.d/linbit.list
apt-get update

Người điều khiển

Mọi thứ đều đơn giản ở đây:

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

Nút lưu trữ

Nhân Linux hiện có mô-đun hạt nhân trong cây DRBD8, tiếc là nó không phù hợp với chúng tôi và chúng tôi cần cài đặt DRBD9:

apt-get install drbd-dkms

Như thực tế cho thấy, hầu hết các khó khăn phát sinh chính xác là do mô-đun DRBD8 được tải vào hệ thống chứ không phải DRBD9. May mắn thay, điều này rất dễ kiểm tra bằng cách chạy:

modprobe drbd
cat /proc/drbd

Nếu bạn thấy Phiên bản: 9 - nó có nghĩa là mọi thứ đều ổn nếu Phiên bản: 8 - điều đó có nghĩa là đã xảy ra sự cố và bạn cần thực hiện thêm các bước để tìm ra nguyên nhân.

Bây giờ hãy cài đặt linstor-vệ tinh и drbd-utils:

apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite

Tạo một cụm

Nhóm lưu trữ và nút

Với vai trò phụ trợ, chúng tôi sẽ thực hiện mỏngLVM, bởi vì đây là cách đơn giản nhất và hỗ trợ ảnh chụp nhanh.
Tải về lvm2, nếu bạn chưa làm như vậy, hãy tạo nhóm ThinLVM trên tất cả các nút lưu trữ của chúng tôi:

sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool

Tất cả các hành động tiếp theo có thể được thực hiện trực tiếp trên bộ điều khiển:

Hãy thêm các nút của chúng tôi:

linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13

Hãy tạo nhóm lưu trữ:

linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool

Bây giờ hãy kiểm tra các nhóm đã tạo:

linstor storage-pool list

Nếu mọi thứ được thực hiện chính xác, thì chúng ta sẽ thấy một cái gì đó như:

+------------------------------------------------ -------------------------------------------------- ----+ | Kho lưu trữ | Nút | Tài xế | Tên hồ bơi | Dung lượng miễn phí | Tổng công suất | Hỗ trợẢnh chụp nhanh | |------------------------------------------------ - -------------------------------------------------- - ---| | dữ liệu | nút1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | đúng | | dữ liệu | nút2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | đúng | | dữ liệu | nút3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | đúng | +------------------------------------------------ -------------------------------------------------- ----+

tài nguyên DRBD

Bây giờ hãy thử tạo tài nguyên DRBD mới của chúng tôi:

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

Hãy kiểm tra các tài nguyên đã tạo:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Nút | Tài nguyên | Kho lưu trữ | Khối lượngNr | NhỏNr | Tên thiết bị | Phân bổ | Đang sử dụng | Tiểu bang | |------------------------------------------------ - -------------------------------------------------- - --| | nút1 | myres | dữ liệu | 0 | 1084 | /dev/drbd1084 | 52 KiB | Chưa sử dụng | UpToDate | | nút2 | myres | dữ liệu | 0 | 1084 | /dev/drbd1084 | 52 KiB | Chưa sử dụng | UpToDate | +------------------------------------------------ -------------------------------------------------- ---+

Tuyệt vời! - chúng tôi thấy rằng tài nguyên đã được tạo trên hai nút đầu tiên, chúng tôi cũng có thể thử tạo tài nguyên không cần đĩa trên nút thứ ba:

linstor resource create --diskless node3 myres

Trên các nút, bạn sẽ luôn tìm thấy thiết bị này dưới dạng /dev/drbd1084 hoặc /dev/drbd/by-res/myres/0

Đây là cách Linstor hoạt động, bạn có thể lấy thêm thông tin từ tài liệu chính thức.

Bây giờ tôi sẽ cho bạn biết cách tích hợp nó với OpenNebula

Thiết lập OpenNebula

Tôi sẽ không đi quá sâu vào quá trình thiết lập OpenNebula, bởi vì... tất cả các bước được mô tả chi tiết trong tài liệu chính thức, mà tôi khuyên bạn nên liên hệ, tôi sẽ chỉ cho bạn biết về việc tích hợp OpenNebula với Linstor.

linstor_un

Để giải quyết vấn đề này, tôi đã viết trình điều khiển của riêng mình - linstor_un, nó hiện có sẵn dưới dạng plugin và phải được cài đặt riêng.

Toàn bộ quá trình cài đặt được thực hiện trên các nút OpenNebula giao diện người dùng và không yêu cầu các hành động bổ sung trên các nút điện toán.

Trước hết, chúng ta cần đảm bảo rằng chúng ta có jq и linstor-khách hàng:

apt-get install jq linstor-client

Đội linstor node list sẽ hiển thị một danh sách các nút. Tất cả các nút tính toán OpenNebula phải được thêm vào cụm Linstor.

Tải xuống và cài đặt plugin:

curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp

mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/

mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf

mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un

rm -rf /tmp/addon-linstor_un-master

Bây giờ chúng ta cần thêm nó vào cấu hình OpenNebula, để thực hiện việc này, chúng ta làm theo các bước đơn giản được mô tả đây.

Sau đó khởi động lại OpenNebula:

systemctl restart opennebula

Và thêm kho dữ liệu, hệ thống của chúng tôi:

cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT

onedatastore create system-ds.conf

Và kho hình ảnh:

cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT

onedatastore create images-ds.conf

  • Thông số AUTO_PLACE hiển thị số lượng bản sao dữ liệu sẽ được tạo cho mỗi hình ảnh mới trong OpenNebula.
  • Thông số CLONE_MODE cho biết chính xác cách hình ảnh sẽ được sao chép khi tạo máy ảo mới, snapshot — sẽ tạo một ảnh chụp nhanh của hình ảnh và triển khai một máy ảo từ ảnh chụp nhanh đó, copy — sẽ tạo một bản sao hoàn chỉnh của hình ảnh cho mỗi máy ảo.
  • В BRIDGE_LIST Nên chỉ định tất cả các nút sẽ được sử dụng để thực hiện các hoạt động nhân bản hình ảnh.

Để biết danh sách đầy đủ các tham số được hỗ trợ, hãy xem README dự án.

Việc thiết lập này hoàn tất, bây giờ bạn có thể tải xuống một số thiết bị từ trang chính thức Thị trường Nebula mở và tạo các máy ảo từ nó.

Liên kết dự án:
https://github.com/OpenNebula/addon-linstor_un

Nguồn: www.habr.com

Thêm một lời nhận xét