Clay.io基于AWS、Docker、HAProxy等的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时,它将是一个不错的选择。

时间: 2024-10-27 07:52:36

Clay.io基于AWS、Docker、HAProxy等的10X架构打造的相关文章

Netflix基于AWS的大数据平台Hadoop架构解析

Netflix近日公开了部署在AWS之上的Hadoop平台架构,而且运行Hadoop工作负载的架构还是属于"独家制造".来自Netflix的数据科学家Sriram Krishnan和Eva Tse在官方的博客中介绍了该平台在运行.管理以及访问多集群时的灵活性,还包括基于AWS的Hadoop架构以及Hadoop平台即服务(PaaS),该服务被称之为"Genie". 毋庸置疑,Netflix在云计算领域有着很独特的发展--几乎把所有的一切都部署在AWS平台之上:除此之外

Clay.io的Zoli Kahan开始了“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类型,其中

10x系列之Clay.io的服务发现

本文讲的是10x系列之Clay.io的服务发现,[编者的话]Clay.io的Zoli Kahan撰写了"10X"系列博文,分享如何只使用一个很小的团队支撑Clay.io的大规模应用.本文是整个系列的第四篇,介绍如何构建一个服务发现系统. 架构 面向服务的架构是构建绝大多数产品的最可迭代和可用的软件配置之一.这些系统也遇到过很多问题,其中最大的问题可能就是服务发现问题.服务发现实际定义了你的服务如何与其它服务通信.Docker里也有这个问题.如果你不知道我们如何部署Docker,请参看D

中国电信基于Mesos+Docker的运维自动化在CDN中的实践

本文讲的是中国电信基于Mesos+Docker的运维自动化在CDN中的实践[编者的话]本次分享将讲解容器技术在CDN系统中的应用,包括应用的容器化,使用Mesos.Marathon.ZooKeeper对线上业务的快速部署.升级.回滚以及Docker在研发测试环境中的实践.在引入Docker技术之后,CDN不同角色的服务部署在一个物理服务器,资源利用率明显提高,另外应用都可以一键部署,运维工作量明显减少. 大家好,我是中国电信云公司CDN运营中心的张其栋,今天跟大家分享的题目是<中国电信基于Mes

Rift.io基于OSM发布首个商用MANO软件

在ETSI管理下的Open Source MANO (OSM)项目发布首个版本的代码之后,Rift.io基于该版本的代码发布了首个商用MANO软件. Rift.io成立于2014年,已经成功融资1850万美元.该初创公司创建了一个超大规模的引擎,包括一组构建网络编排的API.其用户包括虚拟网络功能(VNF)的提供商以及服务提供商. Rift.io同时也是OSM项目的创始成员之一,该公司贡献了很多重要的代码,包括网络服务编排.用户图形界面和自动化工具. 该公司迅速确定了在服务提供商网络中所需的特殊

Ayla艾拉物联基于AWS构建IoT艾拉云

:Ayla艾拉物联有一个非常好听的英文名"Ayla",名字的由来也非常奇妙,是两位联合创始人孩子第二个字母的组合,所以几位创始人同样把艾拉物联当做自己孩子一样看待. 但在IoT(物联网)市场技术实力是一个关键因素,尤其在快速增长的环境下,时间就是市场.Ayla艾拉物联的创始人们来自产学研各个层面,所以在成立之初的几年里Ayla艾拉物联一直在专心打磨产品,利用AWS构建起PaaS艾拉云为客户提供服务,并且在2014年Ayla艾拉物联的业务有了飞跃性的增长. 为IoT提供平台 2010年A

亚信基于AWS构建世界级企业互联网平台

本文讲的是 亚信基于AWS构建世界级企业互联网平台,BSS将与亚马逊AWS在开发.培训和市场推广上展开合作. 2月22日,亚信发布公告称,将基于亚马逊AWS建立世界级的企业互联网平台,专注于开发.培训.市场领域,目标是助力电信行业与企业客户通过IT架构转型,实现更加高效运营. 新一代的企业级互联网平台使得电信和企业客户可以更加快速的开发新产品,为客户提供更好的服务,在快速更迭的全球经济中保持竞争优势. 亚信集团CTO金亚东,亚马逊AWS全球副总裁.中国区执行董事容永康代表双方签署合作协议,这意味

基于AWS云平台的高可用应用设计

基于AWS云平台的高可用应用设计 方国伟 云计算在给架构师带来了许多新的设计挑战的时候,也给带来了许多新的设计理念和可用的服务.如何在设计应用的时候充分利用云平台的各种特点是基于云平台设计的一个重要因素.在这个演讲中,我们将以亚马逊AWS云平台为例,讨论如何设计一个高可用应用.我们先会对AWS的服务进行高可用性的分类,并从高可用角度对典型服务进行介绍,然后依次讨论高可用设计的5大常见设计原则,并结合AWS的相关服务依次进行架构设计分析. 基于AWS云平台的高可用应用设计

暴走漫画基于阿里云的全面容器化架构实践

标题有所修改. 很高兴能和大家分享一些暴走漫画基于公有云的容器化架构的实践经验. 基于之前在暴漫的经验,我到了扇贝以后,大概用了一个月的时间,就将扇贝的产品成功迁移到了容器环境中,并做了很多改进,也有了更多的思考. 暴走漫画(以下简称"暴漫")相信大家都不陌生,它应该算一个互联网应用.先简单介绍一下背景:暴漫主要做App和网站,后端主要是Ruby,也有一些Python.Scala的异构化系统.整体架构是标准的互联网应用架构.包括负载均衡.Nginx.应用服务器.数据库(MySQL),等