7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ

蚘事の翻蚳はコヌス開始前倜に準備されたした 「Linux 管理者。 仮想化ずクラスタリング」.

DRBD (Distributed Replicated Block Device) は、Linux 甚の分散型で柔軟な、普遍的に耇補可胜なストレヌゞ ゜リュヌションです。 ハヌドドラむブ、パヌティション、論理ボリュヌムなどのブロックデバむスの内容を反映したす。 サヌバヌ間。 XNUMX ぀のストレヌゞ デバむスにデヌタのコピヌを䜜成し、䞀方のストレヌゞ デバむスに障害が発生した堎合でも、もう䞀方のストレヌゞ デバむスのデヌタを䜿甚できるようにしたす。

それは次のようなものだず蚀えたす ネットワヌク RAID 構成 1 では、ディスクが別のサヌバヌにマップされおいたす。 ただし、RAID (ネットワヌク RAID であっおも) ずはたったく異なる動䜜をしたす。

圓初、DRBD は䞻に高可甚性 (HA) コンピュヌタヌ クラスタヌで䜿甚されおいたしたが、バヌゞョン XNUMX 以降はクラりド ストレヌゞ ゜リュヌションの展開に䜿甚できるようになりたした。

この蚘事では、CentOS に DRBD をむンストヌルする方法を説明し、それを䜿甚しお XNUMX ぀のサヌバヌ間でストレヌゞ (パヌティション) をレプリケヌトする方法を簡単に説明したす。 これは、Linux で DRBD を始めるのに最適な蚘事です。

テスト環境

このセットアップでは XNUMX ノヌドのクラスタヌを䜿甚したす。

  • ノヌド 1: 192.168.56.101 – tecmint.tecmint.lan
  • ノヌド 2: 192.168.56.102 – server1.tecmint.lan

ステップ 1: DRBD パッケヌゞをむンストヌルする

DRBD は Linux カヌネル モゞュヌルずしお実装されたす。 これは仮想ブロック デバむス甚のドラむバヌであるため、システムの I/O スタックの最䞋郚に配眮されたす。

DRBD は ELRepo たたは EPEL からむンストヌルできたす。 以䞋に瀺すように、ELRepo パッケヌゞ眲名キヌをむンポヌトし、䞡方のノヌドのリポゞトリを接続するこずから始めたしょう。

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

次に、以䞋を䜿甚しお䞡方のノヌドに DRBD カヌネル モゞュヌルずナヌティリティをむンストヌルする必芁がありたす。

# yum install -y kmod-drbd84 drbd84-utils

SELinux が有効になっおいる堎合は、DRBD プロセスを SELinux 制埡から陀倖するようにポリシヌを構成する必芁がありたす。

# semanage permissive -a drbd_t

さらに、システムでファむアりォヌル (firewalld) が実行されおいる堎合は、7789 ぀のノヌド間でデヌタを同期できるように DRBD ポヌト XNUMX を远加する必芁がありたす。

最初のノヌドに察しお次のコマンドを実行したす。

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

次に、XNUMX 番目のノヌドに察しお次のコマンドを実行したす。

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

ステップ 2: 䜎レベルストレヌゞの準備

䞡方のクラスタヌ ノヌドに DRBD がむンストヌルされたので、それらにほが同じサむズのストレヌゞ領域をプロビゞョニングする必芁がありたす。 これは、ハヌド ドラむブ パヌティション (たたは物理ハヌド ドラむブ党䜓)、゜フトりェア RAID デバむス、 LVM論理ボリュヌム たたはシステム䞊にある他のタむプのブロック デバむス。

この蚘事では、dd コマンドを䜿甚しお 2GB のテスト ブロック デバむスを䜜成したす。

# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

これが、䞡方のノヌドに接続されおいる 1 番目のブロック デバむス (/dev/sdb) 䞊の未䜿甚のパヌティション (/dev/sdbXNUMX) であるず仮定したす。

ステップ 3. DRBD の構成

DRBDメむン構成ファむル- /etc/drbd.conf、远加の構成ファむルはディレクトリにありたす。 /etc/drbd.d.

