IBM Bluemix即时运行时(基于Cloud Foundry)通过在单个区域内的不同节点上运行应用程序的多个实例来支持应用程序可用性。 但是,要在Bluemix上交付真正强大的云应用程序,您应该考虑利用Bluemix的全球影响力的多区域架构。
当前,要在Bluemix上交付适当的多区域应用程序(一个跨区域负载平衡的应用程序)需要外部路由器或路由服务。 但是,即使您能够做到这一点,仍然面临着使动态内容在不同区域之间保持同步的挑战。 使用单一数据库方法,您的应用程序可能会遇到数据库延迟问题。 使用分布式数据库方法,您可能会发现您的分布式数据库并非旨在分布在全球范围内。
我将向您展示如何使用以下方法配置和运行多区域Bluemix应用程序:
IBM Cloudant NoSQL数据库的主到主复制以同步数据 Dyn与Traffic Director一起管理DNS,以提供地理负载平衡和故障转移要使用Dyn托管DNS,您必须控制一个可以委托给分配的Dyn域名服务器的域。 如果您已经拥有可以委派的域,请跳至步骤2。否则,请向任何经过认证的域注册商(例如Dyn的域注册商)注册一个 。
现在,对于要在其中托管应用程序的每个Bluemix区域重复步骤3-6,为该应用程序在每个区域中使用相同的名称和域。
要跨区域同步应用程序数据,请将每个Cloudant数据库配置为从其他每个区域中的数据库连续复制。
可以根据以下步骤从Cloudant仪表板手动完成此操作,也可以通过使用IBM jStart团队创建的此命令行实用程序来自动执行此操作 。
注意:如本文所述配置连续复制将导致配置区域之间频繁的API调用。 请考虑设置“ 支出通知”,以避免意外费用。
配置复制后,通过使用先前分配的“后门”路由在每个配置的区域中打开应用程序来测试复制:
地区 域 美国南部 mybluemix.net 英国 eu-gb.mybluemix.net 悉尼 au-syd.mybluemix.net 德国 eu-de.mybluemix.net将文件上传到一个区域,然后在其他区域刷新您的应用程序,以查看正在执行的复制。
主机到主机的数据复制是Cloudant / CouchDB的一项重要功能,但是您应该考虑如何处理文档冲突。 默认策略是随机选择一个冲突赢家,但是鼓励应用程序自己处理冲突。 最简单的方法是通过确保唯一的文档_id和避免文档更新来构建应用程序,以免发生冲突。
从Bluemix区中的任何一个,导航回应用概览页面,点击启用从连续交付瓦钮,并着手创建一个持续交付工具链 。
创建工具链后,单击“ 传递管道”磁贴。 该项目已经具有您创建项目所在区域的工作管道,但是您可能想要配置Deploy Stage以便部署到其他Bluemix区域。
您可以通过将其他作业添加到Deploy Stage来部署到其他Bluemix区域。 确保为每个区域正确设置目标,然后保存新配置。
现在已经配置了管道,让我们进行一些小的尝试。 导航回到工具链,单击Eclipse Orion Web IDE磁贴,单击页面顶部附近的编辑代码 ,在内置编辑器中打开manifest.yml文件,然后修改内存阈值和实例数:
applications: - path: . memory: 256M instances: 2 ...该代码告诉Bluemix运行2个应用程序实例(每个区域),而不是1个实例。无论是否进行DNS故障转移,都强烈建议运行应用程序的多个实例,以免发生孤立事件或平台维护时意外停机。
注意:非试用版Bluemix用户当前获得一个免费套餐,该套餐对应于整个月以512 MB的速度运行。 因为使用情况是跨地区汇总的,所以这意味着上述配置将使您超出这一层。
切换到GIT视图,提交并推送您的更改。
推送更改将自动调用传递管道,将更新部署到所有配置的区域。 导航回到传递管道以检查进度。
要通过您的定制域访问您的应用程序,您必须首先配置域名系统以解析您到Bluemix的路由。 要使用Dyn托管DNS进行此操作,请注册7天免费试用其托管DNS产品 。 或者,如果要配置地理负载平衡和故障转移,请与Dyn联系以获取其企业计划的价格和可用性。
注册后,登录到Dyn托管DNS门户并为您的自定义域创建一个新区域。
请注意Dyn分配给您的名称服务器。 从步骤1开始,您将需要在DNS注册服务器中将它们添加为NS记录,以将域委派给Dyn。 有关委派您的域的更多信息,请访问:
委派您的dyn.com网域 从其他注册商委托您的域在为您的域创建一个区域并将该域委派给Dyn之后,是时候为Bluemix应用程序配置一个子域了。 您可以通过在Bluemix中添加与您的应用程序的主机名匹配的新节点来做到这一点。
如果您已经注册了企业计划,请跳至Traffic Director部分,为您的节点配置负载平衡和故障转移。 如果没有,您将无法在没有附加路由层的情况下配置负载平衡,但是仍然可以继续从Dyn节点编辑器添加单个CNAME记录:
将CNAME字段设置为您首选的Bluemix区域的安全端点:
地区 CNAME 美国南部 secure.us-south.bluemix.net 英国 secure.eu-gb.bluemix.net 悉尼 secure.au-syd.bluemix.net注意:这些CNAME记录解析为与每个区域中默认“ mybluemix”域不同的IP。 如果要配置A记录,请确保使用这些安全CNAME端点的IP,以便支持来自自定义域的HTTPS。
Dyn Traffic Director是一种高度可配置的DNS流量管理服务,可通过响应池,规则集和监视器提供地理位置负载平衡和故障转移。 要为您的Bluemix应用程序配置Traffic Director,请从Dyn节点编辑器上的“添加新服务”下拉列表中选择它,给它一个标签,然后单击CREATE SERVICE 。
接下来,为每个Bluemix区域创建一个单独的响应池:
使用上一个表,为每个响应池添加一个具有相应Bluemix区域的安全端点的CNAME记录。
保留大多数字段的默认设置,但考虑将“记录服务模式”修改为“监视和删除”。 如果值为“ Monitor&Obey”,则从监视器成功连接一次后,故障转移流量将自动恢复到响应池。 这对于以服务的反复中断为特征的问题可能是成问题的。 通过将模式设置为“监视并删除”,恢复将成为手动干预。
接下来,为每个地理位置添加一个规则集,以配置使用哪个响应池处理哪些请求。
作为规则集的起点,您可以复制以下配置:
规则集 地理区域 响应池故障转移 美国 北美,南美 美国南部>英国>悉尼 欧洲/非洲 非洲,欧洲和俄罗斯 英国>悉尼>美国南部 亚太 南极洲,亚洲和澳大利亚 悉尼>英国>美国南部 全部匹配 您可以将其留空以匹配未定义的区域 悉尼>英国>美国南部除了地理配置之外,响应池故障转移字段还使用户可以自定义发生故障时要查阅的响应池。 要使用此功能,您还必须为您的应用程序配置监视器。
要配置Monitor的探测位置,请将协议保留为HTTP,将Port设置为80 ,并为您的Bluemix应用程序指定Host。 将“探测间隔”设置为较低以缩短潜在的停机时间,并使用将在工作应用程序中显示的信息配置“期望数据”字段。 在我们的示例应用程序中,您可以使用文本“由Cloudant驱动的收藏夹管理器”。
提示:在实际情况下,您可能希望在应用程序中包含一个专用的状态页,如果所有应用程序的服务依赖性也都在起作用,则该页仅返回期望的文本。
(可选)配置监视器在检测到服务中断时接收电子邮件的通知程序。 您可能还想在单独的选项卡中打开“探测结果”链接,以在测试配置时验证站点的状态检查。
配置响应池,规则集和监视器之后,请同时发布针对Traffic Director和您的区域的更改。 如果一切配置正确,您应该在节点配置编辑器中看到“ Traffic Director”服务(以及响应池的状态):
如果您使用Traffic Director进行地理负载平衡和故障转移,请继续执行以下操作:
登录到用于服务您的请求的区域的Bluemix控制台,然后停止该应用程序。 在浏览器中刷新您的应用程序,您应该会收到404错误。 在“节点编辑器”,“流量管理器”或“探测结果”页面打开的情况下刷新Dyn网站,直到看到状态已更新。 (请注意,这取决于您在上面配置的探测间隔。) Dyn确定故障后,该区域将故障转移到您的地理位置的下一个响应池。 从命令终端运行nslookup以查看您的DNS更改是否已生效。 该站点应在为A记录配置的TTL(生存时间)内的某个时间点解析为其新地址。 站点解析为其新IP后,请在新浏览器中加载页面。 请注意,已知有些浏览器(例如Google Chrome)可以缓存DNS响应,甚至超出已配置的TTL。 但是,即使在这些浏览器中,新IP也应在几分钟内生效。 现在,您的站点应该从配置的故障转移区域加载。 感谢Cloudant,您在原始区域上传的文件应该在那里等待着您!尽管Dyn Traffic Director提供了一种缓解特定于区域的中断的有用方法,但值得注意的是DNS故障转移具有明显的局限性:
Dyn Monitor最多每分钟轮询一次您的应用程序。 短于30秒的DNS TTL语句可能在网络上不被接受。 某些浏览器(例如Google Chrome)实现了“ DNS固定”功能,该功能可以将DNS响应缓存的时间甚至比配置的TTL还要长(每次本地测试最多5分钟)。组合使用时,这表示最坏情况下的窗口为6.5分钟(当用户的浏览器在发生故障转移之前固定IP时),尽管平均窗口应该短得多。
此外,在某些故障情况下,应用程序可能会在事件过程中上下移动。 为了避免在这些情况下恢复流量,我建议使用“监视并删除”服务模式来照顾流量恢复行为。
注意 :尽管未在本教程中进行探讨,但是您可以通过Dyn API从您自己的自定义监视器调用故障转移,从而进一步缩短60秒的监视窗口。 这也可以用于实现有关故障转移流量自动恢复的更复杂的规则。
使用Dyn的地理负载平衡,Bluemix数据中心将为全球范围内最适合您URL的访问者提供服务。 通过配置故障转移,您将不必担心,如果某个Bluemix区域开始遇到问题,您的用户将被定向到其中一个工作站点。 当与Cloudant主对主同步功能结合使用时,这提供了在Bluemix上运行容错云原生应用程序的诀窍。
翻译自: https://www.ibm.com/developerworks/cloud/library/cl-multi-region-bluemix-apps-with-cloudant-and-dyn-trs/index.html
相关资源:物联网摇动:使用IBM Cloud的示例演示应用程序:Watson IoTMQTTNode-RED + MessageHub + IBM Cloud Functions + Cloudant-源码