cloudant_使用IBM Cloudant和Dyn配置和运行多区域Bluemix应用程序

IBM Bluemix即时运行时(基于Cloud Foundry)通过在单个区域内的不同节点上运行应用程序的多个实例来支持应用程序可用性。 但是,要在Bluemix上交付真正强大的云应用程序,您应该考虑利用Bluemix的全球影响力的多区域架构。

当前,要在Bluemix上交付适当的多区域应用程序(一个跨区域负载平衡的应用程序)需要外部路由器或路由服务。 但是,即使您能够做到这一点,仍然面临着使动态内容在不同区域之间保持同步的挑战。 使用单一数据库方法,您的应用程序可能会遇到数据库延迟问题。 使用分布式数据库方法,您可能会发现您的分布式数据库并非旨在分布在全球范围内。

我将向您展示如何使用以下方法配置和运行多区域Bluemix应用程序:

  • IBM Cloudant NoSQL数据库的主到主复制以同步数据
  • Dyn与Traffic Director一起管理DNS,以提供地理负载平衡和故障转移

注册域名

要使用Dyn托管DNS,您必须控制一个可以委托给分配的Dyn域名服务器的域。 如果您已经拥有可以委派的域,请跳至步骤2。否则,请向任何经过认证的域注册商(例如Dyn的域注册商)注册一个

Dyn域注册页面

在多个Bluemix区域中创建您的应用程序

  1. 导航到Bluemix(注册您的免费试用帐户,或者如果已经拥有一个帐户,则登录到Bluemix )。
  2. 在Bluemix控制台中,展开右上方的“帐户和支持”面板,并记下您当前所在的区域。 在撰写本文时,IBM Bluemix(公共)位于四个不同的区域:
    地区 位置 API端点
    德国 德国法兰克福 https://api.eu-de.bluemix.net
    悉尼 悉尼,澳大利亚 https://api.au-syd.bluemix.net
    英国 伦敦,英国 https://api.eu-gb.bluemix.net
    美国南部 德克萨斯州达拉斯 https://api.ng.bluemix.net
    每个Bluemix区域都是独立运行的,但是具有统一的计费和帐户系统。 完成以下步骤3-6之后,您将需要在其他Bluemix区域中重复它们。
  3. 选择“ 管理组织” ,然后选择“ DOMAINS”选项卡并添加您的域:
    添加域
  4. 如果要提供HTTPS流量(除了HTTP之外),那么还需要为您的域获取通配符SSL证书(例如* .ibmjstart.biz),并将其上传到Bluemix。 (有关更多信息,请参阅保护应用程序 。)
  5. 单击SAVE ,然后导航到CATALOG并创建Node.js Cloudant DB Web Starter样板的新实例。 为应用程序命名,并确保从“域”下拉列表中选择您的域:
    Node.js Cloudant DB Web入门
  6. 在应用程序暂存期间,导航至Overview页面,并添加具有Bluemix区域的默认域的第二条路由(例如,mybluemix.net)。
    添加第二条路线

    通过此路由,可以为在为自定义域配置DNS之前或之后访问在此特定区域中运行的应用程序的版本提供后门。 但是,如果您想限制对单个URL的访问,请不要忘记以后删除此路由。

现在,对于要在其中托管应用程序的每个Bluemix区域重复步骤3-6,为该应用程序在每个区域中使用相同的名称和域。

配置Cloudant复制

要跨区域同步应用程序数据,请将每个Cloudant数据库配置为从其他每个区域中的数据库连续复制。

可以根据以下步骤从Cloudant仪表板手动完成此操作,也可以通过使用IBM jStart团队创建的此命令行实用程序来自动执行此操作

注意:如本文所述配置连续复制将导致配置区域之间频繁的API调用。 请考虑设置“ 支出通知”,以避免意外费用。

手动配置

  1. 从每个区域的应用程序详细信息页面中,导航到“连接”视图,单击Cloudant NoSQL DB服务磁贴的“ 查看凭据”按钮,然后记下用户名和密码。 为了使不同的Cloudant帐户保持笔直,请考虑使用与以下格式类似的格式暂时将其记录下来:
    地区 用户名 密码 网址
    美国南部 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-bluemix
    英国 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-bluemix
    悉尼 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-bluemix
    德国 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-bluemix
  2. 注意密码后,点击瓷砖本身,然后启动 Cloudant仪表板。 每个区域的Cloudant实例应具有一个名为my_sample_db的数据库。
  3. 在每个Cloudant仪表板中,打开my_sample_db数据库的“ 权限”视图。 为其他每个区域中的Cloudant用户名授予复制者权限,或使用“ 生成API密钥”按钮为每个其他要使用的区域创建密钥/密码组合。
    Cloudant仪表板-权限视图
  4. 接下来,打开每个区域的“ 复制”部分,然后在其他区域的Cloudant DB的URL(包括用户名和密码)的末尾附加“ / my_sample_db”,以配置来自其他每个区域的连续复制任务:
    Cloudant仪表板-复制

    这应该在每个区域中创建一个名称为“ _replicator”的新数据库,并且每个复制任务需要一个文档。

