7-host 和 10-host API BaaS 安裝

Edge for Private Cloud 4.16.05 版

使用負載平衡器

API BaaS 的正式環境安裝作業會在 API BaaS 入口網站節點和 API BaaS Stack 節點之間使用負載平衡器。設定入口網站時,請指定負載平衡器的 IP 位址或 DNS 名稱,而非 Stack 節點。

除了負載平衡器,您也可以使用循環配置資源 DNS。在這種情況下,您會建立 DNS 項目,其中包含多個與 BaaS 堆疊 IP 位址對應的 A 記錄。在 DNS 查詢期間,DNS 伺服器會自動以循環配置方式傳回 A 記錄值。

連線至 Cassandra

安裝 BaaS 時,您可以選擇將 BaaS 和 Edge 連結至同一個 Cassandra 叢集,或為 BaaS 建立獨立的 Cassandra 叢集。較小型的 BaaS 安裝 (即流量較低的安裝) 通常會與 Edge 共用 Cassandra 叢集。

如要提高處理量和可用性,或將 Cassandra 叢集分隔至不同的網路區域,Apigee 建議您使用獨立的 Cassandra 叢集。如果 BaaS 流量負載很高,使用獨立叢集可大幅提升效能。

日期同步

所有伺服器的日期/時間必須同步。如果尚未設定,可以使用「ntpdate」公用程式,驗證伺服器是否已同步時間。您可以使用「yum install ntp」安裝公用程式。

Tomcat 安全性

API BaaS 安裝程式也會在所有 API BaaS Stack 節點上安裝 Apache Tomcat 伺服器,包括 Tomcat 管理員 UI。安裝程式會將預設管理員憑證保留為 admin:admin。

如有需要,您可以變更這些憑證,確保 Tomcat 安全。詳情請參閱:

安裝總覽

在節點上安裝 Edge apigee-setup 公用程式後,請使用該公用程式在節點上安裝一或多個 BaaS 元件。apigee-setup 公用程式的格式如下:

> sudo /opt/apigee/apigee-setup/bin/setup.sh -p component -f configFile

將設定檔傳遞至 apigee-setup 公用程式,其中包含安裝作業的相關資訊。如果設定檔缺少任何必要資訊,apigee-setup 公用程式會提示您在指令列中輸入。

唯一的要求是設定檔必須可供「apigee」使用者存取或讀取。例如,將檔案放在節點的 /tmp 目錄中。

舉例來說,使用下列指令安裝 API BaaS Stack:

> sudo /opt/apigee/apigee-setup/bin/setup.sh -p b -f myConfig

Apigee setup.sh 公用程式支援多種安裝 API BaaS 元件的選項。以下操作說明使用獨立選項 (c、e、b 和 p),但您可以根據節點設定使用不同選項:

選項

說明

e

僅安裝 ElasticSearch。

b

僅安裝 API BaaS Stack,這也會安裝 Tomcat。

p

僅安裝 API BaaS 入口網站,這也會安裝 Nginx 路由器,做為網路伺服器使用。

c

僅安裝 Cassandra。

eb

在節點上安裝 ElasticSearch、API BaaS Stack 和 Tomcat。

ebp

安裝 ElasticSearch、API BaaS 入口網站、API BaaS Stack 和 Tomcat。入口網站非常輕量,不需要額外資源。

asa

在單一節點上安裝所有 API 元件 (Cassandra、Elasticsearch、API BaaS Stack 和 API BaaS Portal)。這個選項僅適用於開發和測試,不適用於正式環境。

建立靜默設定檔

以下是 10 節點 API BaaS 安裝作業的自動設定檔範例。請視設定需要編輯這個檔案。使用 setup.sh 的 -f 選項加入這個檔案。

