Edge for Private Cloud v. 4.16.05
使用负载均衡器
API BaaS 的生产安装在 API BaaS 门户节点和 API BaaS Stack 节点之间使用负载均衡器。配置 Portal 时,您需要指定负载均衡器的 IP 地址或 DNS 名称,而不是 Stack 节点的 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 Stack 节点上安装 Apache Tomcat 服务器,包括 Tomcat 管理员界面。安装程序会将默认管理员凭据保留为 admin:admin。
如有必要,您可以在保护 Tomcat 的过程中更改这些凭据。如需了解详情,请参阅:
- https://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html
- https://www.owasp.org/index.php/Securing_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 Stack 和 Tomcat。该门户非常轻量,无需为此额外配置资源。 |
|
asa |
在单个节点上安装所有 API 组件(Cassandra、Elasticsearch、API BaaS Stack 和 API BaaS 门户)。此选项仅适用于开发和测试,不适用于生产环境。 |
创建静默配置文件
下面显示了一个 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 |
Cassandra 用户名和密码。 如果 Cassandra 身份验证已停用,您仍必须传递这些值。不过,这些值会被忽略。 |
|
BAAS_CASS_LOCALDC |
区域名称必须采用 dc-# 格式,其中 # 对应于一个整数值。 例如,dc-1、dc-2 等。如果您要连接到使用 Edge 安装的 Cassandra 集群,可以向 Edge 系统管理员询问此值。在 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 Stack 节点前面的负载均衡器的网址和端口,格式如下: 在测试或开发环境中,如果您只有一个 API BaaS Stack 节点,则可以是 API BaaS Stack 节点的网址和端口号,格式如下: http://stackIPorDNS:8080 API BaaS Stack 服务器的端口号为 8080。 |
|
BAAS_PORTAL_URL |
负载均衡器的网址和端口号(如果门户前面有负载均衡器),格式如下: |
|
BAAS_PORTAL_LISTEN_PORT |
API BaaS 门户服务器的端口号为 9000。如果此端口不可用,请指定其他端口。 如果您将 BAAS_PORTAL_URL 设置为 Portal 节点的网址,则这两个属性的端口号必须相同。 |
可选 - 安装 Cassandra:机器 8、9 和 10
虽然您可以将 API BaaS 连接到 Edge 使用的同一 Cassandra 集群,但 Apigee 建议您使用单独的集群。
Cassandra 集群可以使用身份验证,也可以停用 Cassandra 身份验证。如需了解详情,请参阅启用 Cassandra 身份验证。
- 使用互联网或非互联网过程在节点上安装 Edge apigee-setup 实用程序。如需了解详情,请参阅安装 Edge apigee-setup 实用程序。
- 在命令提示符处,运行设置脚本:
> /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
“-p c”选项指定安装 Cassandra。
配置文件必须可供“apigee”用户访问或读取。例如,将文件放在节点上的 /tmp 目录中。
该配置会成功完成节点上的数据存储区设置。
请注意,Cassandra 默认启用 JMX。对 Cassandra 的 JMX 远程访问不需要密码。您可以将 Cassandra 配置为对 JMX 使用身份验证。如需了解详情,请参阅如何监控。
设置 Cassandra cron 作业
设置一个 cron 作业,该作业使用 nodetool 每小时在每个 Cassandra 节点上运行一次刷新锁。
如果您有多个 Cassandra 节点,请将每个服务器上的 cron 作业偏移 5 分钟,以便所有节点不会同时刷新。
cron 作业必须执行以下命令:
/opt/apigee/apigee-cassandra/bin/nodetool -h IP_address flush Apigee_Baas_Locks
其中 IP_address 是 Cassandra 节点的 IP 地址。
安装 ElasticSearch:机器 1、2 和 3
如需安装 ElasticSearch,请执行以下操作:
- 使用互联网或非互联网过程在节点上安装 Edge apigee-setup 实用程序。如需了解详情,请参阅安装 Edge apigee-setup 实用程序。
- 在命令提示符处,运行设置脚本:
> /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
“-p e”选项指定安装 ElasticSearch。
配置文件必须可供“apigee”用户访问或读取。例如,将文件放在节点上的 /tmp 目录中。 - (可选)如果您在独立节点上安装 ElasticSearch(即未与 API BaaS Stack 一起安装),请调整默认内存选项,将为 ElasticSearch 分配的内存从 4GB 增加到 6GB:
- 在编辑器中打开 /opt/apigee/customer/application/elasticsearch.properties。如果此文件不存在,请创建一个。
- 将 setenv_elasticsearch_max_mem_size 属性设置为 6g(默认值为 4g):
setenv_elasticsearch_max_mem_size=6g - 保存文件。
- 运行以下命令:
> /opt/apigee/apigee-service/bin/apigee-service apigee-elasticsearch restart
该配置成功完成了节点上的设置。
安装 API BaaS 堆栈:机器 4、5 和 6
如需安装 API BaaS 堆栈,请执行以下操作:
- 使用互联网或非互联网过程在节点上安装 Edge apigee-setup 实用程序。如需了解详情,请参阅安装 Edge apigee-setup 实用程序。
- 在命令提示符处,运行设置脚本:
> /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 也已配置为允许界面发送密码确认邮件。
安装 API BaaS 门户:机器 7
如需安装 API BaaS 门户,请执行以下操作:
- 使用互联网或非互联网过程在节点上安装 Edge apigee-setup 实用程序。如需了解详情,请参阅安装 Edge apigee-setup 实用程序。
- 在命令提示符处,运行设置脚本:
> /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 节点
如果您在 Stack 或 Portal 节点前面添加了负载均衡器,则必须为这些节点配置负载均衡器的正确网址。例如,在以下情况下,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 的负载均衡器的网址。
如果您在 Portal 节点前面使用负载均衡器,请在 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 后:
- 配置 Stack 节点:
> /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid configure - 将更改部署到 Tomcat:
> /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid deploy - 重启 BaaS 堆栈:
> /<inst_root>/apigee/apigee-service/bin/apigee-service baas-usergrid restart - 如果您修改了 portal.properties,请配置门户节点:
> /<inst_root>/apigee/apigee-service/bin/apigee-service baas-portal configure - 部署更改:
> /<inst_root>/apigee/apigee-service/bin/apigee-service baas-portal deploy - 重启 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>'
如需创建组织,请执行以下操作:
- 将目录更改为 /opt/apigee/baas-usergrid/bin。
- 调用 create_org_and_user.py Python 脚本。
系统会提示您输入 BaaS 系统管理员用户名和密码,以便只有系统管理员可以运行它。 - 在 Web 浏览器中使用您在 API BaaS 门户网址安装结束时记下的网址登录 API BaaS 门户。如需访问门户,请按以下格式输入 API BaaS 门户网址:
http://{portalExternalIP}:9000/
注意:IP 是门户机器的外部 IP 地址/主机名。确保该端口处于打开状态。 - 当门户登录界面出现时,您可以执行以下任一操作:
- 使用组织管理员的用户名和密码登录。
- 使用系统管理员的用户名和密码登录。
访问 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。