2.12. 複数のアベイラビリティーゾーンへの AWS Aurora のデプロイ
シングルクラスターデプロイメントの構成要素であるデータベースとして AWS Aurora をデプロイします。
このトピックでは、特定の AWS リージョンにおける 1 つ以上のアベイラビリティーゾーンの障害に対応するために、複数のアベイラビリティーゾーンに PostgreSQL インスタンスの Aurora リージョンデプロイメントをデプロイする方法を説明します。
このデプロイメントは、シングルクラスターデプロイメントの概念 の章で説明されているセットアップで使用することを想定としています。このデプロイメントは、シングルクラスターデプロイメントの構成要素 の章で説明されている他の構成要素とともに使用してください。
以下のブループリントは、機能的に完全な最小限の例を示すためのものであり、通常のインストールに適したベースラインのパフォーマンスを実現します。ただし、お使いの環境、組織の標準、セキュリティーのベストプラクティスに合わせて変更する必要があります。
2.12.1. アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
Aurora データベースクラスターは、複数の Aurora データベースインスタンスで構成されます。1 つのインスタンスがプライマリーライターとして指定され、他のすべてのインスタンスがバックアップリーダーとして指定されます。アベイラビリティーゾーンに障害が発生した場合に高可用性を確保するために、Aurora では、シングル AWS リージョン内の複数のゾーンにデータベースインスタンスをデプロイできます。プライマリーデータベースインスタンスをホストしているアベイラビリティーゾーンで障害が発生した場合、Aurora は自動的に自己修復し、障害が発生していないアベイラビリティーゾーンのリーダーインスタンスを新しいライターインスタンスにプロモートします。
図2.1 Aurora の複数アベイラビリティーゾーンのデプロイメント
Aurora データベースが提供するセマンティクスの詳細は、AWS Aurora のドキュメント を参照してください。
このドキュメントは AWS のベストプラクティスに従い、インターネットに公開されないプライベート Aurora データベースを作成します。ROSA クラスターからデータベースにアクセスするには、データベースと ROSA クラスターの間にピアリング接続を確立 します。
2.12.2. 手順 リンクのコピーリンクがクリップボードにコピーされました!
次の手順には 2 つのセクションがあります。
- eu-west-1 に "keycloak-aurora" という名前の Aurora Multi-AZ データベースクラスターを作成します。
- ROSA クラスターと Aurora VPC の間にピアリング接続を作成し、ROSA クラスターにデプロイされたアプリケーションがデータベースとの接続を確立できるようにします。
2.12.2.1. Aurora データベースクラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
Aurora クラスターの VPC を作成します。
コマンド:
aws ec2 create-vpc \ --cidr-block 192.168.0.0/16 \ --tag-specifications "ResourceType=vpc, Tags=[{Key=AuroraCluster,Value=keycloak-aurora}]" \ --region eu-west-1aws ec2 create-vpc \ --cidr-block 192.168.0.0/16 \ --tag-specifications "ResourceType=vpc, Tags=[{Key=AuroraCluster,Value=keycloak-aurora}]" \1 --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- VPC を簡単に取得できるように、Aurora クラスターの名前を含むオプションのタグを追加します。
出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しく作成した VPC の
VpcIdを使用して、Aurora をデプロイする各アベイラビリティーゾーンのサブネットを作成します。注記各アベイラビリティーゾーンに指定した cidr ブロック範囲が重複しないようにしてください。
ゾーン A
コマンド:
aws ec2 create-subnet \ --availability-zone "eu-west-1a" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --cidr-block 192.168.0.0/19 \ --region eu-west-1
aws ec2 create-subnet \ --availability-zone "eu-west-1a" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --cidr-block 192.168.0.0/19 \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゾーン B
コマンド:
aws ec2 create-subnet \ --availability-zone "eu-west-1b" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --cidr-block 192.168.32.0/19 \ --region eu-west-1
aws ec2 create-subnet \ --availability-zone "eu-west-1b" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --cidr-block 192.168.32.0/19 \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Aurora VPC ルートテーブルの ID を取得します。
コマンド:
aws ec2 describe-route-tables \ --filters Name=vpc-id,Values=vpc-0b40bd7c59dbe4277 \ --region eu-west-1
aws ec2 describe-route-tables \ --filters Name=vpc-id,Values=vpc-0b40bd7c59dbe4277 \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aurora VPC ルートテーブルを各アベイラビリティーゾーンのサブネットに関連付けます。
ゾーン A
コマンド:
aws ec2 associate-route-table \ --route-table-id rtb-04a644ad3cd7de351 \ --subnet-id subnet-0d491a1a798aa878d \ --region eu-west-1
aws ec2 associate-route-table \ --route-table-id rtb-04a644ad3cd7de351 \ --subnet-id subnet-0d491a1a798aa878d \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゾーン B
コマンド:
aws ec2 associate-route-table \ --route-table-id rtb-04a644ad3cd7de351 \ --subnet-id subnet-057181b1e3728530e \ --region eu-west-1
aws ec2 associate-route-table \ --route-table-id rtb-04a644ad3cd7de351 \ --subnet-id subnet-057181b1e3728530e \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Aurora サブネットグループを作成します。
コマンド:
aws rds create-db-subnet-group \ --db-subnet-group-name keycloak-aurora-subnet-group \ --db-subnet-group-description "Aurora DB Subnet Group" \ --subnet-ids subnet-0d491a1a798aa878d subnet-057181b1e3728530e \ --region eu-west-1
aws rds create-db-subnet-group \ --db-subnet-group-name keycloak-aurora-subnet-group \ --db-subnet-group-description "Aurora DB Subnet Group" \ --subnet-ids subnet-0d491a1a798aa878d subnet-057181b1e3728530e \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aurora セキュリティーグループを作成します。
コマンド:
aws ec2 create-security-group \ --group-name keycloak-aurora-security-group \ --description "Aurora DB Security Group" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --region eu-west-1
aws ec2 create-security-group \ --group-name keycloak-aurora-security-group \ --description "Aurora DB Security Group" \ --vpc-id vpc-0b40bd7c59dbe4277 \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
{ "GroupId": "sg-0d746cc8ad8d2e63b" }{ "GroupId": "sg-0d746cc8ad8d2e63b" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aurora DB クラスターを作成します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--master-usernameと--master-user-passwordの値は置き換える必要があります。ここで指定した値は、Red Hat build of Keycloak データベース認証情報を設定するときに使用する必要があります。出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aurora DB インスタンスを作成します。
ゾーン A ライターインスタンスを作成します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ゾーン B リーダーインスタンスを作成します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
すべてのライターインスタンスとリーダーインスタンスの準備が完了するまで待ちます。
コマンド:
aws rds wait db-instance-available --db-instance-identifier keycloak-aurora-instance-1 --region eu-west-1 aws rds wait db-instance-available --db-instance-identifier keycloak-aurora-instance-2 --region eu-west-1
aws rds wait db-instance-available --db-instance-identifier keycloak-aurora-instance-1 --region eu-west-1 aws rds wait db-instance-available --db-instance-identifier keycloak-aurora-instance-2 --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Keycloak で使用するライターエンドポイント URL を取得します。
コマンド:
aws rds describe-db-clusters \ --db-cluster-identifier keycloak-aurora \ --query 'DBClusters[*].Endpoint' \ --region eu-west-1 \ --output text
aws rds describe-db-clusters \ --db-cluster-identifier keycloak-aurora \ --query 'DBClusters[*].Endpoint' \ --region eu-west-1 \ --output textCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
[ "keycloak-aurora.cluster-clhthfqe0h8p.eu-west-1.rds.amazonaws.com" ][ "keycloak-aurora.cluster-clhthfqe0h8p.eu-west-1.rds.amazonaws.com" ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.12.2.2. ROSA クラスターとのピアリング接続の確立 リンクのコピーリンクがクリップボードにコピーされました!
Aurora VPC を取得します。
コマンド:
aws ec2 describe-vpcs \ --filters "Name=tag:AuroraCluster,Values=keycloak-aurora" \ --query 'Vpcs[*].VpcId' \ --region eu-west-1 \ --output text
aws ec2 describe-vpcs \ --filters "Name=tag:AuroraCluster,Values=keycloak-aurora" \ --query 'Vpcs[*].VpcId' \ --region eu-west-1 \ --output textCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
vpc-0b40bd7c59dbe4277
vpc-0b40bd7c59dbe4277Copy to Clipboard Copied! Toggle word wrap Toggle overflow ROSA クラスター VPC を取得します。
-
ocを使用して ROSA クラスターにログインします。 ROSA VPC を取得します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
vpc-0b721449398429559
vpc-0b721449398429559Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ピアリング接続を作成します。
コマンド:
aws ec2 create-vpc-peering-connection \ --vpc-id vpc-0b721449398429559 \ --peer-vpc-id vpc-0b40bd7c59dbe4277 \ --peer-region eu-west-1 \ --region eu-west-1
aws ec2 create-vpc-peering-connection \ --vpc-id vpc-0b721449398429559 \1 --peer-vpc-id vpc-0b40bd7c59dbe4277 \2 --peer-region eu-west-1 \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ピアリング接続の存在が確認されるまで待機します。
コマンド:
aws ec2 wait vpc-peering-connection-exists --vpc-peering-connection-ids pcx-0cb23d66dea3dca9f
aws ec2 wait vpc-peering-connection-exists --vpc-peering-connection-ids pcx-0cb23d66dea3dca9fCopy to Clipboard Copied! Toggle word wrap Toggle overflow ピアリング接続を承認します。
コマンド:
aws ec2 accept-vpc-peering-connection \ --vpc-peering-connection-id pcx-0cb23d66dea3dca9f \ --region eu-west-1
aws ec2 accept-vpc-peering-connection \ --vpc-peering-connection-id pcx-0cb23d66dea3dca9f \ --region eu-west-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ROSA クラスター VPC ルートテーブルを更新します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Aurora セキュリティーグループを更新します。
コマンド:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- ROSA クラスターの "machine_cidr"
出力:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.12.3. 接続の検証 リンクのコピーリンクがクリップボードにコピーされました!
ROSA クラスターと Aurora DB クラスターの間で接続が可能であることを確認する最も簡単な方法は、OpenShift クラスターに psql をデプロイし、ライターエンドポイントへの接続を試みることです。
次のコマンドは、デフォルトの namespace に Pod を作成し、可能であれば Aurora クラスターとの psql 接続を確立します。Pod シェルを終了すると、Pod は削除されます。
2.12.4. Aurora データベースを Red Hat build of Keycloak に接続する リンクのコピーリンクがクリップボードにコピーされました!
この時点で Aurora データベースが確立され、すべての ROSA クラスターにリンクされています。ここでは、Aurora データベースを Red Hat build of Keycloak に接続するために使用できる Red Hat build of Keycloak CR オプションを説明します。以下の変更は、Operator を使用した複数のアベイラビリティーゾーンにまたがる Red Hat build of Keycloak のデプロイ の章で必要になります。JDBC の URL を、Aurora データベースライターエンドポイントを使用するように設定します。
-
spec.db.urlをjdbc:aws-wrapper:postgresql://$HOST:5432/keycloakに更新します。$HOSTは Aurora ライターのエンドポイント URL です。 -
spec.db.usernameSecretおよびspec.db.passwordSecretによって参照されるシークレットに、Aurora の作成時に定義したユーザー名とパスワードが含まれていることを確認します。
2.12.5. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
Aurora データベースのデプロイが成功したら、Operator を使用した複数のアベイラビリティーゾーンにまたがる Red Hat build of Keycloak のデプロイ に進みます。