欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ghost如何从独立服务器迁移到DigitalOcean的经验

程序员文章站 2024-01-30 16:27:10
...

Ghost是一个博客平台,随着业务发展,遇到了用户快速增长,每月要面对1亿的访问请求,为了应付增长,需要至少2个月的时间来采购服务器和进行配置。独立服务器已经制约了Ghost的进一步发展,这是迁移至云端的的原因。这篇文章翻译自Ghost运维工程师分享的迁移经验。

需求

将近一年多的Ghost专业版的运营,下一个基础设施应该满足以下条件

Ability to scale up server capacity within minutes(快速扩容)
Enough RAM to serve thousands of blogs(足够的内存满足上千个博客)
Offer great customer support(强大的客户支持)
Allow us to migrate our software without a significant refactor(不需要重大的软件架构)
DigitalOcean satisfied all of these requirements.(DigitalOcean满足我们的服务)

迁移大纲

Secure public network(安全公共网络)
Secure private network(安全专用网络)
Replicate databases(复制数据库)
Update DNS (cutover exclusively to destination servers)(更新DNS)
Decommission old environment(淘汰旧环境)```

#完成后的架构

CloudFlare的提供内容分发网络(CDN),域名服务(DNS),缓存和防止恶意请求
核心服务提供用户服务和支付管理
缓存服务器加速用户访问和跳转错误访问
应用服务器主要运行用户博客程序
数据库是基于MySQL的集群,存储数据
Github进行代码管理
Ruxit负责监控
Amazon S3负责加密数据和整体备份


#Step1:创建服务器清单
> 这一步的目的是把当前运行服务器的所有架构和配置整理出来

**为什么?**

规划任何服务的迁移,能够完整再现现有的服务是很重要的,可以确保迁
移顺利进行。需要所有的服务器和软件组件的内容。
Ghost(Pro)成立之初,就创建了快捷方式并且运行很快,我们手工配置服务器,虽然现在运行良好,我们并不是拥有所有的配置细节文档。

**如何做?**
为了整理出来完整的软件包、部署清单等,我们考虑了当前流行的几个配置管理工具,包括Puppet, Chef, Ansible, 和 SaltStack,我们需要一个能够完成工作并且不太复杂的工具,最终我们选择了SaltStack.
选择的原因是
轻小、便于安装和维护
采用master/minon管理架构,由master推送更新道minon,降低了minon向master索取更新可能带来的风险
有一个专门的主服务器,可以防止管理员和开发者从未授权的服务器更新内容
使用ZeroMQ队列服务,相比SSH,更低的功耗,支持加密
SaltStack包含Salt Cloud服务,可以和DigitalOcean的API快速对接,几分钟就可以实现部署管理

**结果**
第一次基础部署花了大概三周时间,第二迭代花了一周,最后部署生产环境,只需要2天时间就可以完成部署。

#资源
[SaltStack使用说明**](https://link.zhihu.com/?target=https%3A//www.digitalocean.com/community/tutorials/an-introduction-to-saltstack-terminology-and-concepts)
[如何安装Puppet**](https://link.zhihu.com/?target=https%3A//www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure)
[如何安装配置Ansible**](https://link.zhihu.com/?target=https%3A//www.digitalocean.com/community/tutorials/how-to-install-and-configure-ansible-on-an-ubuntu-12-04-vps)
[如何理解Chef安装使用](https://link.zhihu.com/?target=https%3A//www.digitalocean.com/community/tutorials/how-to-understand-the-chef-configuration-environment-on-a-vps)

https://zhilala.com/discussion/969
https://zhilala.com/discussion/970