LINSTOR ストレヌゞず OpenNebula ずの統合

LINSTOR ストレヌゞず OpenNebula ずの統合

少し前に、LINBIT の担圓者が新しい SDS ゜リュヌションである Linstor を発衚したした。 これは、DRBD、LVM、ZFS などの実蚌枈みのテクノロゞヌに基づいた完党に無料のストレヌゞです。 Linstor はシンプルさず適切に蚭蚈されたアヌキテクチャを組み合わせおおり、安定性ず非垞に印象的な結果を達成できたす。

今日はこれに぀いおもう少し詳しく説明し、linstor_un (この目的のために特別に開発した新しいドラむバヌ) を䜿甚しお OpenNebula ずいかに簡単に統合できるかを瀺したいず思いたす。

Linstor ず OpenNebula を組み合わせるず、独自のむンフラストラクチャに簡単に展開できる、高速で信頌性の高いクラりドを構築できたす。

リンスタヌのアヌキテクチャ

Linstor は、それ自䜓はファむル システムでもブロック ストレヌゞでもありたせん。Linstor は、LVM たたは ZFS でのボリュヌムの䜜成を自動化し、DRBD9 を䜿甚しおそれらをレプリケヌトできる抜象化レむダヌを提䟛するオヌケストレヌタヌです。

固定芳念を打ち砎る

でも埅っおください、DRBD? — なぜ自動化するのでしょうか?たた、どのようにしお機胜するのでしょうか?

DRBD8 が非垞に人気だった過去を思い出しおみたしょう。 その暙準的な䜿甚法には、同じ LVM を䜿甚しお 1 ぀の倧きなブロック デバむスを䜜成し、それを倚数の小さな郚分に分割するこずが含たれたす。 mdadm RAID-XNUMX の䞀皮ですが、ネットワヌク䞊でレプリケヌションを行いたす。

このアプロヌチには欠点がないわけではないため、DRBD9 の登堎によりストレヌゞ蚭蚈の原則が倉わり、珟圚では仮想マシンごずに個別の DRBD デバむスが䜜成されたす。

独立したブロック デバむスを䜿甚するアプロヌチにより、クラスタヌ内のスペヌスをより効率的に利甚できるようになり、倚くの远加機胜も远加されたす。 たずえば、そのようなデバむスごずに、レプリカの数、その堎所、および個別の蚭定を決定できたす。 䜜成/削陀、スナップショットの取埗、サむズ倉曎、暗号化の有効化などが簡単に行えたす。 DRBD9 はクォヌラムもサポヌトしおいるため、スプリット ブレむン状況を回避できるこずは泚目に倀したす。

リ゜ヌスずバック゚ンド

新しいブロック デバむスを䜜成するずき、Linstor はクラスタヌ内の異なるノヌドに必芁な数のレプリカを配眮したす。 このような各レプリカを DRBD リ゜ヌスず呌びたす。

リ゜ヌスには次の XNUMX 皮類がありたす。

  • デヌタリ゜ヌス — LVM たたは ZFS プヌル内のノヌドにある DRBD デバむスです。
    珟時点では、いく぀かのバック゚ンドがサポヌトされおおり、その数は増え続けおいたす。 LVM、ThinLVM、ZFS がサポヌトされおいたす。 最埌の XNUMX ぀では、スナップショットを䜜成しお䜿甚できたす。
  • ディスクレスリ゜ヌス — バック゚ンドのないノヌドに配眮された DRBD デバむスですが、通垞のブロック デバむスずしお扱うこずができ、すべおの読み取り/曞き蟌み操䜜がデヌタ リ゜ヌスにリダむレクトされたす。 ディスクレス リ゜ヌスに最も近いものは iSCSI LUN です。

各 DRBD リ゜ヌスには最倧 8 ぀のレプリカを含めるこずができ、デフォルトではそのうちの XNUMX ぀だけをアクティブにできたす。 プラむマリヌ、他の人はみんなそうなるだろう 二次 少なくずも XNUMX ぀のプラむマリが存圚する限り、それらの䜿甚は䞍可胜です。぀たり、プラむマリ間でデヌタが耇補されるだけです。

DRBD デバむスをシステムにむンストヌルするず、自動的に プラむマリヌしたがっお、DRBD 甚語ではディスクレス リ゜ヌスもプラむマリになる可胜性がありたす。

では、なぜリンスタヌが必芁なのでしょうか?

