首页 文章

有没有办法在Bluemix中备份Liberty服务器部署?

提问于
浏览
4

我正在将一个打包的自由服务器部署到包含我的应用程序的Bluemix中 .

我想更新我的应用程序,但在此之前,我想知道什么是备份我当前正在运行的最佳方法?如果我的更新不好,我想恢复以前版本的应用程序 .

换句话说,更新Bluemix中Liberty服务器上运行的Web应用程序的最佳实践或建议方法是什么 . 我是否只是保留了我推送到Bluemix的zip的备份并在出现问题时恢复它?或者Bluemix是否提供备份和还原的管理功能?

3 回答

  • 5

    您应该使用某种source control,例如Git或SVN . Bluemix很好地与IBM DevOps Services (IDS)集成,可以利用git或外部Github repo来管理您的项目 . 当您打开应用程序的仪表板时,您应该会在右上角看到一条名为"ADD GIT"的链接 . 这将自动为IDS中的项目创建一个git仓库 .

    使用SCM工具,您可以相对轻松地管理代码的版本 . IDS为您提供了直接部署到Bluemix作为构建管道的一部分的能力 .

    按照上面的方式管理代码后,您可以按照上面的建议考虑绿色/蓝色部署等 .

  • 0

    据了解,推拉链的手动备份是可接受的策略 . 此外,我发现Bluemix文档Blue-green deployments是一个合理的解决方案,因为它是一种利用持续交付的部署技术,允许客户在发生任何问题时回滚其应用程序 .

    Cloud Foundry文章Using Blue-Green Deployment to Reduce Downtime and Risk简明扼要地解释了部署步骤(因为Bluemix基于Cloud Foundry,步骤类似于示例:在前面引用的Bluemix文档中使用cf map-route命令步骤) .

  • 7

    我同意Ryan建议使用蓝/绿方法,尽管 Cloud 服务器部署的新手可能不熟悉这个术语 . Martin Fowler总结了它在_2724129中解决的问题:

    自动部署的挑战之一是切换本身,将软件从测试的最后阶段带到现场制作 . 您通常需要快速执行此操作以最大限度地减少停机时间 . 蓝绿色部署方法通过确保您拥有两个尽可能相同的 生产环境 环境来实现此目的 . 在任何时候,其中一个,例如蓝色的例子,就是现场 . 在准备软件的新版本时,您将在绿色环境中进行最后的测试阶段 . 一旦软件在绿色环境中工作,您就切换路由器,以便所有传入的请求都进入绿色环境 - 蓝色环境现在处于空闲状态 .

    解决此问题是PaaS的主要优势之一 .

    也就是说,对于历史背景而言,值得注意的是,这种蓝/绿策略对 Cloud 计算来说并不陌生 . 请允许我详细说明处理此问题的“旧”方法之一:

    假设我有一个托管在专用服务器上的网站 myexample.com . 面向公众的服务器的IP地址("blue")将在DNS "@"条目中表示,或者作为 CNAME 别名表示;另一台服务器("green")将托管较新版本的应用程序 . 要以面向公众的方式测试新应用程序而不影响实时 生产环境 环境,我只需更新 /etc/hosts 以将顶级域名映射到绿色服务器的IP地址 . 例如:

    129.42.208.183 www.myexample.com myexample.com
    

    刷新本地DNS条目并关闭所有浏览器后,所有请求都将被定向到绿色预 生产环境 环境 . 一旦我按预期确认了所有工作,我就会更新实时环境的DNS条目(在这种情况下为 myexample.com ) . 假设DNS有一个相当短的TTL值,如300秒,如果按IP或 CNAME 记录值(如果是别名),则更新 A 记录值,并且更改将在几分钟内传播到DNS服务器 . 为了确认新DNS值的传播,我注释掉上述的 /etc/hosts 更改,刷新本地DNS条目,然后运行 traceroute . 假设它在本地正确解析,我会使用免费的在线DNS检查程序(例如,whatsmydns.net)对世界其他地方进行最后的双重检查 .

    以上假设对面向公众的内容服务器(例如,连接到数据库或应用服务器的Apache服务器)进行更新;如果更新适用于中央数据库或类似的事务数据服务器,则从预 生产环境 到 生产环境 的转换更为复杂 . 如果它对网站访问者没有太大的破坏性,我会禁用登录并删除所有活动会话,从而有效地将网站呈现为只读 . 然后我以与前面描述的相同的方式更新后端服务器,即切换预 生产环境 绿色前端以引用预 生产环境 绿色后端中的复制,测试,然后当所有内容都检出时,切换绿色前端为蓝色并重新启用登录 . 瞧 .

    好消息是,使用Bluemix,上述相同的策略适用,但由于没有必要,因此简化了大惊小怪的DNS条目或单独的服务器 .

    相反,您创建了两个应用程序,一个是实时的("blue"),另一个是预 生产环境 ("green") . 您可以更新预 生产环境 应用程序( cf push Green 将新代码推送到预 生产环境 应用程序),而不是更改站点的DNS条目并等待更新在世界各地传播,而是使用自己的URL( Green.ng.mybluemix.net )对其进行测试,准备好 生产环境 后,将应用程序添加到路由表( cf map-route Green ng.mybluemix.net -n Blue ),此时应用程序"blue"和"green"将接收传入请求 . 然后,您可以通过取消映射( cf unmap-route Blue ng.mybluemix.net -n Blue )使之前的应用程序版本脱机 .

    网站访问者不会遇到任何服务中断,而且与我之前概述的“旧”方式不同,部署团队(a)在知道某些内容不起作用之前,不必咬指甲等待DNS条目在世界各地传播 . (b)如果在部署后发现严重问题,可以立即恢复到以前已知的工作 生产环境 版本 .

相关问题