本文档介绍了如何向现有数据中心添加数据中心(也称为区域)。
添加数据中心前的注意事项
在添加数据中心之前,您必须了解如何在数据中心之间配置 SymasLDAP、ZooKeeper、Cassandra 和 Postgres 服务器。您还必须确保两个数据中心内的节点之间已打开必要的端口。
- SymasLDAP
每个数据中心都有自己的 SymasLDAP 服务器,并且已配置为启用复制。安装新数据中心时,您必须配置 SymasLDAP 以使用复制功能,并且必须重新配置现有数据中心内的 SymasLDAP 服务器以使用复制功能。
- ZooKeeper
对于两个数据中心的
ZK_HOSTS
属性,请按相同顺序指定两个数据中心中所有 ZooKeeper 节点的 IP 地址或 DNS 名称,并使用“:observer”修饰符标记任何节点。 没有:observer
修饰符的节点称为“投票者”。您的配置中必须有奇数个“投票者”。在此拓扑中,主机 9 上的 ZooKeeper 主机是观察者:
在以下示例配置文件中,节点 9 带有
:observer
修饰符,因此您有 5 个投票者:节点 1、2、3、7 和 8。对于每个数据中心的
ZK_CLIENT_HOSTS
属性,请按相同顺序为数据中心内的所有 ZooKeeper 节点指定数据中心内 ZooKeeper 节点的 IP 地址或 DNS 名称。 - 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 节点,这些节点必须可供现有数据中心访问,并且您必须重新配置 SymasLDAP 以使用复制功能。
创建配置文件
下面显示了两个数据中心的静默配置文件,其中每个数据中心都有 6 个节点,如安装拓扑中所述。请注意,dc-1 的配置文件会向以下内容添加其他设置:
- 配置 SymasLDAP,使其在两个 SymasLDAP 节点之间进行复制。
- 将 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 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 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-2 中 Cassandra 节点的新 dc-1 配置文件,在原始 Cassandra 节点上重新运行 setup.sh:
/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
如果您使用的是创收,请重新运行创收设置命令:
/opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_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 [-u username -pw password] -h cassIP rebuild dc-1
如果您为 Cassandra 启用了 JMX 身份验证,则只需传递用户名和密码。
- 在 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 install
- 在 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 中的主节点上,修改配置文件以设置:
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 servers list -r dc-1 -p analytics -t postgres-server \ --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回的数据末尾。保存该值。
- 在 dc-2 的管理服务器节点上,获取 Postgres 节点的 UUID,如上一步所示。保存该值。
- 在 dc-1 的管理服务器节点上,确定分析组和消费组的名称。以下许多命令都需要此信息。
默认情况下,分析组的名称为“axgroup-001”,消费组的名称为“consumer-group-001”。在区域的静默配置文件中,您可以使用
AXGROUP
属性设置分析组的名称。如果您不确定分析组和消费群组的名称,请使用以下命令显示它们:
apigee-adminapi.sh analytics groups list \ --admin adminEmail --pwd adminPword --host localhost
此命令会在 name 字段中返回分析组名称,并在 consumer-groups 字段中返回消费组名称。
- 在 dc-1 的管理服务器节点上,从分析组中移除现有的 Postgres 服务器:
- 从消费群组中移除 Postgres 节点:
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u UUID \ -Y --admin adminEmail --pwd adminPword --host localhost
如果 dc-1 配置为以主/备用模式运行两个 Postgres 节点,请移除这两个节点:
apigee-adminapi.sh analytics groups consumer_groups datastores remove \ -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \ -Y --admin adminEmail --pwd adminPword --host 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 analytics groups postgres_server \ remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \ --pwd adminPword --host localhost
- 从消费群组中移除 Postgres 节点:
- 在 dc-1 的管理服务器节点上,将新的主/备 Postgres 服务器添加到分析组:
- 将两个 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 中的主 Postgres 节点,UUID_2 对应于 dc-2 中的备用 Postgres 节点。
- 将 PG 服务器作为主服务器/备用服务器添加到消费者组:
apigee-adminapi.sh analytics groups consumer_groups datastores \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- 将两个 Postgres 服务器都添加到分析组:
- 将 dc-2 中的 Qpid 服务器添加到分析组:
- 在 dc-1 的管理服务器节点上,获取 dc-2 中 Qpid 节点的 UUID:
apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \ --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回数据的末尾。保存这些值。
- 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到分析组(运行以下两个命令):
apigee-adminapi.sh analytics groups qpid_server \ add -g axgroup-001 -u "UUID_1" --admin adminEmail \ --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups qpid_server \ add -g axgroup-001 -u "UUID_2" --admin adminEmail \ --pwd adminPword --host localhost
- 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到消费者组(运行以下两个命令):
apigee-adminapi.sh analytics groups consumer_groups consumers \ add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \ --admin adminEmail --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups consumer_groups consumers \ add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \ --admin adminEmail --pwd adminPword --host localhost
如果您使用的是创收,请将 Qpid 节点添加到 dc-1 的管理服务器节点上的 MINT 组:
apigee-adminapi.sh analytics groups qpid_server \ add -g mxgroup001 -u UUID_1 --admin adminEmail \ --pwd adminPword --host localhost
apigee-adminapi.sh analytics groups qpid_server \ add -g mxgroup001 -u UUID_2 --admin adminEmail \ --pwd adminPword --host localhost
- 在 dc-1 的管理服务器节点上,获取 dc-2 中 Qpid 节点的 UUID:
- 从 dc-1 中取消注册并删除旧的 Postgres 备用服务器:
- 取消注册现有的 dc-1 Postgres 备用服务器:
apigee-adminapi.sh servers deregister -u UUID -r dc-1 \ -p analytics -t postgres-server -Y --admin adminEmail \ --pwd adminPword --host localhost
其中,UUID 是 dc-1 中的旧备用 Postgres 节点。
- 删除现有的 dc-1 Postgres 备用服务器:
apigee-adminapi.sh servers delete -u UUID \ --admin adminEmail --pwd adminPword --host localhost
- 取消注册现有的 dc-1 Postgres 备用服务器:
- 在 dc-1 的管理服务器节点上,获取 Postgres 节点的 UUID:
- 使用两个数据中心的正确复制因子更新 Cassandra 键空间。您只需在任一数据中心的任一 Cassandra 服务器上运行此步骤一次:
- 启动 Cassandra
cqlsh
实用程序:/opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
- 在“cqlsh>”提示符下执行以下 CQL 命令,以设置 Cassandra 键空间的复制级别:
ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- 使用以下命令查看键空间:
SELECT * FROM system_schema.keyspaces;
- 退出
cqlsh
:exit
- 启动 Cassandra
- 在 dc-1 中的所有 Cassandra 节点上运行以下
nodetool
命令,以释放内存:/opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup
如果您为 Cassandra 启用了 JMX 身份验证,则只需传递用户名和密码。
- 对于每个组织和每个要跨数据中心支持的环境:
- 在 dc-1 的管理服务器节点上,将新的 MP_POD 添加到组织:
apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \ --admin adminEmail --pwd adminPword --host localhost
其中,gateway-2 是网关 pod 的名称,由 dc-2 配置文件中的 MP_POD 属性定义。
- 将新的消息处理器添加到组织和环境:
- 在 dc-2 的管理服务器节点上,获取 dc-2 中消息处理器节点的 UUID:
apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \ -t message-processor --admin adminEmail --pwd adminPword --host localhost
UUID 显示在返回数据的末尾。保存这些值。
- 在 dc-1 的管理服务器节点上,针对 dc-2 中的每个消息处理器,将该消息处理器添加到相应组织的某个环境中:
apigee-adminapi.sh orgs envs servers add -o orgName -e envName \ -u UUID --admin adminEmail --pwd adminPword --host localhost
- 在 dc-2 的管理服务器节点上,获取 dc-2 中消息处理器节点的 UUID:
- 在 dc-1 的管理服务器节点上,检查组织:
apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \ --admin adminEmail --pwd adminPword --host localhost
其中,apiProxyName 是组织中部署的 API 代理的名称。
- 在 dc-1 的管理服务器节点上,将新的 MP_POD 添加到组织:
如果您使用的是创收,请在 DC2 中安装创收节点。
在 DC2 中的管理服务器和消息处理器节点中运行 MINT 设置命令:
/opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1