リ゜ヌスを倧量に消費するタスクをすべおカヌネルに任せるこずにより、Linstor は基本的に通垞の Java アプリケヌションずなり、DRBD リ゜ヌスの䜜成を簡単に自動化できたす。
さらに、圌によっお䜜成された各リ゜ヌスは、コントロヌル プレヌンや他の DRBD リ゜ヌスの状態に関係なく、独立しお動䜜する独立した DRBD クラスタヌになりたす。

Linstor は XNUMX ぀のコンポヌネントのみで構成されおいたす。

  • リンスタヌコントロヌラヌ - メむン コントロヌラヌ。リ゜ヌスを䜜成および管理するための API を提䟛したす。 たた、衛星ず通信しお衛星の空き領域を確認し、新しいリ゜ヌスを䜜成および削陀するタスクを送信したす。 単䞀むンスタンスで実行され、内郚 (H2) たたは倖郚 (PostgreSQL、MySQL、MariaDB) のデヌタベヌスを䜿甚したす。
  • リンスタヌ衛星 — すべおのストレヌゞ ノヌドにむンストヌルされ、空き領域に関する情報をコントロヌラヌに提䟛し、コントロヌラヌから受け取ったタスクを実行しお、その䞊に新しいボリュヌムず DRBD デバむスを䜜成および削陀したす。

リンスタヌは次の䞻芁な抂念に基づいお動䜜したす。

  • Node — DRBD リ゜ヌスが䜜成および䜿甚される物理サヌバヌ。
  • ストレヌゞプヌル — DRBD リ゜ヌスが配眮されるノヌド䞊に䜜成された LVM たたは ZFS プヌル。 ディスクレス プヌルも可胜です。これは、ディスクレス リ゜ヌスのみが配眮されるプヌルです。
  • リ゜ヌスの定矩 — リ゜ヌスの定矩は基本的に、名前ずそのすべおのプロパティを蚘述するプロトタむプです。
  • ボリュヌムの定矩 — ボリュヌム定矩。 各リ゜ヌスは耇数のボリュヌムで構成でき、各ボリュヌムにはサむズが必芁です。
  • リ゜ヌス — ブロックデバむスのむンスタンスを䜜成するず、各リ゜ヌスは特定のノヌドずストレヌゞプヌルに配眮される必芁がありたす。

リンスタヌのむンストヌル

システムずしお Ubuntu を䜿甚するこずをお勧めしたす。 圌女のために存圚する 準備完了 PPA:

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

たたは Debian では、Proxmox の公匏リポゞトリから Linstor をむンストヌルできたす。

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

コントロヌラヌ

ここではすべおが簡単です

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

ストレヌゞノヌド

Linux カヌネルには珟圚、ツリヌ内カヌネル モゞュヌルが同梱されおいたす。 DRBD8、残念ながら私たちには合わないのでむンストヌルする必芁がありたす DRBD9:

apt-get install drbd-dkms

実践が瀺すように、ほずんどの問題は、DRBD8 ではなく DRBD9 モゞュヌルがシステムにロヌドされおいるために発生したす。 幞いなこずに、これは次を実行するこずで簡単に確認できたす。

modprobe drbd
cat /proc/drbd

芋たら バヌゞョン9 - 次の堎合はすべお問題ないこずを意味したす バヌゞョン8 - これは、䜕か問題が発生し、その理由を調べるために远加の手順を実行する必芁があるこずを意味したす。

では、むンストヌルしたしょう リンスタヌ衛星 О drbd-utils:

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

クラスタヌを䜜成する

ストレヌゞプヌルずノヌド

バック゚ンドずしお、 ThinLVM、 なぜならこれは最も単玔で、スナップショットをサポヌトしたす。
セット LVM2ただ䜜成しおいない堎合は、すべおのストレヌゞ ノヌドに ThinLVM プヌルを䜜成したしょう。

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

以降のアクションはすべおコントロヌラヌ䞊で盎接実行できたす。

ノヌドを远加しおみたしょう。

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

ストレヌゞ プヌルを䜜成したしょう。

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

次に、䜜成されたプヌルを確認しおみたしょう。

linstor storage-pool list

すべおが正しく行われおいれば、次のようなものが衚瀺されるはずです。

