内容简介:使用 IBM Cloudant 和 Dyn 配置并运行一个多地区 Bluemix 应用程序
IBM Bluemix 即时运行时(基于 Cloud Foundry)通过在一个地区内的多个节点上运行应用程序的多个实例来支持应用程序可用性。但是,要在 Bluemix 上提供真正可靠的云应用程序,应该考虑采用某种利用了 Bluemix 的全球覆盖范围的多地区架构。
目前,在 Bluemix 上交付一个合适的多地区应用程序(能跨地区执行负载平衡的应用程序)需要一个外部路由器或路由服务。但是,即使在您完成该应用程序后,仍会面临保持您的动态内容在不同地区间同步的挑战。如果采用单一数据库方法,您的应用程序可能遇到数据库延迟问题。如果采用分布式数据库方法,您可能发现您的分布式数据库不适合分散到全球。
我将介绍如何通过以下方式配置和运行一个多地区 Bluemix 应用程序:
- IBM Cloudant NoSQL Database 的 master-to-master 复制同步您的数据
- 带 Traffic Director 的 Dyn Managed DNS 提供了地区负载平衡和故障转移
第 1 步. 注册一个域
要使用 Dyn Managed DNS,必须控制一个可以委托给您分配的 Dyn 名称服务器的域。如果已经有一个可以委托的域,请跳到第 2 步。如果没有,那么应该向任何经过认证的域名注册商(比如 Dyn 的域名注册商 )注册一个域。
第 2 步. 在多个 Bluemix 地区创建您的应用程序
- 导航到Bluemix,注册(如果需要)并登录。
- 在 Bluemix 控制台中,展开右上角的 Account and Support 面板并记下您目前所在的地区。截至编写本文时,IBM Bluemix 是从 3 个不同地区托管的:
地区 位置 控制台 URL API 端点 Sydney 澳大利亚悉尼 https://console.au-syd.bluemix.net https://api.au-syd.bluemix.net United Kingdom 英国伦敦 https://console.eu-gb.bluemix.net https://api.eu-gb.bluemix.net US South 德克萨斯州达拉斯 https://console.ng.bluemix.net https://api.ng.bluemix.net - 选择 Manage Organizations ,然后选择 DOMAINS 选项卡并添加您的域:
- 如果(除 HTTP 外)您想处理 HTTP 流量,那么还需要为您的域提供一个通配符 SSL 证书(例如 *.ibmjstart.biz),并将它上传到 Bluemix。(在 保护应用程序 上了解有关的更多信息。)
- 单击 SAVE ,然后导航到 CATALOG 并创建 Node.js Cloudant DB Web Starter 样板的一个新实例。为应用程序提供一个名称,确保已从 Domain 下拉列表中选择了您的域:
- 在载入应用程序期间,导航到 Overview 页面并单击 图标添加第二个路由,其中包含您的 Bluemix 地区的默认域(例如 mybluemix.net)。
- 展开您的 Cloudant NoSQL DB 服务磁贴的 Show Credentials 部分,记下您的 Cloudant 帐户的密码 — 本教程后面将使用该密码。为了让不同的 Cloudant 用户名和密码保持简单,可以考虑使用一个格式类似下表的临时表:
地区 用户名 密码 US South -bluemix United Kingdom -bluemix Sydney -bluemix - 记下密码后,单击该磁贴本身,然后单击 LAUNCH 启动 Cloudant 仪表板。您会有一个名为 my_sample_db 的数据库。保持仪表板处于打开状态,返回到 Bluemix 控制台。
现在对您希望托管您的应用程序的每个 Bluemix 地区重复第 3-8 步,在每个地区为该应用程序提供相同的名称和域。完成上述操作后,您的 Node.js Cloudant DB Web Starter 应该已在每个 Bluemix 地区运行,并为每个地区打开了一个 Cloudant 仪表板。
第 3 步. 配置 Cloudant 复制
- 在每个 Cloudant 仪表板中,打开 my_sample_db 数据库的 Permissions 视图。为其他每个地区中的 Cloudant 用户名授予 Replicator 权限,或者使用 Generate API key 按钮创建一个密钥/密码组合,供其他每个地区使用。
- 现在打开每个地区的 Replication 部分,从其他每个地区配置一个连续复制任务:
- 配置复制后,使用您之前分配的 “后门” 路由在每个配置的地区打开您的应用程序,以便测试它们:
地区 域 US South mybluemix.net United Kingdom eu-gb.mybluemix.net Sydney au-syd.mybluemix.net
Master-to-master 数据复制是 Cloudant/CouchDB 的一个良好功能,但您应该考虑如何处理文档冲突。默认策略是随机挑选冲突优胜者,但应用程序可以自行处理冲突。为此,最轻松的方式是将您的应用程序设计为通过确保唯一的 document _id 和避免文档更新来避免冲突。
阅读: 有关冲突解决的更多信息
第 4 步. 将更新部署到您的应用程序
从任何 Bluemix 地区导航回应用程序 Overview 页面,单击右上角的 ADD GIT ,然后根据对话框在新 Bluemix DevOps Services 项目中填充样板的内容。
创建存储库后,关闭该对话框并单击 GIT URL ,在 IBM Bluemix DevOps Services 中打开您的项目。接下来,单击 BUILD & DEPLOY 打开您项目的部署管道。该项目已有一个针对创建该项目时所在地区的工作管道,但您可能希望配置 Deploy Stage,将它部署到其他 Bluemix 地区。
您可以通过向 Deploy Stage 添加其他作业将其部署到其他 Bluemix 地区。一定要正确设置每个地区的目标,并保存新的配置。
现在已配置好该管道,让我们尝试稍作更改。单击页面顶部附近的 EDIT CODE ,在内置编辑器中打开 manifest.yml 文件,修改内存阈值和实例数量:
applications: - path: . memory: 256M instances: 2 ...
此代码告诉 Bluemix 平台(在每个地区)运行该应用程序的 2 个实例,而不是 1 个实例。无论是否采用 DNS 故障转移,都强烈建议运行应用程序的多个实例,避免在发生隔离的事故或平台维护时出现意外宕机。
备注:非试用版 Bluemix 用户会收到为期一个月在 512 MB 下运行的免费限额。因为各个地区的使用量会聚合在一起,所以这意味着上述配置将会让您超出此限额。
切换到 GIT 视图,并提交和推送您的更改。
推送您的更改会自动调用交付管道,将您的更新部署到所有已配置的地区。导航回 BUILD & DEPLOY 部分来检查进度。
第 5 步. 配置 DNS
要通过自定义域访问您的应用程序,必须首先配置域名系统,将您的路由解析到 Bluemix。要使用 Dyn Managed DNS 实现此目的, 注册其 Managed DNS 产品的 7 天免费试用版帐户 。如果想要配置地理负载平衡和故障转移,可以联系 Dyn 了解其企业计划的定价和可用性。
Managed DNS
注册后,请登录到 Dyn Managed DNS 门户并为您的自定义域创建一个新区域。
记下 Dyn 分配给您的名称服务器。您需要将它们作为 NS 记录添加到第 1 步的 DNS 注册商中,以便将您的域委托给 Dyn。可以通过以下配置了解委托您的域的更多信息:
- 委托您的 dyn.com 域
- 从一个不同的注册商委托您的域
为您的域创建一个区域并将该域委托给 Dyn 后,是时候为您的 Bluemix 应用程序配置一个子域了。为此,可以添加一个与您在 Bluemix 中的应用程序的主机名相匹配的新节点。
如果已登记参加了企业计划,请跳到 Traffic Director 部分为您的节点配置负载平衡和故障转移。如果没有登记参加企业计划,则无法在没有额外的路由层的情况下配置负载平衡,但您仍然可以继续从 Dyn 节点编辑器添加单个 CNAME Record:
将 CNAME 字段设置为您首选的 Bluemix 地区的安全端点:
地区 | CNAME |
---|---|
US South | secure.us-south.bluemix.net |
United Kingdom | secure.eu-gb.bluemix.net |
Sydney | secure.au-syd.bluemix.net |
备注: 这些 CNAME 记录被解析为不同于每个地区中的默认 “mybluemix” 域的 IP。如果您希望配置 A Records,必须使用这些安全 CNAME 端点的 IP,才能支持来自您的自定义域的 HTTPS。
Traffic Director
Dyn Traffic Director 是一种高度可配置的 DNS 流量管理服务,它通过响应池、规则集和监视器来提供地理位置负载平衡和故障转移。要为您的 Bluemix 应用程序配置 Traffic Director,可从 Dyn 节点编辑器上的 “Add a New Service” 下拉列表中选择它,为它提供一个标签,然后单击 CREATE SERVICE 。
接下来,为每个 Bluemix 地区创建一个单独的响应池:
使用前面的表,添加一个 CNAME Record,其中包含每个响应池的相应 Bluemix 地区的安全端点。
保留大部分字段的默认值,但可以考虑将 “Record Serve Mode” 修改为 “Monitor & Remove”。借助 “Monitor & Obey” 值,在从监视器建立一个成功连接后,故障转移流量会自动还原到响应池。这可能会导致服务反复中断。通过将模式设置为 “Monitor & Remove”,恢复就会变成一种手动干预。
接下来,为每个地区添加一个规则集来配置使用哪个响应池来处理哪些请求。
作为您的规则集的起点,可以复制以下配置:
规则集 | 地理区域 | 响应池故障转移 |
---|---|---|
美洲 | 北美洲、南美洲 | US South > United Kingdom > Sydney |
欧洲/非洲 | 非洲、欧洲和俄罗斯 | United Kingdom > Sydney > US South |
亚太地区 | 南极洲、亚洲和澳大利亚 | Sydney > United Kingdom > US South |
匹配所有 | 可以将此保留为空来匹配未定义的区域 | Sydney > United Kingdom > US South |
除了地区配置之外,Response Pool Failover 字段还允许用户自定义在发生故障时采用哪些响应池。要使用此功能,还必须为您的应用程序配置一个监视器。
要配置监视器的探测位置,可将协议保留为 HTTP,将端口设置为 80 ,并指定您的 Bluemix 应用程序的主机。设置较低的 Probe Interval 来缩短潜在宕机时间,为 Expected Data 字段配置将出现在正常运行的应用程序中的信息。在我们的示例应用程序中,可以使用文本 “Favorites Organizer powered by Cloudant.”。
提示:在真实场景中,您可能希望在您的应用程序中包含一个专门的状态页面,它仅在应用程序的所有服务依赖项都正常运行时才返回预期的文本。
配置一个通知程序,以便在监视器检测到服务中断时收到一封电子邮件,这是一项可选操作。在测试配置时,您可能还希望在一个单独的选项卡中打开 Probe Results 链接,以验证对您的网站的状态检查。
配置响应池、规则集和监视器后,发布您对 Traffic Director 和区域的更改。如果所有设置都正确配置,那么您会看到节点配置编辑器中列出了 Traffic Director 服务(和您的响应池的状态):
第 6 步. 尝试运行
- 在浏览器中加载您的应用程序(这次使用您的自定义域)并上传一个文件。刷新该页面,确保该文件已正确上传。
- 从命令终端(或使用您浏览器的开发人员工具)运行
nslookup
来查看哪个地区在处理您的请求。
如果使用 Traffic Director 来执行地区负载平衡和故障转移,可继续:
- 登录到处理您的请求的地区的 Bluemix 控制台并停止该应用程序。
- 在浏览器中刷新您的应用程序,您会收到一个 404 错误。
- 刷新 Dyn 网站,保持 Node Editor、Traffic Director 或 Probe Results 页面处于打开状态,直到您看到状态更新。(请注意,这将取决于您在上面配置的 Probe Interval。)
- Dyn 识别故障后,该地区会将故障转移到您的地区的下一个响应池。
- 从命令终端运行
nslookup
来查看 DNS 更改是否已生效。该网站应在为您的 A Records 配置的 TTL(存活时间)内的某个时刻解析到它的新地址。 - 该网站解析到它的新 IP 后,在一个新浏览器中加载该页面。请注意,一些浏览器(比如 Google Chrome)会将 DNS 响应缓存到已配置的 TTL 之后。但是,甚至在这些浏览器中,新 IP 也应在几分钟内生效。
- 您的网站现在应从配置的故障转移地区加载。得益于 Cloudant,您在最初的地区上传的文件应仍然存在!
DNS 故障转移的限制
尽管 Dyn Traffic Director 提供了一种有用的方法来减轻特定于地区的宕机,但值得注意的是 DNS 故障转移有一些重要的限制:
- Dyn Monitor 最快每分钟轮询您的应用程序一次。
- 网络上可能不会执行短于 30 秒的 DNS TTL 语句。
- 一些浏览器(比如 Google Chrome)实现了 “DNS 锁定 (DNS Pinning)”,它会将 DNS 响应缓存比配置的 TTL 更长的时间(我的每次本地测试最长为 5 分钟)。
二者相结合,可实现最长 6.5 分钟的窗口(当用户的浏览器在发生故障转移之前锁定一个 PI 时),但平均窗口会短得多。
此外,在一些故障场景中,应用程序可能在事故过程中反复启动停止。为了避免在这些场景中恢复流量,我推荐使用 “Monitor & Remove” 服务模式来处理流量恢复行为。
备注:尽管本教程中没有介绍,但您可以通过 Dyn API 从您自己的自定义监视器调用故障转移功能,进一步缩短 60 秒的监视窗口。这也可以用于实现与自动恢复故障转移流量相关的更复杂规则。
结束语
使用 Dyn 的地区负载平衡,您的 URL 的全球访问者将由最靠近其位置的 Bluemix 数据中心处理。通过配置故障转移,您能够明确知道,如果一个 Bluemix 地区开始出现问题,那么您的用户将会定向到一个有效的站点。与 Cloudant master-to-master 同步功能相结合,是在 Bluemix 上运行容错、云原生应用程序的秘诀。
BLUEMIX SERVICES USED IN THIS TUTORIAL:
- Cloudant NoSQL 服务 提供了访问一个始终在线、全面托管的 NoSQL JSON 数据层的能力。
- IBM Bluemix DevOps Services 为您的团队提供了一个集成的应用程序开发和部署的服务集合,所以您始终可以更快地交付高质量的软件。
以上所述就是小编给大家介绍的《使用 IBM Cloudant 和 Dyn 配置并运行一个多地区 Bluemix 应用程序》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Fuchsia 操作系统将支持运行 Linux 应用程序
- K8S集群入门:运行一个应用程序究竟需要多少集群?
- 构建一个运行在Azure虚拟机上的MySQL Spring Boot应用程序
- 讨论在 Linux Control Groups 中运行 Java 应用程序的暂停问题
- Windows 上的应用程序在运行期间可以给自己改名(可以做 OTA 自我更新)
- 微软的Azure Stack HCI:运行连接Azure的虚拟化应用程序的新选择
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
人人都是产品经理——写给产品新人
苏杰 / 电子工业出版社 / 2017-6 / 66.60
《人人都是产品经理——写给产品新人》为经典畅销书《人人都是产品经理》的内容升级版本,和《人人都是产品经理2.0——写给泛产品经理》相当于上下册的关系。对于大量成长起来的优秀互联网产品经理、众多想投身产品工作的其他岗位从业者,以及更多有志从事这一职业的学生而言,这《人人都是产品经理——写给产品新人》曾是他们记忆深刻的启蒙读物、思想基石和行动手册。作者以分享经历与体会为出发点,以“朋友间聊聊如何做产品......一起来看看 《人人都是产品经理——写给产品新人》 这本书的介绍吧!