|
|
Clay.io基于AWS、Docker、HAProxy等的10X架构打造 |
|
作者 Zoli Kahan 火龙果软件 发布于 2014-10-13 |
|
|
当下基于云的部署大大缩短了应用的发布周期,让机构可以将更多精力投入到产品特性设计上。然而,大规模应用架构从来都不是件容易的事情。从本文起,我们将带大家领略Clay.io的10X架构,首先关注的则是技术上的选择。
近日,Clay.io的Zoli Kahan开始了“10X”系列博文的撰写。通过这个系列博文,Zoli将分享如何只使用一个很小的团队支撑Clay.io的大规模应用。首期分享则是对Clay.io所使用技术的盘点。
下为译文
云方面
CloudFlare
CloudFlare主要负责支撑DNS,并作为一个防护DDoS攻击的缓存代理,同时CloudFlare还负责处理SSL。
Amazon EC2 + VPC + NAT服务器
基本上Clay.io的所有服务器都是Amazon EC2类型,其中大部分是中大型实例。同时,我们还使用Amazon VPC将所有服务器托管在一个私有网络,从而这些服务器很难在外网访问。为了访问这些私有网络,我们还配置了一个NAT服务器,它同时也作为一个VPN终端,用以内部网络使用。
Amazon S3
我们使用Amazon S3作为应用的CDN后端,它托管了Clay.io的所有静态内容。为了安全和性能因素,我们为之配置一个独立的域名——cdn.wtf,一个cookie-less域名。
HAProxy
HAProxy是一个非常高性能的反向代理,我们使用它将流量路由到不同的服务。基于Clay.io的性质和平台所需支撑的内容(比如遗留代码),HAProxy意义重大。在以后文章中,我将对这点进行深入讨论。
当下,Clay.io使用的是一个配置了m3.medium的HAProxy服务器。在流量增加后,HAProxy必将迎来一次无可避免的升级。此外我们还会在前端增加一个Amazon ELB,在需要时进行横向扩展。
应用服务器——Docker
Docker用于管理Linux容器,类似于轻量级的Virtual Machines(同时还省略了隔离和安全保障)。Docker的好处是可以做代码封装,并且忽略底层服务器特性做任意的代码重用/移植,在下文我们将详细介绍。
演示应用服务器——Docker
在Clay.io,演示环境服务器和应用程序服务器相同,并且和生产环境运行相同的二进制Docker文件。对于防止不必要的生产系统破坏和宕机,这种设置环境非常重要。
数据存储
MySQL
MySQL是一个久经沙场的关系型SQL数据库,当下Clay.io的数据大部分都依赖一个主从设置的MySQL集群。在这个集群中,一个主节点和两个从节点服务器支撑了大部分的用户查询。当然,在未来我们可能需要对主节点进行分片。但是期望不要太早,因为我们正在考量其他数据库。
Logstash
Logstash是个日志聚合工具,通过Kibana进行分析。当下,它基本上负责了Clay.io所有的应用程序日志,以备系统发生错误时使用。使用Kibana,我们避免了必须SSH到一个机器进行日志检查。
MongoDB
MongoDB是个NoSQL文档存储数据库,当下MongoDB为我们的一些开发端点和A/B测试框架Flak Cannon提供服务。
Memcached
Memcached使用了键值存储类型,非常类似于Redis。Memcached在Clay.io主要负责一些遗留Web应用,用以缓存MySQL的查询结果。毫无疑问,随着系统的迭代,最终它将完全被Redis取代。
DevOps
Ansible
在我们系统中,Ansible被作为服务器管理工具的一个选择。对于大部分开发者来说,它非常易于学习和使用,Ansible可以帮助许多日常DevOps的自动化处理,由一个专门的运营团队负责。
其他服务
GitHub
GitHub——无需多言,这是个非常强大的源代码管理工具。
Uptime Robot
Uptime Robot是个免费的监测服务,我们使用它来监测健康检查和端点。如果有问题发生,它可以在5分钟内给我们发送电子邮件和文本消息。
Drone.io
Drone.io是一个连续的集成服务,我们使用它为各种项目连续不断的运行测试集。它非常类似于TravisCI,近日我们还释放了一个开源的自托管版本。
Docker Registry
当下,我们使用官方的Docker Registry来管理Docker容器,它类似于Docker专用的GitHub。
New Relic
New Relic是个服务器和应用程序监视服务,主要用于服务器监视,在磁盘和内存满载时进行提醒。
Google Analytics
Google Analytics是我们主要的网站分析跟踪工具,用于跟踪网站具体功能,我们使用了定制事件特性。
Google Apps
Google Apps为我们clay.io域名提供邮件,并为机构提供了一个共享的Google Drive设置。
Last Pass
Last Pass是一个密码管理服务,它允许我们便捷的在所有团队共享公司认证信息。
未来
虽然我们对当下的设置已经比较满意,但是我们仍然期望在数个月内对系统的某些方面进行升级。审视最初的基础设施版本,有许多地方并没有花大量的时间去设计。而就是这些地方,成了未来系统扩展时必须面对的瓶颈。
- Kubernetes在大规模Docker容器管理上表现出了惊人的潜力,也是我们重点跟踪的项目之一。毫无疑问,在该项目成熟时,必将成为我们生产环境的一部分。
- Amazon Glacier,用于数据库备份,是我们未来的一个实现目标。
- RethinkDB,虽然当下还非常不成熟,但其潜力不容忽视。和Docker一样,我们将紧跟这个项目的发展。在未来弃用MySQL时,它将是一个不错的选择。
|
|
|
|
|