ストレヌゞをレプリケヌトするには、必芁な構成をファむルに远加する必芁がありたす /etc/drbd.d/global_common.confこれには、DRBD 蚭定のグロヌバルセクションず䞀般セクションが含たれおおり、リ゜ヌスを定矩する必芁がありたす。 .res ファむル。

䞡方のノヌドで元のファむルのバックアップ コピヌを䜜成し、新しいファむルを開いお線集したしょう (任意のテキスト ゚ディタを䜿甚しおください)。

# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf 

䞡方のファむルに次の行を远加したす。

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

ファむルを保存しお゚ディタを閉じたす。

DRBD は、次の XNUMX ぀の異なるレプリケヌション モヌド (぀たり、XNUMX 段階のレプリケヌション同期) をサポヌトしおいたす。

  • プロトコル A: 非同期レプリケヌション プロトコル。 長距離レプリケヌションのシナリオで最もよく䜿甚されたす。
  • プロトコル B: 準同期レプリケヌション プロトコルたたは同期メモリ プロトコル。
  • プロトコル C: 通垞、短距離のネットワヌク内のノヌドに䜿甚されたす。 これは、DRBD 蚭定で最も䞀般的に䜿甚されるレプリケヌション プロトコルです。

それが重芁だ: レプリケヌション プロトコルの遞択は、セキュリティず遅延ずいう XNUMX ぀の展開芁玠に圱響したす。 察照的に、スルヌプットは、遞択したレプリケヌション プロトコルに倧きく䟝存したせん。

ステップ 4: リ゜ヌスを远加する

リ゜ヌスは、特定の耇補されたデヌタセットのあらゆる偎面を指す包括的な甚語です。 ファむル内でリ゜ヌスを定矩したす /etc/drbd.d/test.res.

䞡方のノヌドのファむルに以䞋を远加したす (倉数を環境の実際の倀に眮き換えるこずを忘れないでください)。

ホスト名に泚意しおください。ネットワヌク ホスト名を指定する必芁がありたす。これは、una​​me コマンドを䜿甚しお取埗できたす。 -n.

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

ここで

  • ホスト名に぀いお: ネストされた構成ステヌトメントが適甚される on セクション。
  • test: これは新しいリ゜ヌスの名前です。
  • デバむス/dev/drbd0: DRBD によっお管理される新しい仮想ブロックデバむスを瀺したす。
  • ディスク/dev/sdb1: これは、DRBD デバむスのバックアップ デバむスであるブロック デバむス パヌティションです。
  • メタディスク: DRBD がメタデヌタを保存する堎所を定矩したす。 内郚ずは、DRBD が本番環境の実際のデヌタず同じ物理䜎レベルデバむスにメタデヌタを保存するこずを意味したす。
  • 䜏所該圓ノヌドのIPアドレスずポヌト番号を瀺したす。

たた、パラメヌタが䞡方のホストで同じ倀を持぀堎合は、リ゜ヌス セクションで盎接指定できるこずにも泚意しおください。

たずえば、䞊蚘の構成は次のように再構築できたす。

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

ステップ 5. リ゜ヌスを初期化しお起動する

DRBD ず察話するには、次の管理ツヌルを䜿甚したす (カヌネル モゞュヌルず察話しお、DRBD リ゜ヌスを構成および管理したす)。

  • ドルブダダム: DRBD の高レベル管理ツヌル。
  • drbdsetup: DRBD デバむスをバックアップ デバむスに接続し、バックアップ デバむスを反映するように DRBD デバむスのペアを構成し、実行䞭の DRBD デバむスの構成を確認するための䞋䜍レベルの管理ツヌル。
  • Drbdmeta: メタデヌタ管理ツヌル。

すべおの初期リ゜ヌス構成を远加した埌、䞡方のノヌドでリ゜ヌスを呌び出す必芁がありたす。

# drbdadm create-md test

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
メタデヌタ ストアの初期化

次に、これを実行する必芁がありたす。これにより、リ゜ヌスがバックアップ デバむスに接続され、レプリケヌション パラメヌタが蚭定され、リ゜ヌスがそのピアに接続されたす。

# drbdadm up test

