翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
前提条件とクラスターのセットアップ
このセクションでは、高可用性チュートリアルのインフラストラクチャを設定します。セキュリティグループの作成、キーペアの作成、Amazon EC2 インスタンスの起動、Pacemaker と DRBD のインストール、クラスターの作成、インスタンス間のブロックレベルのレプリケーションの設定を行います。
セキュリティグループの作成と設定
クラスターインスタンス間のすべてのトラフィックを許可するセキュリティグループを作成します。このチュートリアルでは、すべてのポートを開いてセットアップを簡素化します。このステップには VPC が必要です。持っていない場合は、「VPC の作成」を参照してください。
コンソール
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/
を開いてください。 -
ナビゲーションペインで、セキュリティグループを選択し、セキュリティグループの作成を選択します。
-
名前 ( など
pacemaker-cluster-sg) と説明を入力します。 -
VPC を選択します。
-
[セキュリティグループの作成] を選択してください。
-
作成後、新しいセキュリティグループを選択し、そのインバウンドルールを編集します。[ルールを追加] を選択してください。Type をすべてのトラフィックに設定し、Source をセキュリティグループ自身の ID に設定します。これにより、このセキュリティグループのインスタンス間のすべてのトラフィックが許可されます。
-
SSH アクセスの 2 番目のインバウンドルールを追加します。Type を SSH に設定し、Source を My IP に設定します。
AWS Command Line Interface
-
セキュリティグループを作成します。
aws ec2 create-security-group \ --group-name pacemaker-cluster-sg \ --description "Security group for Pacemaker HA cluster" \ --vpc-idyour-vpc-id出力
GroupIdの を書き留めます (例:sg-0123456789abcdef0)。 -
インバウンドルールを追加して、同じセキュリティグループ内のインスタンスからのすべてのトラフィックを許可します。
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol all \ --source-groupsecurity-group-id -
IP アドレスからの SSH アクセスを許可するインバウンドルールを追加します。
aws ec2 authorize-security-group-ingress \ --group-idsecurity-group-id\ --protocol tcp \ --port 22 \ --cidryour-ip/32
キーペアを作成する
すべてのインスタンスへの SSH アクセスに使用するキーペアを作成します。このチュートリアルでは、すべてのインスタンスに同じキーペアを使用します。
コンソール
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/
を開いてください。 -
ナビゲーションペインで、キーペアを選択し、キーペアの作成を選択します。
-
名前を入力します (例:
pacemaker-key)。 -
キーペアタイプとして RSA を選択し、ファイル形式として .pem を選択します。
-
[キーペアの作成] を選択してください。プライベートキーファイルは自動的にダウンロードされます。
警告
プライベートキーファイル (.pem) を安全な場所に保存します。再度ダウンロードすることはできません。インスタンスに SSH するには、このファイルが必要です。
AWS Command Line Interface
-
キーペアを作成します。
aws ec2 create-key-pair \ --key-namekey-name\ --query 'KeyMaterial' \ --output text > pacemaker-key.pem -
プライベートキーファイルに正しいアクセス許可を設定します。
chmod 400 pacemaker-key.pem
EC2 インスタンスを起動する
作成したセキュリティグループで 2 つの Ubuntu Amazon EC2 インスタンスを起動します。このチュートリアルでは、小さなインスタンスタイプ ( などt3.small) で十分です。
コンソール
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/
を開いてください。 -
[Launch Instances] (インスタンスの起動) を選択してください。
-
インスタンスの名前を入力します (例:
pacemaker-instance-1)。 -
アプリケーションイメージと OS イメージで Ubuntu を検索し、Ubuntu Server AMI (Ubuntu Server 24.04 LTS など) を選択します。
-
インスタンスタイプで、t3.small を選択します。
-
キーペアで、前に作成したキーを選択します。
-
ネットワーク設定で編集を選択し、VPC とサブネットを選択し、ファイアウォール (セキュリティグループ) で既存のセキュリティグループを選択を選択し、 を選択します
pacemaker-cluster-sg。 -
[インスタンスを起動] を選択します。
-
追加のインスタンス ( など) ごとに繰り返します
pacemaker-instance-2。すべてのインスタンスが同じ VPC とセキュリティグループにあることを確認します。
AWS Command Line Interface
-
インスタンスを起動します。
aws ec2 run-instances \ --image-idubuntu-ami-id\ --instance-type t3.small \ --key-namekey-name\ --security-group-idssecurity-group-id\ --subnet-idsubnet-id\ --count 1 \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=pacemaker-instance-1}]'2 番目のインスタンス
Value=pacemaker-instance-2に対して と を繰り返します。
クラスター設定には、各インスタンスのプライベート IP アドレスが必要です。
-
コンソール: Amazon EC2 コンソールでインスタンスを選択し、詳細タブでプライベート IPv4 アドレスを見つけます。
-
AWS Command Line Interface:
aws ec2 describe-instances \ --filters "Name=tag:Name,Values=pacemaker-instance-*" \ --query "Reservations[*].Instances[*].[Tags[?Key=='Name'].Value|[0],PrivateIpAddress]" \ --output table
Pacemaker ユーティリティをインストールする
各インスタンスに SSH 接続し、Pacemaker ユーティリティをインストールします。
ssh -i pacemaker-key.pem ubuntu@instance-public-ip
sudo apt update sudo apt install -y pacemaker pcs resource-agents-extra resource-agents-common resource-agents-base
ネットワーク通信を設定する
-
インスタンス間の通信をテストします。送信先インスタンスで、次のコマンドを実行して、送信元インスタンスから ping をリッスンします。
sudo tcpdump hostsource-instance-private-ipソースインスタンスで、次のコマンドを実行して、送信先インスタンスに ping を実行します。
ping -c 4destination-instance-private-ip両側に ping レスポンスが表示されます。そうでない場合は、セキュリティグループがインスタンス間のすべてのトラフィックを許可していることを確認します。
-
cloud-init ホスト名管理を無効にします。Ubuntu Amazon EC2 インスタンスでは、cloud-init は再起動時にホスト名と
/etc/hosts変更を元に戻すことができます。これを防ぐには、各インスタンスでこれを実行します。sudo bash -c 'cat > /etc/cloud/cloud.cfg.d/99-preserve-hostconfig.cfg <<EOF preserve_hostname: true manage_etc_hosts: false EOF' -
各インスタンスにホスト名を設定します。Pacemaker はホスト名を使用してクラスターインスタンスを識別します。
インスタンス 1 の場合:
sudo hostnamectl set-hostname instance1インスタンス 2 の場合:
sudo hostnamectl set-hostname instance2 -
を設定します
/etc/hosts。各インスタンスで、プライベート IP とホスト名のペアを に追加します/etc/hosts。これにより、インスタンスはホスト名で相互に解決できます。sudo tee -a /etc/hosts <<EOFinstance1-private-ipinstance1instance2-private-ipinstance2 EOF
Pacemaker クラスターを作成する
-
各インスタンスで pcs デーモンを起動します。
sudo systemctl enable pcsd.service sudo systemctl start pcsd.service -
hacluster パスワードを設定します。
haclusterユーザーは、pcsパッケージのインストール時に自動的に作成されるシステムアカウントです。Pacemaker は、インスタンス間のクラスター認証にこのアカウントを使用します。各インスタンスで同じパスワードを設定します。sudo passwd hacluster -
PCS ホストを承認します。相互にクラスターインスタンスを承認します。各インスタンスでこれを実行します。
sudo pcs host auth instance1 instance2haclusterユーザー名とパスワードの入力を求められます。 -
クラスターをセットアップします。このコマンドは 1 つのインスタンスでのみ実行します。
--forceフラグは、デバイス上の既存のクラスターを破棄します。sudo pcs cluster setup my-gg-cluster instance1 instance2 --force -
クラスターを起動します。このコマンドは 1 つのインスタンスでのみ実行します。
sudo pcs cluster start --all sudo pcs cluster enable --all -
いずれかのインスタンスのクラスターステータスを確認します。
sudo pcs status
DRBD のセットアップ
DRBD
-
EBS ボリュームを作成してアタッチします。インスタンスごとに EBS ボリュームを作成します。ボリュームは、インスタンスと同じアベイラビリティーゾーンにある必要があります。
コンソール
-
Amazon EC2 コンソールの https://console.aws.amazon.com/ec2/
を開いてください。 -
ナビゲーションペインで、ボリュームを選択し、ボリュームの作成を選択します。
-
ボリュームタイプを gp3、サイズを 8 GiB、アベイラビリティーゾーンをインスタンスと同じゾーンに設定します。
-
[Create volume] (ボリュームの作成) を選択します。
-
新しいボリュームを選択し、アクション > ボリュームのアタッチを選択し、ターゲットインスタンスを選択し、デバイス名を に設定し
/dev/xvdbz、ボリュームのアタッチを選択します。 -
インスタンスごとに繰り返します。
AWS Command Line Interface
-
インスタンスと同じアベイラビリティーゾーンにボリュームを作成します。
aws ec2 create-volume \ --volume-type gp3 \ --size 8 \ --availability-zoneinstance-availability-zone出力
VolumeIdの を書き留めます。 -
ボリュームをインスタンスにアタッチします。
aws ec2 attach-volume \ --volume-idvolume-id\ --instance-idinstance-id\ --device /dev/xvdbzインスタンスごとに繰り返します。
-
-
ボリュームを確認します。各インスタンスに SSH 接続し、ブロックデバイスを一覧表示してボリュームがアタッチされていることを確認します。
lsblkなどの Nitro ベースのインスタンスタイプでは
t3.small、ボリュームは ではなく NVMe デバイス ( など/dev/nvme1n1) として表示されます/dev/xvdbz。lsblkを使用して実際のデバイス名を識別し、その名前を DRBD 設定で使用します。 -
各インスタンスに DRBD ユーティリティをインストールします。
sudo apt install -y drbd-utils -
DRBD リソースを設定します。両方のインスタンスに DRBD リソース設定ディレクトリと ファイルを作成します。
sudo mkdir -p /etc/drbd.d sudo vi /etc/drbd.d/greengrass.res次の設定を追加します。ホスト名と IP アドレスを値に置き換えます。
resource greengrass { protocol C; on instance1 { device /dev/drbd0; disk /dev/instance1-device-name; addressinstance1-private-ip:7788; meta-disk internal; } on instance2 { device /dev/drbd0; disk /dev/instance2-device-name; addressinstance2-private-ip:7788; meta-disk internal; } } -
DRBD リソースを作成して起動します。両方のインスタンスで を実行します。
sudo drbdadm create-md greengrass sudo drbdadm up greengrassEBS ボリュームデバイス (
xvdbzや などnvme1n1) の下lsblkdrbd0に表示される を で確認します。 -
プライマリインスタンスを設定します。instance1 で次のコマンドを強制的にプライマリとして実行し、同期を待ちます。
sudo drbdadm -- --overwrite-data-of-peer primary greengrass sudo drbdadm status両方のインスタンスがディスクの状態
UpToDateを表示するまで待ちます。同期されると、他のすべてのインスタンスがスタンバイインスタンスになります。 -
DRBD デバイスをフォーマットしてマウントします。
プライマリインスタンスでのみ、DRBD デバイスをフォーマットします。
sudo mkfs.ext4 /dev/drbd0すべてのインスタンスで、マウントディレクトリを作成します。
sudo mkdir -p /greengrass/v2プライマリインスタンスにのみ、DRBD デバイスをマウントします。
sudo mount /dev/drbd0 /greengrass/v2 -
DRBD 同期ステータスを確認します。
sudo drbdadm status mount | grep 'drbd'