# Specify IP address or DNS name of node.
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 (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra (shared with Edge or standalone)

# 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=stackAdminPWrod

# Only if you are installing Cassandra.
# Specify Cassandra configuration information.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:1,1 $IP9:1,1 $IP10:1,1"

# If connecting to existing Cassandra nodes, 
# specify Cassandra IPs.
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP8 $IP9 $IP10"

# 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.
BAAS_CASS_LOCALDC=dc-1    # Default is dc-1.

# Replication is in the form "dataCenterName:#CassandraNodes". 
# For example, for dc-1 with three Cassandra nodes, it is dc-1:3.
BAAS_CASS_REPLICATION=dc-1:3

# ElasticSearch IPs or DNS names, separated by spaces.
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

下表提供這些屬性的其他資訊:

屬性

注意事項

CASS_HOSTS

如果您要安裝 Cassandra,請指定 Cassandra 節點 IP (而非 DNS 名稱),並加入「:dc,ra」修飾符,指定 Cassandra 節點的資料中心和機架。

例如「192.168.124.201:1,1」= 資料中心 1 和機架/可用區 1,以及「192.168.124.204:2,1」= 資料中心 2 和機架/可用區 1。

CASS_USERNAME
CASS_PASSWORD

Cassandra 使用者名稱和密碼。

即使停用 Cassandra 驗證,您仍須傳遞這些值。但系統會忽略這些值。

BAAS_CASS_LOCALDC

區域名稱的格式必須為 dc-#,其中 # 對應整數值。

例如 dc-1、dc-2 等。如果您要連線至透過 Edge 安裝的 Cassandra 叢集,可以向 Edge 系統管理員詢問這個值。在 Edge 單一資料中心安裝中,預設值為 dc-1。

如果您在安裝 API BaaS 時一併安裝 Cassandra,則在安裝 Cassandra 時,您已將「:dc,ra」修飾符新增至 Cassandra IP 位址。第一個值「dc」是資料中心編號。資料中心名稱為字串「dc-」,後置字串為資料中心編號。

BAAS_CASS_REPLICATION

格式為「dataCenterName:#CassandraNodes」。 舉例來說,如果 dc-1 有三個 Cassandra 節點,則為 dc-1:3。

BAAS_USERGRID_URL

在正式環境中,這是 API BaaS 堆疊節點前端負載平衡器的網址和通訊埠,格式如下:

http://myStackLoadBalancer:8443

在測試或開發環境中,如果只有一個 API BaaS Stack 節點,則可以是 API BaaS Stack 節點的網址和通訊埠編號,格式如下:

http://stackIPorDNS:8080

API BaaS Stack 伺服器的通訊埠號碼為 8080。

BAAS_PORTAL_URL

如果入口網站前方有負載平衡器,請輸入負載平衡器的網址和通訊埠編號,格式如下:

http://myPortalLoadBalancer:8443

如果沒有負載平衡器,請輸入入口網站節點的網址和通訊埠編號,格式如下:

http://portalIPorDNS:9000

根據預設,API BaaS 入口網站的通訊埠編號為 9000。

BAAS_PORTAL_LISTEN_PORT

API BaaS 入口網站伺服器的通訊埠號碼為 9000。如果這個通訊埠無法使用,請指定其他通訊埠。

如果您將 BAAS_PORTAL_URL 設為入口網站節點的網址,則這兩個屬性的通訊埠編號必須相同。

選用 - 安裝 Cassandra:機器 8、9 和 10

雖然您可以將 API BaaS 連線至 Edge 使用的同一個 Cassandra 叢集,但 Apigee 建議您使用不同的叢集。

Cassandra 叢集可以使用驗證,也可以停用 Cassandra 驗證。詳情請參閱「啟用 Cassandra 驗證」。

  1. 使用網際網路或非網際網路程序,在節點上安裝 Edge apigee-setup 公用程式。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
  2. 在命令提示字元中,執行設定指令碼:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

    「-p c」選項指定安裝 Cassandra。
    設定檔必須可供「apigee」使用者存取或讀取。例如,將檔案放在節點的 /tmp 目錄中。

設定完成後,節點上的資料儲存庫設定就會順利完成。

請注意,Cassandra 預設會啟用 JMX。JMX 遠端存取 Cassandra 時不需要密碼。您可以設定 Cassandra,對 JMX 使用驗證機制。詳情請參閱「如何監控」。

設定 Cassandra Cron 工作

設定 Cron 工作,使用 nodetool 每小時在每個 Cassandra 節點上執行清除鎖定作業。

如果您有多個 Cassandra 節點,請將各伺服器的 Cron 工作時間錯開五分鐘,以免所有節點同時清除。

Cron 工作必須執行下列指令:

/opt/apigee/apigee-cassandra/bin/nodetool -h IP_address flush Apigee_Baas_Locks

其中 IP_address 是 Cassandra 節點的 IP 位址。

安裝 ElasticSearch:機器 1、2 和 3

如要安裝 ElasticSearch,請按照下列步驟操作:

  1. 使用網際網路或非網際網路程序,在節點上安裝 Edge apigee-setup 公用程式。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
  2. 在命令提示字元中執行設定指令碼:
    > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile

    「-p e」選項會指定安裝 ElasticSearch。
    設定檔必須可供「apigee」使用者存取或讀取。例如,將檔案放在節點的 /tmp 目錄中。
  3. (選用) 如果您在獨立節點上安裝 ElasticSearch (也就是未與 API BaaS Stack 一併安裝),請調整預設記憶體選項,將分配給 ElasticSearch 的記憶體從 4 GB 增加到 6 GB:
    1. 在編輯器中開啟 /opt/apigee/customer/application/elasticsearch.properties。如果這個檔案不存在,請建立檔案。
    2. 將 setenv_elasticsearch_max_mem_size 屬性設為 6g (預設值為 4g):
      setenv_elasticsearch_max_mem_size=6g
    3. 儲存檔案。
    4. 執行下列指令:
      > /opt/apigee/apigee-service/bin/apigee-service apigee-elasticsearch restart

設定成功在節點上完成設定。

安裝 API BaaS 堆疊:機器 4、5 和 6

如要安裝 API BaaS Stack,請按照下列步驟操作:

  1. 使用網際網路或非網際網路程序,在節點上安裝 Edge apigee-setup 公用程式。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
  2. 在命令提示字元中,執行設定指令碼:
    > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile

    「-p b」選項指定安裝 API BaaS Stack。
    設定檔必須可供「apigee」使用者存取或讀取。例如,將檔案放在節點的 /tmp 目錄中。

安裝程式擷取正確的管理員憑證後,會安裝 Tomcat、建立 API BaaS 鍵空間,並在伺服器上設定 API BaaS Stack。SMTP 也經過設定,可讓 UI 傳送密碼確認電子郵件。

安裝 API BaaS 入口網站:機器 7

如要安裝 API BaaS 入口網站,請按照下列步驟操作:

  1. 使用網際網路或非網際網路程序,在節點上安裝 Edge apigee-setup 公用程式。詳情請參閱「安裝 Edge apigee-setup 公用程式」。
  2. 在命令提示字元中,執行設定指令碼:
    > /opt/apigee/setup/bin/setup.sh -p p -f configFile

    「-p p」選項會指定安裝 API BaaS 入口網站。
    設定檔必須可供「apigee」使用者存取或讀取。例如,將檔案放在節點的 /tmp 目錄中。

安裝程式會啟動 Nginx 網路伺服器,然後完成 API BaaS 入口網站設定。

記下 API BaaS 入口網站網址。您可以在瀏覽器中輸入這個網址,存取 API BaaS 入口網站使用者介面。

為 Stack 或入口網站負載平衡器設定 API BaaS 節點

如果您在 Stack 或入口網站節點前方加入負載平衡器,則必須使用正確的負載平衡器網址設定節點。舉例來說,Stack 節點在下列情況下需要這項資訊:

  • 在 BaaS API 要求的網址中加入網址。
  • 在重設密碼或傳送其他通知時,在電子郵件範本中新增連結。
  • 將使用者重新導向至特定入口網站頁面。

如果您在 Stack 節點前方使用負載平衡器,請在 /opt/apigee/customer/application/usergrid.properties 中設定下列屬性:

usergrid-deployment_swagger.basepath=http://localhost:8080
usergrid-deployment_usergrid.organization.activation.url=http://localhost:8080/management/organizations/%s/activate
usergrid-deployment_usergrid.admin.activation.url=http://localhost:8080/management/users/%s/activate
usergrid-deployment_usergrid.admin.resetpw.url=http://localhost:8080/management/users/%s/resetpw
usergrid-deployment_usergrid.admin.confirmation.url=http://localhost:8080/management/users/%s/confirm
usergrid-deployment_usergrid.user.activation.url=http://localhost:8080/%s/%s/users/%s/activate
usergrid-deployment_usergrid.user.confirmation.url=http://localhost:8080/%s/%s/users/%s/confirm
usergrid-deployment_usergrid.user.resetpw.url=http://localhost:8080/%s/%s/users/%s/resetpw

將 http://localhost:8080 替換為負載平衡器的網址。如果負載平衡器設為使用 TLS,請使用 HTTPS 通訊協定。只有在使用非標準通訊埠 (即 HTTP 的通訊埠 80 和 HTTPS 的通訊埠 443 以外的通訊埠) 時,才需要加入通訊埠。

如果您在 Stack 節點前方使用負載平衡器,也必須在 /opt/apigee/customer/application/portal.properties 中設定下列屬性:

baas.portal.config.overrideUrl=http://localhost:8080

將 http://localhost:8080 替換為 Stack 負載平衡器的網址。

如果您在入口網站節點前方使用負載平衡器,請在 usergrid.properties 中設定下列屬性:

usergrid-deployment_usergrid.view.management.organizations.organization.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.organizations.organization.confirm=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.activate=http://localhost:9000
usergrid-deployment_usergrid.view.management.users.user.confirm=http://localhost:9000

將 http://localhost:9000 替換為負載平衡器的網址。如果負載平衡器設為使用 TLS,請使用 HTTPS 通訊協定。只有在使用非標準通訊埠 (即 HTTP 的通訊埠 80 和 HTTPS 的通訊埠 443 以外的通訊埠) 時,才需要加入通訊埠。

編輯 usergrid.properties 和 portal.properties 後:

  1. 設定 Stack 節點:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid configure
  2. 將變更部署至 Tomcat:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid deploy
  3. 重新啟動 BaaS 堆疊:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  4. 如果您修改了 portal.properties,請設定入口網站節點:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-portal configure
  5. 部署變更:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-portal deploy
  6. 重新啟動 BaaS 入口網站:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service baas-portal restart

開始使用新組織

新手上路是指建立組織和組織管理員的程序。建立組織和組織管理員後,您可以登入 API BaaS 入口網站 UI,並向 API BaaS REST API 提出要求。

建立組織時,組織管理員的電子郵件地址:

  • 不得與系統管理員的電子郵件地址相同。
  • 不得與其他組織重複。也就是說,您無法為組織管理員建立兩個電子郵件地址相同的機構。不過,建立機構後,您可以新增其他管理員,並在多個機構中複製這些管理員。

如要執行新手上路程序,請使用 create_org_and_user.py Python 指令碼。叫用這個指令碼時,如果不提供指令列引數,系統會提示您輸入所有資訊:

> python create_org_and_user.py

或者,您也可以將任何或所有選項做為指令列引數傳遞。系統會提示您輸入指令列中省略的任何資訊:

> python create_org_and_user.py -o '<org name>'
> python create_org_and_user.py -o '<org name>' -a '<new admin email>' -p '<new admin password>'

如要建立機構,請按照下列步驟操作:

  1. 將目錄變更為 /opt/apigee/baas-usergrid/bin。
  2. 叫用 create_org_and_user.py Python 指令碼。
    系統會提示您輸入 BaaS 系統管理員使用者名稱和密碼,因此只有系統管理員可以執行。
  3. 在網路瀏覽器中,使用 API BaaS 入口網站網址安裝作業結束時記下的網址,登入 API BaaS 入口網站。如要存取入口網站,請以下列格式輸入 API BaaS 入口網站網址:
    http://{portalExternalIP}:9000/

    注意:IP 是入口網站機器的外部 IP 位址/主機名稱。請確認該通訊埠已開啟。
  4. 入口網站登入畫面顯示後,你可以:
    • 使用機構組織管理員的使用者名稱和密碼登入。
    • 使用系統管理員的使用者名稱和密碼登入。

存取 API BaaS REST API

如要存取 API BaaS REST API,請使用下列格式的網址:

https://{loadBalancerIP}:8080/{your-org}/{your-app}

在開發環境中,您可以在單一節點上安裝所有 API BaaS 元件,也就是說,您有一個 API BaaS 堆疊。或者,您可能有一個小型環境,其中只有一個 API BaaS Stack 節點,且沒有負載平衡器。在這類環境中,您可以直接對 API BaaS Stack 節點發出 API 呼叫:

curl -v "http://portalExternalIP:8080/status"

如要進一步瞭解如何開始使用 API BaaS 入口網站,請參閱 Apigee 說明文件:http://apigee.com/docs/content/build-apps-home。