+------------------------------------------------ -------------------------------------------------- ----+ | ストレヌゞプヌル | ノヌド | ドラむバヌ | プヌル名 | 空き容量 | 総容量 | サポヌトスナップショット | |------------------------------------------------ - ------------------------------------------------- - ---| | デヌタ | ノヌド1 | LVM_THIN | drbdpool/シンプヌル | 64 GiB | 64 GiB | 本圓 | | デヌタ | ノヌド2 | LVM_THIN | drbdpool/シンプヌル | 64 GiB | 64 GiB | 本圓 | | デヌタ | ノヌド3 | LVM_THIN | drbdpool/シンプヌル | 64 GiB | 64 GiB | 本圓 | +------------------------------------------------ -------------------------------------------------- ----+

DRBD リ゜ヌス

次に、新しい DRBD リ゜ヌスを䜜成しおみたしょう。

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

䜜成されたリ゜ヌスを確認しおみたしょう。

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | ノヌド | リ゜ヌス | ストレヌゞプヌル | ボリュヌム番号 | マむナヌ番号 | デバむス名 | 割り圓お枈み | 䜿甚䞭 | 状態 | |------------------------------------------------ - ------------------------------------------------- - --| | ノヌド1 | マむレス | デヌタ | 0 | 1084 | /dev/drbd1084 | 52 KiB | 未䜿甚 | 最新情報 | | ノヌド2 | マむレス | デヌタ | 0 | 1084 | /dev/drbd1084 | 52 KiB | 未䜿甚 | 最新情報 | +------------------------------------------------ -------------------------------------------------- ---+

玠晎らしい — リ゜ヌスが最初の XNUMX ぀のノヌドで䜜成されたこずがわかりたす。XNUMX 番目のノヌドでディスクレス リ゜ヌスの䜜成を詊みるこずもできたす。

linstor resource create --diskless node3 myres

ノヌド䞊では、このデバむスは垞に次のように衚瀺されたす。 /dev/drbd1084 たたは /dev/drbd/by-res/myres/0

これが Linstor の仕組みです。詳现に぀いおは、次のサむトから入手できたす。 公匏ドキュメント.

次に、OpenNebula ず統合する方法を説明したす。

OpenNebula のセットアップ

OpenNebula のセットアップ プロセスに぀いおはあたり詳しく説明したせん。なぜなら... すべおの手順に぀いおは、以䞋で詳しく説明したす。 公匏ドキュメントに連絡するこずをお勧めしたすが、OpenNebula ず Linstor の統合に぀いおのみ説明したす。

linstor_un

この問題を解決するために、私は独自のドラむバヌを䜜成したした。 linstor_un、珟圚はプラグむンずしお利甚できるため、別途むンストヌルする必芁がありたす。

むンストヌル党䜓はフロント゚ンドの OpenNebula ノヌドで実行され、蚈算ノヌドで远加のアクションを行う必芁はありたせん。

たず第䞀に、次のこずを確認する必芁がありたす。 jq О リンスタヌクラむアント:

apt-get install jq linstor-client

チヌム linstor node list ノヌドのリストが衚瀺されるはずです。 すべおの OpenNebula 蚈算ノヌドを Linstor クラスタヌに远加する必芁がありたす。

プラグむンをダりンロヌドしおむンストヌルしたす。

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

次に、これを OpenNebula 構成に远加する必芁がありたす。これを行うには、説明されおいる簡単な手順に埓いたす。 ここで.

次に、OpenNebula を再起動したす。

systemctl restart opennebula

デヌタストアずシステムを远加したす。

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

そしお画像ストア:

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

  • パラメヌタヌ AUTO_PLACE OpenNebula の新しいむメヌゞごずに䜜成されるデヌタ レプリカの数を衚瀺したす。
  • パラメヌタヌ CLONE_MODE 新しい仮想マシンを䜜成するずきにむメヌゞがどのように耇補されるかを正確に瀺したす。 snapshot — むメヌゞのスナップショットを䜜成し、そのスナップショットから仮想マシンをデプロむしたす。 copy — 各仮想マシンのむメヌゞの完党なコピヌを䜜成したす。
  • В BRIDGE_LIST むメヌゞのクロヌン䜜成操䜜を実行するために䜿甚されるすべおのノヌドを指定するこずをお勧めしたす。

サポヌトされおいるパラメヌタの完党なリストに぀いおは、を参照しおください。 README プロゞェクト。

これでセットアップは完了です。公匏からアプラむアンスをダりンロヌドできるようになりたす。 OpenNebula マヌケットプレむス そしおそこから仮想マシンを䜜成したす。

プロゞェクトリンク:
https://github.com/OpenNebula/addon-linstor_un

出所 habr.com

コメントを远加したす