测试复制

配置复制后,通过使用先前分配的“后门”路由在每个配置的区域中打开应用程序来测试复制:

地区
美国南部 mybluemix.net
英国 eu-gb.mybluemix.net
悉尼 au-syd.mybluemix.net
德国 eu-de.mybluemix.net

将文件上传到一个区域,然后在其他区域刷新您的应用程序,以查看正在执行的复制。

主机到主机的数据复制是Cloudant / CouchDB的一项重要功能,但是您应该考虑如何处理文档冲突。 默认策略是随机选择一个冲突赢家,但是鼓励应用程序自己处理冲突。 最简单的方法是通过确保唯一的文档_id和避免文档更新来构建应用程序,以免发生冲突。

将更新部署到您的应用程序

从Bluemix区中的任何一个,导航回应用概览页面,点击启用连续交付瓦钮,并着手创建一个持续交付工具链

创建工具链后,单击“ 传递管道”磁贴。 该项目已经具有您创建项目所在区域的工作管道,但是您可能想要配置Deploy Stage以便部署到其他Bluemix区域。

部署其他Bluemix区域

您可以通过将其他作业添加到Deploy Stage来部署到其他Bluemix区域。 确保为每个区域正确设置目标,然后保存新配置。

将作业添加到部署阶段

现在已经配置了管道,让我们进行一些小的尝试。 导航回到工具链,单击Eclipse Orion Web IDE磁贴,单击页面顶部附近的编辑代码 ,在内置编辑器中打开manifest.yml文件,然后修改内存阈值和实例数:

applications:
- path: .
  memory: 256M
  instances: 2
  ...

该代码告诉Bluemix运行2个应用程序实例(每个区域),而不是1个实例。无论是否进行DNS故障转移,都强烈建议运行应用程序的多个实例,以免发生孤立事件或平台维护时意外停机。

注意:非试用版Bluemix用户当前获得一个免费套餐,该套餐对应于整个月以512 MB的速度运行。 因为使用情况是跨地区汇总的,所以这意味着上述配置将使您超出这一层。

切换到GIT视图,提交并推送您的更改。

在GIT视图中推送更改

推送更改将自动调用传递管道,将更新部署到所有配置的区域。 导航回到传递管道以检查进度。

配置DNS

要通过您的定制域访问您的应用程序,您必须首先配置域名系统以解析您到Bluemix的路由。 要使用Dyn托管DNS进行此操作,请注册7天免费试用其托管DNS产品 。 或者,如果要配置地理负载平衡和故障转移,请与Dyn联系以获取其企业计划的价格和可用性。

Dyn托管DNS-可用计划

托管DNS

注册后,登录到Dyn托管DNS门户并为您的自定义域创建一个新区域。

Dyn托管DNS-创建新区域

请注意Dyn分配给您的名称服务器。 从步骤1开始,您将需要在DNS注册服务器中将它们添加为NS记录,以将域委派给Dyn。 有关委派您的域的更多信息,请访问:

  • 委派您的dyn.com网域
  • 从其他注册商委托您的域

在为您的域创建一个区域并将该域委派给Dyn之后,是时候为Bluemix应用程序配置一个子域了。 您可以通过在Bluemix中添加与您的应用程序的主机名匹配的新节点来做到这一点。

如果您已经注册了企业计划,请跳至Traffic Director部分,为您的节点配置负载平衡和故障转移。 如果没有,您将无法在没有附加路由层的情况下配置负载平衡,但是仍然可以继续从Dyn节点编辑器添加单个CNAME记录:

在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

试试看

  1. 这次使用您的自定义域在浏览器中加载应用程序,然后上传文件。 刷新页面以确保文件已正确上传。
  2. 从命令终端运行nslookup (或使用浏览器的开发人员工具)以查看哪个区域正在满足您的请求。

如果您使用Traffic Director进行地理负载平衡和故障转移,请继续执行以下操作:

  1. 登录到用于服务您的请求的区域的Bluemix控制台,然后停止该应用程序。
  2. 在浏览器中刷新您的应用程序,您应该会收到404错误。
  3. 在“节点编辑器”,“流量管理器”或“探测结果”页面打开的情况下刷新Dyn网站,直到看到状态已更新。 (请注意,这取决于您在上面配置的探测间隔。)
  4. Dyn确定故障后,该区域将故障转移到您的地理位置的下一个响应池。
  5. 从命令终端运行nslookup以查看您的DNS更改是否已生效。 该站点应在为A记录配置的TTL(生存时间)内的某个时间点解析为其新地址。
  6. 站点解析为其新IP后,请在新浏览器中加载页面。 请注意,已知有些浏览器(例如Google Chrome)可以缓存DNS响应,甚至超出已配置的TTL。 但是,即使在这些浏览器中,新IP也应在几分钟内生效。
  7. 现在,您的站点应该从配置的故障转移区域加载。 感谢Cloudant,您在原始区域上传的文件应该在那里等待着您!

DNS故障转移的局限性

尽管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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值