IPV 名前付きディスクを利用した高可用性構成の構築について¶
警告
構築ガイド¶
目次
- IPV 名前付きディスクを利用した高可用性構成の構築について
構築手順¶
1. WindowsServer(WSFC:Windows Server Failover Cluster)構築方法¶
警告
注釈
仮想サーバ名 | IPアドレス | ディスクサイズ | OS |
---|---|---|---|
t-dev-ad01 | vNIC0:172.16.40.30/24
vNIC1:192.168.40.4/24
|
80GB | Windows Server 2019 DataCenter |
t-dev-wsfc01 | vNIC0:172.16.40.31/24
vNIC1:192.168.40.3/24
|
80GB | Windows Server 2019 DataCenter |
t-dev-wsfc02 | vNIC0:172.16.40.32/24
vNIC1:192.168.40.2/24
|
80GB | Windows Server 2019 DataCenter |
t-dev-wsfc03 | vNIC0:172.16.40.33/24
vNIC1:192.168.40.1/24
|
80GB | Windows Server 2019 DataCenter |
仮想ネットワーク名 | 種別 | IPアドレス | 用途 |
---|---|---|---|
t-dev-wsfc-172.16.40.0 | OvDCネットワーク[隔離] | 172.16.40.0/24
GW:172.16.40.254
|
フロントエンド用ネットワーク |
t-dev-iscsi-192.168.40.0 | vAppネットワーク | 192.168.40.0/24
GW:192.168.40.254 ※仮想マシン間通信では使用しません
|
iSCSI用ネットワーク |
1.1. 前提条件¶
1.2. 事前準備¶
1.3. 名前付きディスク作成¶
1.3.1. 名前付きディスク作成¶
環境の準備が整いましたのでHAクラスタで使用する共有ディスク(名前付きディスク)を作成していきます。 |
左部ペインメニューより[ストレージ]->[名前付きディスク] をクリックします。
- [新規]をクリックします。下表の名前付きディスクの作成を行います。
No | 名前 | 説明 | ストレージポリシー | IOPS | ディスクのサイズ | バスタイプ | バスサブタイプ |
---|---|---|---|---|---|---|---|
1 | t-dev-wsfc-quorum | 共有ディスク_Quorum用 | ストレージポリシー:******(VDCのデフォルト) ※環境によりストレージポリシー名は異なります。 | 該当なし(入力できません) | 50GB | 1.SCSI(標準)
|
2.LSI Logic SAS SCSIコントローラー
|
2 | t-dev-wsfc-data | 共有ディスク_データ用 | ストレージポリシー:******(VDCのデフォルト) ※環境によりストレージポリシー名は異なります。 | 該当なし(入力できません) | 100GB | 1.SCSI(標準)
|
2.LSI Logic SAS SCSIコントローラー
|
注釈
- [保存] をクリックします。
1.3.2. 名前付きディスク接続¶
警告
注釈
- 左部ペインメニューより[ストレージ]->[名前付きディスク] をクリックします。編集対象の名前付きディスクにチェックを入れ、上部メニュー[接続]をクリックします。
[名前付きディスクの接続]ダイアログが表示され仮想マシン ドロップダウンメニューから名前付きディスクを接続する仮想マシンを選択します。
- [適用] をクリックします。正常に処理が完了後、リスト内対象名前付きディスクの「接続された仮想マシンの数」が増加することを確認します。
- [vApp]内名前付きディスク接続仮想マシンをクリックします。[ハードウェア]->[ハードディスク]に名前付きディスクが表示されていることを確認します。
1.4. iSCSIターゲットサーバ導入(対象仮想マシン名:t-dev-wsfc03)¶
- 仮想マシンに"administrator"アカウントにてログイン
- [サーバ マネージャー]が起動することを確認
- サーバマネージャー上部メニュー[ツール]->[コンピュータの管理]を選択
- ツリーメニュー内[ストレージ]->[ディスクの管理]を選択
- [ディスクの管理]内、下部に接続した『名前付きディスク』分の未初期化ディスクが存在することを確認
- 対象ディスクを選択しメニューより"オンライン"を実施
- 対象ディスクの"オンライン"化を行った後に再度ディスクを選択し"ディスクの初期化"を行います。
- ディスクの初期化が完了した後にボリュームを選択しディスクフォーマットを実施
- 仮想マシンに"administrator"アカウントにてログイン
- [サーバ マネージャー]が起動することを確認
- サーバマネージャー上部メニュー[管理]->[役割と機能の追加]を選択
- [インストールの種類]->[役割ベースまたは機能ベースのインストール]を選択し[次へ]をクリック
- [対象サーバの選択]->[サーバプールからサーバ選択]でインストールする対象サーバが選択されていることを確認し[次へ]をクリック
- [サーバの役割選択]->[ファイルサービスと記憶域サービス]内より[ファイルサービスおよびiSCSIサービス]->[iSCSIターゲットサーバ]にチェックをいれます
- [ファイルサービスおよびiSCSIサービス]->[iSCSIターゲットサーバ]にチェックが入っていることを確認し[次へ]をクリック
- [機能の選択]では何もせずに[次へ]をクリック
- [インストールオプションの確認]にてインストール内容を確認し[インストール]をクリック
- [インストールの進行状況]->[機能のインストール]にて"構成が必要です。(ホスト名)でインストールが正常に完了しました"と表示されることを確認
1.4.1. iSCSI仮想ディスクの作成(対象仮想マシン名:t-dev-wsfc03)¶
- サーバマネージャー左メニューより[ファイルサービスと記憶域サービス]->[iSCSI]を選択
- "iSCSI仮想ディスクを作成するには、新しいiSCSI仮想ディスクウィザードを開始してください。"をクリック
- [新しいiSCSI仮想ディスクウィザード]->[[iSCSI仮想ディスクの場所を選択]にて『名前付きディスク』をフォーマットしたボリュームを選択し[次へ]をクリック
- [iSCSI仮想ディスク名の指定]にてiSCSI仮想ディスクの名前および必要に応じて説明を設定し[次へ]をクリック
- [iSCSI仮想ディスクのサイズを指定]にて利用するディスクサイズおよびボリューム種別を選択し[次へ]をクリック
- [iSCSIターゲットの割り当て]にて"新しいiSCSIターゲット"を指定し[次へ]をクリック※初回のみ実施します2回目以降にてターゲットを同一にする場合は作成済みターゲットを指定します
- [ターゲット名の指定]にてiSCSIターゲットの名前および必要に応じて説明を設定し[次へ]をクリック
- [アクセスサーバの指定]にてiSCSIイニシエーターを指定するため[追加]をクリック[イニシエーターIDの追加]にて下部の"選択した種類の値の入力"にて以下設定を入力し[OK]をクリック・種類(T):IPアドレス・値(V):SCSIイニシエーターサーバのIPアドレスを入力※イニシエーターサーバのIPアドレスを利用台数分入力します。
- [認証を有効にする]では何も設定せずに[次へ]をクリック※CHAP認証等をご利用の場合は設定を行います
- [設定内容の確認]にて設定項目に不備がない事を確認し[作成]をクリック
- [結果の表示]にiSCSI仮想ディスクならびにiSCSIターゲットの作成結果が"完了"であることを確認し[閉じる]をクリック
- サーバマネージャー->[ファイルサービスと記憶域サービス]->[iSCSI]に作成したiSCSI仮想ディスクが表示されていることを確認
1.4.2. iSCSIイニシエーター構築(対象仮想マシン名:t-dev-wsfc01/02)¶
注釈
- サーバマネージャー上部メニューより[ツール]->[iSCSIイニシエーター]を選択
- [iSCSIイニシエーターのプロパティ]->[ターゲット]タブ内の"ターゲット"欄に「iSCSIターゲットサーバのIPアドレス」を入力し[クイック接続]をクリック
- [クイック接続]ダイアログが起動し"検出されたターゲット"にiSCSIターゲットサーバが表示されたことを確認し[完了]をクリック
- [iSCSIイニシエーターのプロパティ]->[ターゲット]タブ内の[接続]をクリック
- [ターゲットへの接続]ダイアログにて必要なチェックを行い[OK]をクリック※CHAP認証を利用している場合は[詳細設定]よりCHAP認証を有効化し認証情報の入力を行います[全般]タブ内"CHAPログオンを有効にする"にチェックを入れ"名前"、"ターゲットシークレット"欄にiSCSIターゲットサーバにて設定した認証情報を入力します
- [ターゲット名の指定]にてiSCSIターゲットの名前および必要に応じて説明を設定し[次へ]をクリック
- [アクセスサーバの指定]にてiSCSIイニシエーターを指定するため[追加]をクリック[イニシエーターIDの追加]にて下部の"選択した種類の値の入力"にて以下設定を入力し[OK]をクリック・種類(T):IPアドレス・値(V):ターゲットサーバのIPアドレスを入力
- [認証を有効にする]では何も設定せずに[次へ]をクリック※CHAP認証等をご利用の場合は設定を行います
- サーバマネージャー上部メニュー[ツール]->[コンピュータの管理]->[ディスクの管理]へ移動
- iSCSIターゲットサーバが提供するiSCSI仮想ディスク分のオフラインディスクが表示されていることを確認
1.4.3. WSFC用共有ディスクの構築(対象仮想マシン名:t-dev-wsfc01/02)¶
- 仮想マシンに"administrator"アカウントにてログイン
- [サーバ マネージャー]が起動することを確認
- サーバマネージャー上部メニュー[ツール]->[コンピュータの管理]を選択
- ツリーメニュー内[ストレージ]->[ディスクの管理]を選択
- [ディスクの管理]内、下部に接続した『iSCSIターゲットにて作成したiSCSI仮想ディスク』分の未初期化ディスクが存在することを確認
- 対象ディスクを選択しメニューより"オンライン"を実施
- 対象ディスクの"オンライン"化を行った後に再度ディスクを選択し"ディスクの初期化"を行います。
- ディスクの初期化が完了した後にボリュームを選択しディスクフォーマットを実施
1.4.4. WSFC構築(対象仮想マシン名:t-dev-wsfc01/02)¶
仮想マシンに"administrator"アカウントにてログイン
[サーバ マネージャー]が起動することを確認
サーバマネージャー上部メニュー[管理]->[役割と機能の追加]を選択
[インストールの種類]->[役割ベースまたは機能ベースのインストール]を選択し[次へ]をクリック
[対象サーバの選択]->[サーバプールからサーバ選択]でインストールする対象サーバが選択されていることを確認し[次へ]をクリック
[サーバの役割選択]では何もせずに[次へ]をクリック
- [機能の選択]にて"Failover Clustering"にチェックを入れ、サブダイアログにて[機能の追加]をクリック※サブダイアログ内"管理ツールを含める(存在する場合)"に標準でチェックされていますが不要の場合はチェックを外して下さい
[機能の選択]にて"Failover Clustering"にチェックがついていることを確認し[次へ]をクリック
[インストールオプションの確認]にてインストール内容を確認し[インストール]をクリック
[インストールの進行状況]->[機能のインストール]にて"構成が必要です。(ホスト名)でインストールが正常に完了しました"と表示されることを確認
- [スタート]->[Windows 管理ツール]->[フェールオーバークラスターマネージャー]をクリック[フェールオーバークラスタマネージャー]が起動することを確認
- クラスタ作成の前に構成の検証を実施します[フェールオーバークラスタマネージャー]右側メニュー[操作]->[構成の検証]をクリック
- [構成の検証ウィザード]が起動することを確認[開始する前に]にて[次へ]をクリック
- [サーバまたはクラスターの選択]内"名前の入力"欄にWSFC構成対象の『全ての仮想マシン名をFQDN』にて入力し[次へ]をクリック※iSCSIターゲットサーバは含まれません。入力FQDN例)t-dev-wsfc01.test.example.org
[テストのオプション]にて"すべてのテストを実行する"を選択し[次へ]をクリック
[確認]にてテスト対象となるWSFC構成対象仮想マシンが全て存在することを確認し[次へ]をクリック
- 構成の検証が実施され実施結果が[概要]に表示されますエラーが表示されていないことを確認し[完了]をクリック
[フェールオーバークラスタマネージャー]右側メニュー[操作]->[クラスタの作成]をクリック
[開始する前に]にて[次へ]をクリック
[サーバの選択]にてWSFC構成対象の『全ての仮想マシン名をFQDN』にて入力し[次へ]をクリック
[クラスタ管理用のアクセスポイント]にて"クラスタ名"を設定し、下部のネットワークアドレス内にVIP用のIPアドレスを設定し[次へ]をクリック
- [確認]にて構成内容を確認し、下部の"使用可能な記憶域を全てクラスタに追加する"にチェックが付いていることを確認し[次へ]をクリック[次へ]をクリック後、クラスタ作成処理が実行されます
クラスタ作成処理が完了後、[概要]が表示されます
[概要]にて作成されたクラスタ構成設定を確認し問題がなければ[完了]をクリック
2. Linux系サーバでの共有ディスク型可用性クラスタ構成構築方法¶
仮想サーバ名 | IPアドレス | ディスクサイズ | OS |
---|---|---|---|
t-dev-ha01 | vNIC0:172.16.10.20/24
vNIC1:192.168.1.20/24
|
80GB | Ubuntu 21.04 LTS |
t-dev-ha02 | vNIC0:172.16.10.21/24
vNIC1:192.168.1.21/24
|
80GB | Ubuntu 21.04 LTS |
注釈
2.1. 前提条件¶
2.2. 事前準備¶
注釈
2.3. 初期設定¶
2.3.2. 事前準備(vApp作成、展開用仮想マシン構築)¶
項目 | 設定内容 |
---|---|
名前 | lha-stack |
説明 | 未記載 |
パワーオン | チェックなし |
項目 | 設定内容 |
---|---|
タイプ | 組織VDCネットワーク |
選択OvDCネットワーク名 | t-dev-mgmt-172.16.10.0 |
名前 | ゲートウェイCIDR | 用途 |
---|---|---|
t-dev-ha | 192.168.1.254/24 | ハートビート用ネットワーク |
項目 | 設定内容 |
---|---|
名前 | t-dev-ha01 |
説明 | 未記載 |
タイプ | テンプレートから |
テンプレート | Ubuntu-21.0.4-SV ※tutorial-catalog |
ストレージ | |
コンピュート | 項目なし
|
NIC | 項目なし※別途、仮想マシン構成設定にて追加するため、空欄となります。
|
カスタムプロパティ | 項目なし
|
エンドユーザー使用許諾契約書(EULA) | 項目なし
|
仮想マシンNIC No | 設定ネットワークインターフェイス | 接続OvDCネットワーク | IPモード | IPアドレス |
---|---|---|---|---|
0 | LAN | t-dev-mgmt-172.16.10.0 | 固定 - 手動 | 172.16.10.20 |
1 | LAN | t-dev-ha | 固定 - 手動 | 192.168.1.20 |
仮想CPU | ソケット当たりのコア数 | メモリ(GB) | メモリホットアド |
---|---|---|---|
4 | 1 | 8 | チェックなし(無効) |
サイズ |
---|
100 |
## ホスト名の設定
hostnamectl set-hostname {ホスト名}
## 時刻設定変更
timedatectl set-timezone Asia/Tokyo
timedatectl
#出力例
Local Time: {曜日} yyyy-mm-dd HH:MM:ss JST
Universal Time: {曜日} yyyy-mm-dd HH:MM:ss UTC
RTC Time: {曜日} yyyy-mm-dd HH:MM:ss
Time zone: Asia/Tokyo (JST, +09:00)
System clock syncchronized: yes
NTP services: active
RTC in local TZ: no
## rootパスワードの変更
passwd root
New passwd: {新規パスワード}
Retype new password: {新規パスワード}
## ネットワーク設定
# ネットワーク設定情報確認
ip addr show
#
#出力結果
# 0: lo: ~
# 1: ens{No}: ~ ← ens{No}が仮想マシンに追加したNICのデバイス名となります。
#
sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/01-netcfg.yaml
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.org
sudo vi /etc/netplan/01-netcfg.yaml
# vi 編集内容
# This file is generated from information provided by the datasource.
## 中略
# network: {config: disabled}
network:
ethernets:
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [172.16.10.xxx/24]
gateway4: 172.16.10.250 # 内/外境界仮想ファイアウォールがゲートウェイとなります。
nameservers:
addresses: [172.16.10.10] # t-mgmt-ad01がDNSとなります。
dhcp6: no
ens{xxx}: # デバイス名は"ip addr show"コマンドにて確認したものとなります。
dhcp4: no
addresses: [192.168.1.20/24]
dhcp6: no
version: 2
# netplan設定内容を反映
netplan apply
ip addr show
ping 172.16.10.1
# packet lossが0であることを確認(ActiveDirectory、接続OvDCネットワークとの疎通確認)
ping 172.16.10.250
# packet lossが0であることを確認(外部接続OvDCネットワークとの疎通確認)
ping www.google.co.jp
# packet lossが0であることを確認(外部DNSへの名前解決確認)
注釈
注釈
2.4. 名前付きディスク作成¶
2.4.1. 名前付きディスク作成¶
左部ペインメニューより[ストレージ]->[名前付きディスク] をクリックします。
- [新規]をクリックします。下表の名前付きディスクの作成を行います。
No | 名前 | 説明 | ストレージポリシー | IOPS | ディスクのサイズ | バスタイプ | バスサブタイプ |
---|---|---|---|---|---|---|---|
1 | t-dev-lha01 | 共有ディスクテスト用 | ストレージポリシー:******(VDCのデフォルト) ※環境によりストレージポリシー名は異なります。 | 該当なし(入力できません) | 100GB | 1.SCSI(標準)
|
2.準仮想化 SCSIコントローラー
|
2 | t-dev-lha02 | 共有ディスクテスト用 | ストレージポリシー:******(VDCのデフォルト) ※環境によりストレージポリシー名は異なります。 | 該当なし(入力できません) | 100GB | 1.SCSI(標準)
|
2.準仮想化 SCSIコントローラー
|
- [保存] をクリックします。
注釈
2.4.2. 名前付きディスク接続¶
- 左部ペインメニューより[ストレージ]->[名前付きディスク] をクリックします。編集対象の名前付きディスクにチェックを入れ、上部メニュー[接続]をクリックします。
[名前付きディスクの接続]ダイアログが表示され仮想マシン ドロップダウンメニューから名前付きディスクを接続する仮想マシンを選択します。
- [適用] をクリックします。正常に処理が完了後、リスト内対象名前付きディスクの「接続された仮想マシンの数」が増加することを確認します。
- [vApp]->[lha-stack]内名前付きディスク接続仮想マシンをクリックします。[ハードウェア]->[ハードディスク]に名前付きディスクが表示されていることを確認します。
2.5. 名前付きディスクマウント処理(Linux)¶
2.5.1. 名前付きディスク接続確認¶
# パーティションテーブル一覧表示する
fdisk -l
#出力例
Disk /dev/sda: xxx GiB ~ 中略 ~
## 追加ディスクが表示されることを確認して下さい
Disk /dev/sd{x}: xxx GiB ~ 中略 ~
# /dev/sdbに対しパーティションを作成する
fdisk /dev/sdb
#出力例
Welcome to fdisk (util-linux 2.36.1). ~ 中略 ~
## "n"を入力します
Command (m for help): n
## "p"を入力します
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
## "1"を入力します
Partition number (1-4, default 1): 1
## 始点・終点シリンダを指定します (default 値を入力します)
First sector (2048-209715199, default 2048): 2048
Last sector, +sectors or +size{K,M,G,T,P} (2048-209715199, default 209715199): 209715199
Created a new partition 1 of type 'Linux' and of size 100 GiB.
## "p"を入力しデバイス確認を行います
Command (m for help): p
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 209715199 209713152 100G 83 Linux
## "w"を入力しパーティションテーブルをディスクに書き込みます(本コマンドにて自動終了します)
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
## パーティション情報を更新します
partprobe
## パーティションのフォーマット処理を行います
mkfs -t ext4 /dev/sdb1
~ 中略 ~
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done
## マウント用のディレクトリを作成します
mkdir /add_share
## 追加したディスク(/dev/sdb1)のUUIDを確認します
blkid
~ 中略 ~
/dev/sdb1: UUID="a8fe6156-74b8-407e-b774-9ddaf1a7548d" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="8852fae9-01"
## 「/etc/fstab」を編集し自動マウント設定を行ないます(再起動した場合も自動的にマウントするようになります)
vi /etc/fstab
~ 中略 ~
### 以下を最終行に追加
UUID=a8fe6156-74b8-407e-b774-9ddaf1a7548d /add_share ext4 defaults 1 2
## ディレクトリへマウントを行います
mount /dev/sdb1 /add_share
## 以下コマンドにてマウントしたディスクが認識されていることを確認します
df -h
~ 中略 ~
/dev/sdb1 98G 61M 93G 1% /add_share
2.6. 仮想マシンへの高可用性パッケージ導入、設定¶
注釈
No | 構成名 | 機能概要 |
---|---|---|
1 | DRBD | ネットワークを通じてハードディスク(ブロックデバイス)をリアルタイムに複製(同時複製)する機能を提供(多ノード対応可能:最大32ノード) |
2 | Pacemaker | クラスタ構成におけるリソース制御機能(サービス、IPアドレス、データへのアクセス...etc※CRM(Cluster Resource Management))を提供 |
3 | Corosync | クラスタ構成におけるクラスタ制御機能を提供(多ノード対応:推奨最大16ノード/理論最大32ノード※制御対象監視リソースにより変動します) |
# パッケージの最新化を行います。
sudo apt update -y
sudo apt upgrade -y
# PacemakerおよびCorosyncパッケージ(PCS)を導入します。
sudo apt-get install pacemaker pcs fence-agents resource-agents
# パッケージ導入時に自動作成されたユーザー(hacluster)のパスワードを設定します。
sudo passwd hacluster
# PacemakerおよびCorosyncパッケージ(PCS)サービスの自動起動設定を行います。
sudo systemctl enable pcsd
sudo systemctl enable pacemaker
# 事前に/etc/hostsへHA用セグメントを追加します。
vi /etc/hosts
~ 中略 ~
192.168.1.20 node1 t-dev-ha01.local
192.168.1.21 node2 t-dev-ha02.local
### 公開鍵認証設定
# DRDBにて使用する公開鍵の作成と鍵交換処理を行います。※本作業は1台のみで実施
# 「ssh-keygen」の設定はパスフレーズ等なしで問題ありません。
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@ubuntuguest
The keys randomart image is:
+--[ RSA 3072]----+
|==X*+*=.= .o|
| o ..|
| = ..|
| = = o. |
| S B . .+ |
| o o o|
| . .. .E |
| =o . . |
| .o+o . |
| |
| |
+----[SHA256]-----+
# 生成ファイルのアクセス権を設定します。
chmod 700 .ssh
chmod 600 .ssh/id_rsa
chmod 600 .ssh/id_rsa.pub
chmod 600 .ssh/authorized_keys
### 公開鍵認証設定
# 事前準備としてssh設定の編集を行います。
vi /etc/ssh/sshd_config
## 最新のLinux SSH環境では標準で以下構文が無効化されています。
## その為、以下構文を有効化します。
PasswordAuthentication no ## この構文を「yes」にします。
PasswordAuthentication yes
# PermitRootLogin prohibit-password
PermitRootLogin yes # 追加
# 公開鍵のコピー処理を実施します。
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.xxx
### DRBD導入
## レポジトリ取得および情報の更新およびパッケージ導入を行います。
# リポジトリ情報の取得を行います。
add-apt-repository ppa:linbit/linbit-drbd9-stack
# ファイル内リポジトリ情報を編集します。
vi /etc/apt/sources.list.d/linbit-ubuntu-linbit-drbd9-stack-hirsute.list
deb http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu hirsute main ## このパラメータを下記に編集します。
deb https://ppa.launchpadcontent.net/linbit/linbit-drbd9-stack/ubuntu focal main
#deb-src http://ppa.launchpad.net/linbit/linbit-drbd9-stack/ubuntu hirsute main
# リポジトリ情報の更新をし、パッケージ導入を行います。
apt-get update
apt install -y drbd-utils drbd-dkms
注釈
2.6.1. DRBD設定¶
### DRBD設定
# DRBDの設定では「drbdadm」が使用するリソース構成パラメータファイルを作成します。
# 本工程は全仮想マシンで行います。
vi /etc/drbd.d/r0.res
# リソース構成を定義します。
# on {hostname}セクションは/etc/hostsに定義した名前であることを注意して下さい。
resource r0 {
device /dev/drbd0;
disk /dev/sdb1;
meta-disk internal;
on t-dev-ha01.local {
address 192.168.1.20:7789;
node-id 1;
}
on t-dev-ha01.local {
address 192.168.1.21:7789;
node-id 2;
}
}
# DRBDメタデータの初期化を実施します。
# ※本処理は実行時にDRBD構成を組む全ての仮想マシンで実施します。
drbdadm create-md {リソース名} # リソース構成ファイル内にて定義した名称を指定します。今回は「r0」となります。例:"resource {リソース名}"
#出力例
initializing activity log
initializing bitmap ( 3200 KB ) to all zero
Writing meta data ...
New drbd meta data block successfully created.
# リソースを起動します。
# 本処理はDRBD構成を組む全ての仮想マシンで実施します。
drbdadm up {リソース名}
# リソース確認を行います。
# デバイス状態の確認を行います。
drbdadm status {リソース名}
#出力例(Primary)
r0 role:Primary
disk:UpToDate
{2台目仮想マシンホスト名} connection:Connecting
#出力例(Secondary)
r0 role:Secondary
disk:Inconsistent
{primary 仮想マシンホスト名} connection:Connecting
# リソースを確認します。
cat /proc/drbd
#出力例
version: 9.1.7 (api:2/proto:110-121)
GIT-hash: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx build by root@{host名}, yyyy-mm-dd HH:MM:ss
Transports (api:18): tcp (9.1.7)
# デバイスの初回同期を実施します。
# 本作業はPrimaryとなる仮想マシンでのみ実施します。
drbdadm primary --force {リソース名}
# デバイス同期確認を行います。
drbdadm status {リソース名}
#出力例(Primary)
r0 role:Primary
disk:UpToDate
{2台目仮想マシンホスト名} connection:Connecting
#出力例(Secondary)
r0 role:Secondary
disk:Inconsistent
{primary 仮想マシンホスト名} role:Primary
replication:SyncTarget peer-disk:UpToDate done:10.61
### DRBD用ファイルシステム設定
# 本手順では「ext4」にてファイルシステムを構築します。
# LVMでの作成も可能です。
mkfs.ext4 /dev/drbd0
#出力例
Creating filesystem with ~中略~
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks: ~中略~
Allocating group tables: done
Writing inode tables: done
Creating journal ( xxxxxx blocks ): done
Writing superblocks and filesystem accounting information: done
# 同期確認
mkdir /mnt/drbd # 同期確認用のマウントポイントを作成します。※本作業は全仮想マシンで行います。
mount /dev/drbd0 /mnt/drbd
df /mnt/drbd
#出力例
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/drbd0 xxxxxxxxx xxxxx xxxxxxxx x% /mnt/drbd
# 同期テスト
echo test > /mnt/drbd/test.txt
umount /dev/drbd0
drbdadm secondary {リソース名}
# secondary側同期確認作業
drbdadm primary {リソース名}
mount /dev/drbd0 /mnt/drbd
ls /mnt/drbd
#出力例
lost+found test.txt # Primary側で作成したtest.txtが表示されることを確認します。
# DRBDサービスの自動起動設定
systemctl enable drbd
2.6.2. Pacemaker/Corosync設定¶
# PacemakerおよびCorosyncパッケージ(PCS)サービスの起動を行います。
sudo systemctl start pcsd
# Linuxクラスタ構成を定義します。
# 本処理はクラスタを構成するすべての仮想マシンにて実施します。
# ※pcsのバージョンが低い場合は"pcs cluster auth {host#1別名} {host#2別名}"となります。
pcs host auth {host#1別名} {host#2別名}
#出力例
username: hacluster # Pacemaker/Corosync導入時に自動生成されるユーザ
password: xxxxxxxx
~中略~
{host#1別名}: Authorized
{host#2別名}: Authorized
# クラスタセットアップ処理を実施します。
pcs cluster setup hacluster {host#1別名} {host#2別名} --force
#出力例
No Address specified for host '{host#1別名}', using '{host#1別名}'
No Address specified for host '{host#2別名}', using '{host#2別名}'
~中略~
Cluster has been successfully set up.
# クラスタを構成するすべての仮想マシンにて"pacemaker"を起動します。
systemctl start pacemaker
### pcs設定編集
## pcsコンフィグ書き出し
# PacemakerおよびCorosyncパッケージ(PCS)サービスの現行Configの確認を行います。
pcs config
# 現行Configの書き出しを行います。
pcs cluster cib {ファイル名}
## pcsリソース設定
# 仮想IP設定(リソース名:drbd_vip)
pcs -f {ファイル名} resource create drbd_vip ocf:heartbeat:IPaddr2 ip={仮想IPアドレス(xxx.xxx.xxx.xxx)} cidr_netmask={ネットマスク(xx)} nic="{ネットワークアダプタ(例:ens224)}" op monitor interval={インターバル期間(例:10s)}
# DRBDデバイス設定(リソース名:fs_drbd)
# ※DRBDリソースの昇格/降格はDRBD制御にて行う為、pcs制御のプロモーション制御は行いません。
pcs -f {ファイル名} resource create drbd_vip ocf:heartbeat:Filesystem device={DRBDデバイス(/dev/drbdx)} directory={マウントポイント(/mnt/drbd)} fstype={FSタイプ(ext4)} \
op start timeout={タイムアウト期間(例:60s)} on-fail={失敗した場合に実行する動作(例:restart 設定可能値:ignore/block/stop/restart/fence/standby)}
op stop timeout={タイムアウト期間(例:60s)} on-fail={失敗した場合に実行する動作(例:block 設定可能値:ignore/block/stop/restart/fence/standby)}
op monitor interval={インターバル期間(例:10s)} timeout={タイムアウト期間(例:60s)} on-fail={失敗した場合に実行する動作(例:restart 設定可能値:ignore/block/stop/restart/fence/standby)}
# リソースグループ化(グループ名:res_group)
pcs -f {ファイル名} resource group add res_group drbd_vip fs_drbd
## pcs設定の読込
pcs cluster cib-push {ファイル名}
No | 設定値 | 概要 |
---|---|---|
1 | s/sec | 秒 |
2 | ms/msec | ミリ秒 |
3 | us/usec | マイクロ秒 |
4 | m/min | 分 |
5 | h/hr | 時 |