适用于私有云的 Edge v. 4.17.05
本文档介绍了如何向现有数据添加数据中心(也称为区域) 。
添加数据中心前的注意事项
在安装添加数据中心之前,您必须了解如何配置 OpenLDAP。 跨数据中心的 ZooKeeper、Cassandra 和 Postgres 服务器。您还必须确保 在两个数据中心的节点之间开放必要的端口。
- OpenLDAP
每个数据中心都有自己的 OpenLDAP 服务器,该服务器配置了复制功能。当您 您必须配置 OpenLDAP 才能使用复制功能, 请重新配置现有数据中心的 OpenLDAP 服务器以使用复制功能。 - ZooKeeper
对于 ZK_HOSTS 属性: 为两个数据中心指定 IP 地址或 DNS 名称。 按相同的顺序排列中心,并使用“:observer”修饰符标记所有节点。 不带“:observer”修饰符的节点称为“voters”(投票者)。您必须要有单数码 “投票者”人数。
在此拓扑中,主机 9 上的 ZooKeeper 主机是观察器:
在如下所示的示例配置文件中,使用 “:observer”修饰符,这样您就有五个投票者:节点 1、2、3、7 和 8。
对于 ZK_CLIENT_HOSTS 属性,请仅指定 ZooKeeper 的 IP 地址或 DNS 名称 按相同顺序排列数据中心内数据中的所有 ZooKeeper 节点的 。 - Cassandra
所有数据中心都必须拥有相同数量的 Cassandra 节点。
对于 CASS_HOSTS,对应每个数据 请确保为这两种数据指定所有 Cassandra IP 地址(而非 DNS 名称) 。对于数据中心 1,首先列出该数据中心中的 Cassandra 节点。数据中心用 2,首先列出该数据中心中的 Cassandra 节点。在同一文件中列出 Cassandra 节点 所有 Cassandra 节点的订单。
所有 Cassandra 节点都必须带有后缀“:<d>,<r>”,例如“<ip>:1,1 = 数据中心 1 和机架/可用性区域 1,'<ip>:2,1 = 数据中心 2 和 机架/可用区 1。
例如:"192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1"
每个数据中心机架/可用性区域 1 中的第一个节点将用作种子 服务器。在此部署模型中,Cassandra 设置将如下所示:
-
Postgres
默认情况下,Edge 会以主模式安装所有 Postgres 节点。但是,如果你有多个 您需要将 Postgres 节点配置为使用主备用复制模式, 主节点发生故障,备用节点可以继续处理流量。通常,您需要 一个数据中心内的 Postgres 主服务器,第二个数据中的备用服务器 。
如果现有数据中心已配置为有两个 Postgres 节点在 主/备用模式,那么在此过程中,取消注册现有备用节点并 将其替换为新数据中心的备用节点。
下表显示了这两种场景的 Postgres 配置前后:
之前
之后
dc-1 中的单个主 Postgres 节点
dc-1 中的 Postgres 主节点
dc-2 中的备用 Postgres 节点
dc-1 中的 Postgres 主节点
dc-1 中的备用 Postgres 节点
dc-1 中的 Postgres 主节点
dc-2 中的备用 Postgres 节点
取消注册 dc-1 中的旧备用 Postgres 节点
- 端口要求
您必须确保两个数据中心的节点之间必要的端口处于开放状态。 如需了解端口示意图,请参阅安装 要求。
更新现有数据中心
添加数据中心时,您需要执行相关步骤来安装和配置新数据 但您还需要更新原始数据中心内的节点。这些 因为您要在新环境中添加新的 Cassandra 和 ZooKeeper 节点 并且您必须重新配置 通过 OpenLDAP 使用复制功能。
创建配置文件
下面显示了两个数据中心的静默配置文件,其中每个 如安装 拓扑。请注意,dc-1 的配置文件将其他设置添加到:
- 为 OpenLDAP 配置跨两个 OpenLDAP 节点的复制功能。
- 将 dc-2 中新的 Cassandra 和 ZooKeeper 节点添加到 dc-1 的配置文件中。
# Datacenter 1 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP1 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=1 LDAP_PEER=$IP7 APIGEE_LDAPPW=secret BIND_ON_ALL_INTERFACES=y MP_POD=gateway-1 REGION=dc-1 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
# Datacenter 2 IP1=IPorDNSnameOfNode1 IP2=IPorDNSnameOfNode2 IP3=IPorDNSnameOfNode3 IP7=IPorDNSnameOfNode7 IP8=IPorDNSnameOfNode8 IP9=IPorDNSnameOfNode9 HOSTIP=$(hostname -i) MSIP=$IP7 ADMIN_EMAIL=opdk@google.com APIGEE_ADMINPW=Secret123 LICENSE_FILE=/tmp/license.txt USE_LDAP_REMOTE_HOST=n LDAP_TYPE=2 LDAP_SID=2 LDAP_PEER=$IP1 APIGEE_LDAPPW=secret BIND_ON_ALL_INTERFACES=y MP_POD=gateway-2 REGION=dc-2 ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9" # Must use IP addresses for CASS_HOSTS, not DNS names. CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1" SKIP_SMTP=n SMTPHOST=smtp.example.com SMTPUSER=smtp@example.com SMTPPASSWORD=smtppwd SMTPSSL=n SMTPPORT=25 SMTPMAILFROM="My Company <myco@company.com>" |
添加新数据中心的流程
在此过程中,我们将为数据中心命名:
- dc-1:现有的数据中心
- dc-2:新数据中心
- 在 dc-1 上,使用新 dc-1 在原始 Cassandra 节点上重新运行 setup.sh
包含 dc-2 中的 Cassandra 节点的 confiig 文件:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1 - 在 dc-1 上,在管理服务器节点上重新运行 setup.sh:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1 - 在 dc-2 上,在所有节点上安装 apigee-setup。如需了解详情,请参阅安装 Edge apigee-setup 实用程序 信息。
- 在 dc-2 上,在相应的节点上安装 Cassandra 和 ZooKeeper:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2 - 在 dc-2 上,在所有 Cassandra 节点上运行重新构建命令,并指定
dc-1 的地区名称:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP 重建 dc-1 - 在 dc-2 上,在适当的节点上安装管理服务器:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2 - 在 dc-2 的管理服务器节点上,
apigee-provision,
apigee-adminapi.sh 实用程序:
> /opt/apigee/apigee-service/bin/apigee-service apigee-provision 安装 - 在 dc-2 上,将路由和消息处理器安装到
节点:
> /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2 - 在 dc-2 上,在适当的节点上安装 Qpid:
> /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2 - 在 dc-2 上,在相应的节点上安装 Postgres:
> /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2 - 为 Postgres 节点设置 Postgres 主服务器/备用实例。dc-1 中的 Postgres 节点是
主服务器,且 dc-2 中的 Postgres 节点是备用服务器。
注意:如果 dc-1 已配置为有两个 Postgres 节点以主/备用模式运行,则在此过程中使用 dc-1 中的现有主节点 Postgres 节点作为主节点, dc-2 中的 Postgres 节点作为备用服务器。在此过程的后面部分, 将取消注册 dc-1 中的现有 Postgres 备用服务器。- 在 dc-1 的主节点上,修改配置文件以设置:
PG_MASTER=IPorDNSofDC1Master
PG_STANDBY=IPorDNSofDC2Standby - 在新主实例上启用复制:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle - 在 dc-2 中的备用节点上,修改配置文件以设置:
PG_MASTER=IPorDNSofDC1Master
PG_STANDBY=IPorDNSofDC2Standby - 在 dc-2 中的备用节点上,停止服务器,然后删除任何
现有 Postgres 数据:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
>rm -rf /opt/apigee/data/apigee-postgresql/
注意:如有必要,您可以在删除前先备份这些数据。 - 在 dc-2 中配置备用节点:
> /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- 在 dc-1 的主节点上,修改配置文件以设置:
- 在 dc-1 上,更新分析配置并配置组织。
- 在 dc-1 的管理服务器节点上,获取 Postgres 的 UUID
节点:
>apigee-adminapi.sh 服务器 列表 -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回的数据的末尾。保存该值。
注意:如果将 dc-1 配置为在 主/待机模式下,您会在输出中看到两个 IP 地址和 UUID。保存这两个 UUID。 通过 IP,您应该能够确定哪个 UUID 用于主服务器,哪个 UUID 用于主设备 备用节点。 - 在 dc-2 的管理服务器节点上,获取 Postgres 的 UUID 如上一步中所示。保存该值。
- 在 dc-1 的管理服务器节点上,确定
和消费者群体。下面的许多命令都需要这些信息。
默认情况下,分析群组的名称为 axgroup-001,使用方的名称 群组为 consumer-group-001。在区域的静默配置文件中,您可以设置名称 分析组的数据。
如果您不确定分析群组和消费者群组的名称,请使用以下 命令显示它们:
>apigee-adminapi.sh 分析 群组列表 --admin adminEmail --pwd adminPword --host localhost
此命令会在名称字段中返回分析群组名称,以及使用方群组 名称。 - 在 dc-1 的管理服务器节点上,移除现有的 Postgres
服务器:
<ph type="x-smartling-placeholder">
- </ph>
- 从使用方组中移除 Postgres 节点:
>apigee-adminapi.sh 分析群组 consumer_groups 数据存储区移除 -g axgroup-001 -c consumer-group-001 -u UUID -Y --管理员 adminEmail --pwd adminPword - 主机 localhost
如果将 dc-1 配置为有两个 Postgres 节点在 主/待机模式,请同时移除两者:
>apigee-adminapi.sh 分析群组 consumer_groups 数据存储区移除 -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" -Y --admin adminEmail --pwd adminPword -- 主机 localhost - 从分析组中移除 Postgres 节点:
>apigee-adminapi.sh analytics groups postgres_server remove -g axgroup-001 -u UUID -Y --admin adminEmail --pwd adminPword --host localhost
如果 dc-1 配置为有两个以主/备用模式运行的 Postgres 节点,请删除 两者:
>apigee-adminapi.sh 分析群组 postgres_server remove -g axgroup-001 -u UUID1,UUID2 -Y --管理员 adminEmail --pwd adminPword --host localhost
- 从使用方组中移除 Postgres 节点:
-
在 dc-1 的管理服务器节点上,添加新的主服务器/备用服务器
将 Postgres 服务器发送到分析组:
<ph type="x-smartling-placeholder">
- </ph>
- 将两个 Postgres 服务器添加到分析组:
>apigee-adminapi.sh analytics groups postgres_server add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail --pwd adminPword --host localhost
其中 UUID_1 对应于 dc-1 和 UUID_2 对应于备用 Postgres dc-2 中的节点。 - 将 PG 服务器作为主服务器/备用服务器添加到使用方群组:
>apigee-adminapi.sh 分析群组 consumer_groups 数据存储区添加 -g axgroup-001 -c consumer-group-001 -u “UUID_1,UUID_2”--admin adminEmail --pwd adminPword --host localhost
- 将两个 Postgres 服务器添加到分析组:
- 将 Qpid 服务器从 dc-2 添加到分析组:
<ph type="x-smartling-placeholder">
- </ph>
- 在 dc-1 的管理服务器节点上,获取 Qpid 的 UUID
dc-2 中的节点:
>apigee-adminapi.sh 服务器列表 -r dc-2 -p central -t qpid-server --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回的数据的末尾。保存这些值。 - 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到
分析组:
>apigee-adminapi.sh 分析群组 qpid_server add -g axgroup-001 -u “UUID_1 UUID_2” -- 管理员 adminEmail --pwd adminPword --host localhost - 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到
消费者群体:
>apigee-adminapi.sh 分析群组 consumer_groups consumer add -g axgroup-001 -c consumer-group-001 -u “UUID_1,UUID_2” -- 管理员 adminEmail --pwd adminPword --host localhost
- 在 dc-1 的管理服务器节点上,获取 Qpid 的 UUID
dc-2 中的节点:
- 取消注册并删除 dc-1 中的旧 Postgres 备用服务器:
<ph type="x-smartling-placeholder">
- </ph>
- 取消注册现有的 dc-1 Postgres 备用服务器:
>apigee-adminapi.sh 服务器取消注册 -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --host localhost
,其中 UUID 是旧备用密钥 dc-1 中的 Postgres 节点。 - 删除现有的 dc-1 Postgres 备用服务器:
注意:此命令不会卸载 Postgres 服务器节点。它 只会将其从 Edge 节点列表中移除。您可以稍后从 节点。
>apigee-adminapi.sh 服务器 delete -u UUID --admin adminEmail --pwd adminPword --host localhost
- 取消注册现有的 dc-1 Postgres 备用服务器:
- 在 dc-1 的管理服务器节点上,获取 Postgres 的 UUID
节点:
- 使用正确的复制因子为两个数据中心更新 Cassandra 键空间。您
只需在任一数据中心的任何 Cassandra 服务器上运行此步骤一次即可:
注意:下面的命令全部将复制因子设置为“3”,表示 三个 Cassandra 节点根据需要修改此值,以便安装。- 启动 Cassandra cqlsh 实用程序:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - 在“cqlsh>”处执行以下 CQL 命令提示设置复制
级别:
<ph type="x-smartling-placeholder">
- </ph>
- cqlsh>替代 KEYSPACE“identityzone”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
- cqlsh>更改键区 “system_traces”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
- 使用以下命令查看键空间:
cqlsh>选择 * 从 system.schema_keyspaces; - 退出 cqlsh:
cqlsh>退出
- 启动 Cassandra cqlsh 实用程序:
- 在 dc-1 中的所有 Cassandra 节点上运行以下 nodetool 命令,以释放内存:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 清理 - 对于您希望跨数据支持的每个组织和每个环境
中心:
<ph type="x-smartling-placeholder">
- </ph>
- 在 dc-1 的管理服务器节点上,将新的 MP_POD 添加到
组织:
>apigee-adminapi.sh 组织 Pod add -o orgName -r dc-2 -p 网关 2 --adminorgNameorgName adminEmail --pwd adminPword --host localhost
其中,gateway-2 是 MP_POD 定义的网关 Pod 的名称 属性。 - 将新的消息处理器添加到组织和环境中:
<ph type="x-smartling-placeholder">
- </ph>
- 在 dc-2 的管理服务器节点上,获取
dc-2:
中的消息处理器节点 >apigee-adminapi.sh 服务器列表 -r dc-2 -p gateway-2 -t message-processor --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回的数据的末尾。保存这些值。 - 在 dc-1 的管理服务器节点上,对每个邮件处理器
在 dc-2 中,将消息处理器添加到组织的环境中:
>apigee-adminapi.sh 组织 envs servers add -o orgName -e envName -u UUID -- 管理员 adminEmail --pwd adminPword --host localhost
- 在 dc-2 的管理服务器节点上,获取
dc-2:
- 在 dc-1 的管理服务器节点上,检查组织:
>apigee-adminapi.sh 组织 API Deployment -o orgName -a apiProxyName --adminorgNameorgName adminEmail --pwd adminPword --host localhost
其中 apiProxyName 是在 组织。
- 在 dc-1 的管理服务器节点上,将新的 MP_POD 添加到
组织: