私有雲 4.18.01 版本
您可以利用主動/有效設定,在多個資料中心安裝 API BaaS。本文件說明如何將 BaaS 資料中心新增至現有的 BaaS 資料中心。
與 Edge 共用 Cassandra 叢集時新增資料中心
所有資料中心的 Cassandra 節點數量必須相同。API BaaS 安裝可以使用自己的 Cassandra 叢集,也可以與 Edge 共用 Cassandra 叢集。
如果 BaaS 安裝與 Edge 共用 Cassandra 叢集,您必須更新原始資料中心的管理伺服器,使其設為在新資料中心內識別 Cassandra 節點。
更新現有資料中心
如要新增資料中心的資料中心 (資料中心 2),您必須按照步驟安裝及設定新的資料中心,但也需要更新原始的 BaaS 資料中心 (資料中心 1)。必須進行這些修改,原因如下:
- 您即將在新的資料中心新增 Cassandra 節點,且這些路徑必須可由現有資料中心存取。
- 您必須設定資料中心 1 中 BaaS 堆疊節點所用的複製資訊,才能納入資料中心 2 的資訊。您必須先安裝資料中心 2,才能執行這項設定。
如要在資料中心 1 上執行這些更新,請更新用於安裝資料中心 1 的原始設定檔,然後在資料中心 1 的 Cassandra 節點上重新執行 apigee-setup。如果資料中心 1 的 Cassandra 叢集與 Edge 安裝共用,您也必須更新管理伺服器。
建立設定檔
如要安裝資料中心 1,請使用 API BaaS 安裝服務中顯示的設定。您安裝資料中心時,不需要在資料中心 2 加入任何有關資料中心 1 的資訊。1. 您安裝資料中心 2 後,須在設定檔中新增資訊。
下圖是資料中心 2 的設定檔。如安裝拓撲中所述,這個設定檔假設您已在 10 個節點上安裝 dc-2。如果是在 7 個節點上安裝,請據此修改這個檔案。
請注意,資料中心 2 (dc-2) 的設定檔包含資料中心 1 (dc-1) 的相關資訊:
# Specify IP address or DNS name of node for dc-2. IP1=192.168.1.1 # ElasticSearch IP2=192.168.1.2 # ElasticSearch IP3=192.168.1.3 # ElasticSearch IP4=192.168.1.4 # API BaaS Stack IP5=192.168.1.5 # API BaaS Stack IP6=192.168.1.6 # API BaaS Stack IP7=192.168.1.7 # API BaaS Portal IP8=192.168.1.8 # Cassandra dc-2 (shared with Edge or standalone) IP9=192.168.1.9 # Cassandra dc-2 (shared with Edge or standalone) IP10=192.168.1.10 # Cassandra dc-2 (shared with Edge or standalone) # Specify node information for dc-1 IP11=192.168.1.11 # Cassandra dc-1 (shared with Edge or standalone) IP12=192.168.1.12 # Cassandra dc-1 (shared with Edge or standalone) IP13=192.168.1.13 # Cassandra dc-1 (shared with Edge or standalone) IP14=192.168.1.14 # API BaaS Stack IP15=192.168.1.15 # API BaaS Stack # Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost. HOSTIP=$(hostname -i) # Define the API BaaS administrator account. AS_ADMIN="superuser" # User name - default is "superuser". AS_ADMIN_EMAIL=stackAdmin@email.com AS_PASSWD=stackAdminPWord # Specify Cassandra data center and rack suffix. # List dc-2 nodes first, then dc-1. # Must use IP addresses for CASS_HOSTS, not DNS names. # CASS_HOSTS="$IP8:2,1 $IP9:2,1 $IP10:2,1 $IP11:1,1 $IP12:1,1 $IP13:1,1" # Specify the Cassandra region. REGION=dc-2 # Cassandra uname/pword. # Even if Cassandra authentication is disabled, # you must still pass values for these properties. CASS_USERNAME=cassandra # Default value CASS_PASSWORD=cassandra # Default value # Specify BaaS Cassandra connection information. # Specify the data center name as dc-2. BAAS_CASS_LOCALDC=dc-2 # Specify both data centers. BAAS_CASS_DC_LIST=dc-1,dc-2 # Replication is in the form "dataCenterName:#CassandraNodes". # Specify both data centers. BAAS_CASS_REPLICATION=dc-1:3,dc-2:3 # Defines the initial contact points for members of the BaaS cluster. # Specify the IP address of no more than two Stack nodes per data center. # Specify both data centers. BAAS_CLUSTER_SEEDS="dc-1:$IP14,dc-1:$IP15,dc-2:$IP4,dc-2:$IP5" # ElasticSearch IPs or DNS names, separated by spaces, for dc-2. ES_HOSTS="$IP1 $IP2 $IP3" # API BaaS Stack information. # Default cluster name is "apigee_baas" BAAS_USERGRID_CLUSTERNAME="apigee_baas" # URL and port of the load balancer for the API BaaS Stack nodes, # or IP/DNS and port 8080 of a single Stack node with no load balancer. BAAS_USERGRID_URL=http://myloadbalancer:8443 # API BaaS Portal information. # URL and port number of load balancer, if there is one in front of the Portal, # or the URL and port of the Portal node. BAAS_PORTAL_URL="http://$IP7:9000" # Portal port. Default value is 9000. BAAS_PORTAL_LISTEN_PORT=9000 # SMTP information. BaaS requires an SMTP server. SMTPHOST=smtp.gmail.com SMTPPORT=465 SMTPUSER=your@email.com SMTPPASSWORD=yourEmailPassword SMTPSSL=y SMTPMAILFROM="My Company <myco@company.com>"
新增 BaaS 資料中心
- 按照 API BaaS 安裝頁面所述的方式安裝第一個資料中心。該文件會包含您用來安裝資料中心 1 的設定檔。
- 按照上述說明建立 dc-2 的設定檔。
- 安裝 Cassandra 做為現有 Edge 安裝項目的一部分,或是做為 BaaS 的獨立叢集:
- 使用網際網路或非網際網路程序,在 dc-2、機器 8 的第一個 Cassandra 節點上安裝 Edge apigee-setup 公用程式。詳情請參閱「安裝 Edge Apigee 設定公用程式」。
- 在命令提示字元中,執行設定指令碼,在第一個節點上安裝 Cassandra:
> /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
「-p c」選項會指定安裝 Cassandra。
設定檔必須可供「Apigee」使用者存取或讀取。 - 針對剩餘 dc-2 的剩餘 Cassandra 節點、機器 9 和 10,重複步驟 3 和 4。
- 在 dc-1 的 Cassandra 節點中,編輯設定檔以根據安裝 Cassandra 的方式,從資料中心 2 新增 Cassandra 節點:
# 清單 dc-1 節點,然後 dc-2,
# 包括 Cassandra 資料中心和機架後置字串
CASS_HOSTS="$IP11:1,1 $IP12:1,1 $IP13:1,1 $1.2,102: - 在 dc-1 的第一個 Cassandra 節點上執行新的 dc-1 設定檔,其中包含 dc-2 的 Cassandra 節點:
> /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile - 對 dc-1 中其餘 Cassandra 節點重複步驟 6 和 7。
- 如要連線至 dc-1 與 Edge 共用的 Cassandra 叢集,請將 dc-2 Cassandra 節點新增至 dc-1 管理伺服器節點的設定檔,並執行 setup.sh:
> /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile - 為兩個資料中心更新正確的 Cassandra 鍵空間。您只需在任一資料中心的任何 Cassandra 伺服器上執行這個步驟即可:
注意:以下指令會將複製係數設為「3」,代表叢集中三個 Cassandra 節點。根據安裝的需要修改這個值。- 啟動 Cassandra cqlsh 公用程式:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - 在「cqlsh>」提示中執行以下 CQL 指令,為 Cassandra 命名空間設定複製層級:
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "system_traces" WITH Copy = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- cqlsh> ALTER KEYSPACE "system_auth" WITH 使用 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
- 使用下列指令查看命名空間:
cqlsh> select system from schema.schema_keyspaces; - 結束 Cqlsh:
cqlsh> exit
- 啟動 Cassandra cqlsh 公用程式:
- 在 dc-2 中所有 Cassandra 節點中執行重新建構指令,並指定 dc-1 的區域名稱:
> /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 重新建構 dc-1 - 在每個 Cassandra 節點上執行「nodetool 狀態」,並確認所有 Cassandra 節點的「100%」都設為「Owns」值:
> /opt/apigee/apigee-cassandra/bin/nodetool 狀態 - 在 dc-2 中安裝 BaaS:
- 編輯設定檔,只列出 dc-2 中的 Cassandra 節點:
# List dc-2 Cassandra 節點、
# 省略 Cassandra 資料中心和機架後置字串
CASS_HOSTS="$IP8 $IP9 $IP10" - 在 dc-2 節點 4、5 和 6 上安裝 ElasticSearch:
> /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile - 在 dc-2 節點 4、5 和 6 上安裝 BaaS 堆疊:
> /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile - 在機器 7 上安裝 BaaS 入口網站:
> /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
- 編輯設定檔,只列出 dc-2 中的 Cassandra 節點:
- 更新資料中心 1 的 BaaS 堆疊節點:
- 在資料中心 1 的第一個 BaaS 堆疊節點中,編輯編輯器中的 /opt/apigee/customer/application/usergrid.properties。如果檔案不存在,請建立檔案。
- 在 usergrid.properties 中新增下列屬性:
# dc-2 設定檔中的 BAAS_CLUSTER_SEEDS 值相同
# (不含雙引號)。
usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2
# 與 dc-2 設定檔中的值相同 BAAS_CASS_DC_LIST。
usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2 - 針對剩餘的 BaaS 堆疊節點重複執行步驟 b 和 b。
- 重新啟動所有 BaaS 堆疊節點。
注意:重新啟動 BaaS 堆疊節點時,系統會按照 BAAS_CLUSTER_SEEDS 中列出的順序重新啟動。 BAAS_CLUSTER_SEEDS 清單內的兩個堆疊節點最多。依序重新啟動這兩個節點後,您就可以依任何順序重新啟動其餘節點。
> /opt/apigee/apigee-service/bin/apigee-service baas-usergrid 重新啟動
- 更新 BaaS Keyspace 值。這些金鑰必須在安裝時設定才能複製,但不一定要在執行時執行。移除複製作業也會儲存 Cassandra 記憶體。
:你只需在任一資料中心的任何 Cassandra 伺服器上執行這個步驟即可:- 啟動 Cassandra cqlsh 公用程式:
> /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP - 執行下列 CQL 指令,為 Cassandra 命名空間設定複製層級:
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
- cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH 複製 = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
- 使用下列指令查看命名空間:
cqlsh>選取 from system.schema_keyspaces; - 結束 Cqlsh:
cqlsh>出口
- 啟動 Cassandra cqlsh 公用程式:
這個資料中心的第二個安裝作業已經完成。
完成這兩個資料中心的安裝和設定後,您可以按照下列程序驗證安裝狀態:
- 查看所有 BaaS 堆疊節點的狀態:
> curl 0:8080/status - 檢查權杖 API 呼叫是否正常運作:
> curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminadmin","password":"pWord"}' - 請嘗試登入 dc-2 的 BaaS 入口網站。確認所有資料都已以 dc-2 複製,例如在 dc-1 上建立的集合。