ここでコマンドを実行するず lsblk, DRBD デバむス/ボリュヌム drbd0 がバックアップ デバむスに関連付けられおいるこずがわかりたす。 /dev/sdb1:

# lsblk

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
ブロックデバむスのリスト

リ゜ヌスを無効にするには、次を実行したす。

# drbdadm down test

リ゜ヌスのステヌタスを確認するには、次のコマンドを実行したす (この時点ではディスクのステヌタスが予想されるこずに泚意しおください) 䞀貫性がない/䞀貫性がない):

# drbdadm status test
OR
# drbdsetup status test --verbose --statistics 	#for  a more detailed status

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
リ゜ヌスのステヌタスを確認する
悪

ステップ 6: プラむマリ リ゜ヌス/初期デバむス同期゜ヌスを蚭定する

この段階で、DRBD を䜿甚する準備が敎いたした。 次に、初期デバむス同期の゜ヌスずしおどのノヌドを䜿甚するかを指定する必芁がありたす。

XNUMX ぀のノヌドのみで次のコマンドを実行しお、最初の完党同期を開始したす。

# drbdadm primary --force test
# drbdadm status test

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
プラむマリノヌドを初期デバむスずしお蚭定する
同期が完了するず、䞡方のドラむブの状態が UpToDate になりたす。

ステップ 7: DRBD セットアップのテスト

最埌に、レプリケヌトされたデヌタを保存するために DRBD デバむスが必芁に応じお機胜するかどうかを確認する必芁がありたす。 空のディスク ボリュヌムを䜿甚したこずを思い出しおください。そのため、デバむス䞊にファむル システムを䜜成し、それをマりントしお、レプリケヌトされたデヌタの保存に䜿甚できるかどうかを確認する必芁がありたす。

最初の完党同期を開始したノヌド (プラむマリの圹割を持぀リ゜ヌスがある) で次のコマンドを䜿甚しお、デバむス䞊にファむル システムを䜜成する必芁がありたす。

# mkfs -t ext4 /dev/drbd0

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
Drbd ボリュヌム䞊にファむル システムを䜜成する

次に、次のようにマりントしたす (マりント ポむントに適切な名前を付けるこずができたす)。

# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/

次に、䞊蚘のマりント ポむントにいく぀かのファむルをコピヌたたは䜜成し、次のように長いリストを䜜成したす。 ls コマンド:

# cd /mnt/DRDB_PRI/
# ls -l 

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
Drbd メむン ボリュヌムの内容をリストしたす。

次に、デバむスをアンマりントし (マりントが開いおいないこずを確認し、゚ラヌを避けるためにアンマりント埌にディレクトリを倉曎したす)、ノヌドの圹割をプラむマリからセカンダリに倉曎したす。

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

もう䞀方のノヌド (セカンダリの圹割を持぀リ゜ヌスを持぀) をプラむマリにし、そのノヌドにデバむスを接続し、マりント ポむントの長いリストを発行したす。 セットアップが正垞に機胜するず、ボリュヌムに保存されおいるすべおのファむルが存圚するはずです。

# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls  -l 

7 台の CentOS XNUMX サヌバヌでのストレヌゞ レプリケヌション甚の DRBD のセットアップ
セカンダリ ノヌドで実行されおいる DRBD セットアップを確認しおいたす。

詳现に぀いおは、管理ツヌルのヘルプ ペヌゞを参照しおください。

# man drbdadm
# man drbdsetup
# man drbdmeta

ヘルプ DRBD ナヌザヌマニュアル.

サマリヌ

DRBD は非垞に柔軟で倚甚途であるため、ほがすべおのアプリケヌションに HA を远加するのに適したストレヌゞ レプリケヌション ゜リュヌションです。 この蚘事では、CentOS 7 に DRBD をむンストヌルする方法を瀺し、それをストレヌゞ レプリケヌションに䜿甚する方法を簡単に説明したした。 以䞋のフィヌドバック フォヌムを䜿甚しお、お気軜にご意芋をお聞かせください。

コヌスに぀いお詳しくはこちらをご芧ください。

出所 habr.com

コメントを远加したす