安装了 7 个主机和 10 个主机的 API BaaS

Edge for Private Cloud v. 4.16.05

使用负载平衡器

API BaaS 的生产环境安装在 API BaaS 门户节点和 API BaaS 堆栈节点之间使用负载平衡器。配置门户时,您需要指定负载平衡器的 IP 地址或 DNS 名称,而不是堆栈节点的 IP 地址或 DNS 名称。

作为负载平衡器的替代方案,您可以使用轮循 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 堆栈节点(包括 Tomcat 管理员界面)上安装 Apache Tomcat 服务器。安装程序将保留 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 堆栈:

> 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 堆栈,这也会安装 Tomcat。

p

仅安装 API BaaS 门户,该门户还会安装要用作 Web 服务器的 Nginx 路由器。

c

仅安装 Cassandra。

eb

在节点上安装 ElasticSearch、API BaaS Stack 和 Tomcat。

EBP

安装 ElasticSearch、API BaaS 门户、API BaaS 堆栈和 Tomcat。该门户非常轻巧,不需要额外的资源。

Asa

在单个节点(Cassandra、Elasticsearch、API BaaS 堆栈和 API BaaS 门户)上安装所有 API 组件。此选项仅适用于开发和测试,不适用于生产环境。

创建静默配置文件

下面显示了一个 10 节点 API BaaS 安装的静默配置文件示例。根据需要为您的配置修改此文件。使用 -f 选项 setup.sh 以包含此文件。

# 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 系统管理员请求此值。在边缘单数据中心安装中,默认值为 dc-1。

如果您在安装 API BaaS 时安装了 Cassandra,则在 Cassandra 安装期间,您为 Cassandra IP 地址添加了“:dc,ra”修饰符。第一个值“dc”是数据中心编号。数据中心名称是字符串“dc-”,以数据中心编号为后缀。

BAAS_CASS_REPLICATION

格式为“dataCenterName:#CassandraNodes”。 例如,对于具有三个 Cassandra 节点的 dc-1,应为 dc-1:3。

BAAS_USERGRID_URL

在生产环境中,这是 API BaaS 堆栈节点前面的负载平衡器的网址和端口,格式为:

http://myStackLoadBalancer:8443

在测试或开发环境中,您只有一个 API BaaS 堆栈节点,它可以是 API BaaS 堆栈节点的网址和端口号,格式如下:

http://stackIPorDNS:8080

API BaaS 堆栈服务器的端口号为 8080。

BAAS_PORTAL_URL

负载平衡器的网址和端口号(如果门户前面有负载平衡器),格式为:

http://myPortalLoadBalancer:8443

如果没有负载平衡器,则为门户节点的网址和端口号,格式为:

http://portalIPorDNS:9000

门户默认是 Baa0S。

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 作业

设置一个使用 nodetool 刷新的 Cron 作业,以便每小时在每个 Cassandra 节点上运行锁。

如果您有多个 Cassandra 节点,请将每台服务器上的 Cron 作业偏移五分钟,以免所有节点同时刷新。

Cron 作业必须执行以下命令:

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

其中 IP_address 是 Cassandra 节点的 IP 地址。IP_address

安装 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 分配的内存从 4GB 增加到 6GB:
    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 堆栈,请执行以下操作:

  1. 使用互联网或非互联网程序在节点上安装 Edge apigee-setup 实用程序。如需了解详情,请参阅安装 Edge apigee-setup 实用程序
  2. 在命令提示符处,运行设置脚本:
    > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile

    “-p b”选项指定安装 API BaaS 堆栈。
    配置文件必须可供“apigee”用户访问或读取。例如,将文件放在节点的 /tmp 目录中。

安装程序提取正确的管理员凭据后,会安装 Tomcat,创建 API BaaS 密钥空间,并在服务器上设置 API BaaS 堆栈。SMTP 还配置为允许界面发送密码确认电子邮件。

安装 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 Web 服务器,然后完成 API BaaS 门户配置。

记下 API BaaS 门户网址。这是您在浏览器中输入的用于访问 API BaaS 门户界面的网址。

为堆栈或门户负载平衡器配置 API BaaS 节点

如果您在堆栈或门户节点前面添加负载平衡器,则必须使用正确的负载平衡器网址配置节点。例如,在以下情况下,堆栈节点需要此信息:

  • 在 BaaS API 请求的响应中包含网址。
  • 重置密码或发送其他通知时,在电子邮件模板中添加链接。
  • 将用户重定向到特定门户页面。

如果在堆栈节点前使用负载平衡器,请在 /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)时,才需要包含端口。

如果您在堆栈节点前使用负载平衡器,还必须在 /opt/apigee/customer/application/portal.properties 设置以下属性:

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

http://localhost:8080 替换为堆栈的负载平衡器的网址。

如果您在门户节点之前使用负载平衡器,请在 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. 配置堆栈节点:
    > /<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 门户界面并向 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 堆栈节点且没有负载平衡器的小型环境。在此类环境中,您可以直接对 API BaaS 堆栈节点进行 API 调用:

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

如需详细了解如何开始使用 API BaaS 门户,请参阅位于 http://apigee.com/docs/content/build-apps-home 的 Apigee 文档。