3.13. 在多个可用区部署 AWS Aurora
在多集群部署中部署一个 AWS Aurora 作为数据库构建块。
本节论述了如何在多个可用区间部署 PostgreSQL 实例的 Aurora 区域部署,以便在给定 AWS 区域中容忍一个或多个可用区失败。
此部署旨在与 多集群部署 一章中介绍的设置一起使用。将此部署与构建块 多集群部署一章中介绍的其他构建块 一起使用。
我们提供这些蓝图来显示最小功能完整示例,为常规安装提供良好的基准性能。您仍然需要根据您的环境以及您的组织的标准和安全性最佳实践进行调整。
3.13.1. 架构 复制链接链接已复制到粘贴板!
Aurora 数据库集群由多个 Aurora 数据库实例组成,一个实例指定为主写入器,所有其他实例都指定为备份读取器。为确保在可用区失败时高可用性,Aurora 允许在单个 AWS 区域中的多个区域部署数据库实例。如果在托管 Primary 数据库实例的可用区失败时,Aurora 会自动修复自身,并将读取器实例从非失败的可用区提升为新的写入器实例。
图 3.1. Aurora 多可用区部署
有关 Aurora 数据库提供的语义的详情,请参阅 AWS Aurora 文档。
本文档遵循 AWS 最佳实践并创建不向互联网公开的私有 Aurora 数据库。要从 ROSA 集群访问数据库,请在 数据库和 ROSA 集群之间建立对等连接。
3.13.2. 流程 复制链接链接已复制到粘贴板!
以下流程包含两个部分:
- 在 eu-west-1 中使用名称 "keycloak-aurora" 创建 Aurora Multi-AZ 数据库集群。
- 在 ROSA 集群和 Aurora VPC 之间创建对等连接,以允许 ROSA 集群上部署的应用程序与数据库建立连接。
3.13.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
- 我们使用 Aurora 集群的名称添加可选标签,以便我们可以轻松地检索 VPC。
输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用新创建的 VPC 的
VpcId为 Aurora 部署到的每个可用区创建一个子网。注意为每个可用区指定的 cidr-block 范围不得互相重叠。
区域 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 zone 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 zone 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值。在配置红帽构建 Keycloak 数据库凭证时,必须使用此处指定的值。输出:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Aurora DB 实例
Create Zone A Writer 实例
命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create Zone B Reader 实例
命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
等待所有 Writer 和 Reader 实例就绪
命令:
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 Obtain the Writer 端点 URL 用于 Keycloak
命令:
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
3.13.2.2. 使用 ROSA 集群建立对等连接 复制链接链接已复制到粘贴板!
为每个包含红帽构建的 Keycloak 部署 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 等待 Peering 连接存在
命令:
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
3.13.3. 验证连接 复制链接链接已复制到粘贴板!
验证 ROSA 集群和 Aurora DB 集群之间是否可以连接的最简单方法是在 OpenShift 集群上部署 psql,并尝试连接到写器端点。
以下命令在 default 命名空间中创建 pod,并在可能的情况下建立与 Aurora 集群的 psql 连接。退出 pod shell 后,会删除 pod。
3.13.4. 使用红帽构建的 Keycloak 连接 Aurora 数据库 复制链接链接已复制到粘贴板!
现在,Aurora 数据库已经建立并链接到所有 ROSA 集群,以下是相关的红帽构建的 Keycloak CR 选项,用于将 Aurora 数据库与红帽构建的 Keycloak 连接。在使用 Operator 部署 Red Hat build of HA 中, 需要这些更改。JDBC url 被配置为使用 Aurora 数据库写入器端点。
-
将
spec.db.url更新为jdbc:aws-wrapper:postgresql://$HOST:5432/keycloak,其中$HOST是 Aurora writer 端点 URL。 -
确保
spec.db.usernameSecret和spec.db.passwordSecret引用的 Secret 包含创建 Aurora 时定义的用户名和密码。
3.13.5. 后续步骤 复制链接链接已复制到粘贴板!
在成功部署 Aurora 数据库后,使用 Data Grid Operator 为 HA 部署 Data Grid