私はこの素晴らしいガイドに従って作成した2つのDebian Stretchサーバーにわたって、優れたバージョンのDRBDを使用しています https://www.howtoforge.com/setting-up-network-raid1-with-drbd-on- debian-squeeze-p2 /
しかし、再起動するたびに、いくつかのことをやり直して、再び稼働状態にする必要があります。
再起動する前の動作を確認すると、次のようになります。
root@server1:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:8 nr:0 dw:4 dr:1209 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
サーバー2で:
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----- ns:0 nr:8 dw:8 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
サーバー1で:
root@server1:~# mount ... /dev/drbd0 on /var/www type ext3 (rw,relatime,data=ordered)
そして、これは再起動後に表示されるものです。すべては機能していますが、マウント、サービスの開始、およびプライマリ/セカンダリ構成は失われています。私はこれを行うことによって最初にdrbd
を追加しようとしました:
_update-rc.d drbd defaults
_
両方のサーバーでこれは機能しないようです。 DRBDは単に起動しませんが、手動で_/etc/init.d/drdb start
_を実行すると、両方のサーバーで正常に機能します。
また、DRBDボリュームをfstab
に追加するだけでいいのかどうかわかりません。DRBDサービスが開始されていないと機能しないためです。 fstab
での__netdev
_の使用について読みましたが、fstab
エントリのさまざまな組み合わせが機能しませんでした。
最後に、再起動するたびにDRBDのプライマリステータスとセカンダリステータスを設定し、ボリュームを手動で再マウントする必要もあります。
だからこれは私が再起動後にそれを機能させる方法です:
サーバー1で:
root@server1:/etc# /etc/init.d/drbd status ● drbd.service - LSB: Control DRBD resources. Loaded: loaded (/etc/init.d/drbd; generated; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
root@server1:/etc# /etc/init.d/drbd start [ ok ] Starting drbd (via systemctl): drbd.service. root@jmtest1:/etc# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
_root@server1:/etc# drbdadm primary r0
_
root@server1:/etc# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
サーバー2で:
root@server2:~# /etc/init.d/drbd status ● drbd.service - LSB: Control DRBD resources. Loaded: loaded (/etc/init.d/drbd; generated; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
root@server2:~# /etc/init.d/drbd start [ ok ] Starting drbd (via systemctl): drbd.service.
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
_root@server2:~# drbdadm secondary r0
_
root@server2:~# cat /proc/drbd version: 8.4.7 (api:1/proto:86-101) srcversion: AC50E9301653907249B740E 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----- ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
私が試したいくつかのfstab
エントリ:
_/dev/drbd0 /var/www ext3 _netdev 0 2 UUID=042cc2e395b2b32 /var/www ext3 none,noauto 0 0
_
UUIDを使用するのか、それとも単に_/dev/drbd0
_を使用するのかわからない
なぜそれが始まらないのかについて私はこれらの質問を持っています:
update-rc.d drbd defaults
_が機能しないのはなぜですか?このような問題に対処するために作られた製品の使用を検討する必要があります。
私はこの投稿で説明しました[ Nagios/Icinga:Do n't show CRITICAL for DRBD partitions on standby node ] opensvcを使用して期待どおりに何ができるか、何年もうまく機能します。
opensvcクラスターノード間で自動的に同期されるopensvcサービス構成ファイルにマウントが記述されているため、fstabエントリーは不要
update-rc.d drbd defaults
をセットアップする必要はありません。一部のサービスでdrbdリソースがあることが確認された後、opensvcスタックがdrbdモジュールをmodprobしているため、プライマリ/セカンダリステートでdrbdを起動します。
起動時にプライマリ/セカンダリに到達するには、opensvcサービス設定ファイルのnodes
セクションにDEFAULT
パラメータを設定するだけです。
server1
をプライマリとして、server2
をセカンダリとして設定するには、nodes=server1 server2
をsvcmgr -s mydrbdsvc set --kw DEFAULT.nodes="server1 server2"
コマンドを使用して設定します。
server1
の起動時にのみサービスを開始する場合は、orchestrate=start
コマンドを使用してsvcmgr -s mydrbdsvc set --kw DEFAULT.orchestrate=start
パラメータを設定します
サービスを高可用性モード(ノード間の自動フェイルオーバー)でのみオーケストレーションする場合は、orchestrate=ha
コマンドを使用してsvcmgr -s mydrbdsvc set --kw DEFAULT.orchestrate=ha
パラメーターを設定します
あるノードから別のノードにサービスを再配置するには、svcmgr -s mydrbdsvc switch
コマンドを使用できます
ここでアンパックすることはたくさんありますが、私は言うことから始めます:そのDRBDバージョンは古いです! 8.4.11にアップグレードするか(この執筆時点では2018年12月)、または9ブランチに移動する必要があります。しかし、あなたが尋ねている質問はあなたが使っているバージョンで解決することができます。
投稿の下部で提起した3つの質問を見てみましょう。
なし、理想的には。 DRBDデバイスを使用するには、まずプロモートする必要があります。 fstabは、自動昇格可能なDRBD-9ブロックデバイスでも最適なオプションではありません。ほとんどの場合、起動プロセスが正常に機能しないためです。ただし、技術的には多くの注意事項があります。
そのようにしないでください。 Debianはsystemdを使用しており、DRBDにはsystemdユニットファイルがあります。クラスターマネージャーを使用している場合を除き、これを使用する必要があります。したがって、Pacemakerクラスターリソースマネージャーがない場合は、# sytemctl enable drbd
などを発行して、ブート時に起動するようにする必要があります。または、# systemctl start drbd
を使用して、停止したサービスを開始します。最も一般的なコマンドは、開始、停止、再起動、有効化、無効化です。
DRBDにはリーダー選挙の概念がないからです。外部システムはDRBDリソースをプライマリに昇格する必要があり、同時に存在できるプライマリは1つだけです。これを行う方法はたくさんあります。
# drbdadm primary <resource>
を使用してリソースを「手動で」昇格させ、そこからマウントすることができますが、それは避けたいことです。 DRBDは、バージョン9で「自動昇格」できます。これにより、ブロックデバイスを開いてアクセスしようとすると、リソースが自動的に昇格します(ファイルシステムマウントやボリュームグループのアクティブ化など)。ただし、実行中のバージョンではそれができません。 (アップグレード?これは可能性がありますで十分です)。 OR有限状態のリーダー選出システムを使用して、プロモーションアクションを制御し、DRBDとそれがサポートするアプリケーションスタックの両方の状態を確認できます。それがPacemakerです。
あなた欲しいペースメーカー、私は約束します。ペースメーカーはそれほど難しくありませんが、非常に大きいです。あなたはあなたが望むものを達成するためにそれの多くを学ぶ必要はないでしょう。あなたは多くの時間とエネルギーを費やして、太陽の下での失敗に抵抗する「完璧な」クラスターを作ることができ、その努力は報われるでしょう。それは良いシステムです。
Corosync/Pacemaker、DRBD-9.xまたはDRBD-8.4.xの最新版の組み合わせ、およびその上にあるものは何でも自動的に必要なものを実現します。これを行う方法を詳しく説明したドキュメントがたくさんあります。最新のものは次のとおりです。
https://docs.linbit.com/docs/users-guide-9.0/#ch-pacemaker
時間があれば、ガイド全体を読むことをお勧めします。 DRBDは過去数年間で深刻な進化を遂げています。