凡客诚品陈贻泰:一套高实用性基础架构,专治电商运维各种痛点

作者简介:

陈贻泰
凡客诚品 前运维部高级经理

负责 IDC 机房和网站业务的技术运营,及内部企业IT的系统网络运维。 从事IT基础设施方面的工作十多年。

曾在武汉微软技术中心专门为多种行业、大中小企业做IT规划和建设;后来加入了凡客诚品,全程深度参与了公司的系统及网络基础设施的建设。现在领医创造担任运维总监一职。

本文介绍凡客诚品花费过亿的 IT 基础架构情况,希望对读者能够有所启发,我目前服务的公司在 IT 基础架构建设方面也刚刚起步。

1、信息系统运维的基石—网络运维

我们先来看看这个,想必作为运维,大家都很熟悉这两张图。这张图上是最为基础的 TCP/IP 模型和 OSI 模型。

下图构成了网络运维的最小知识原子,我们经常通过两个知识原子来指导我们解决遇到复杂技术问题。

以 OSI 来讲,它将庞大复杂的网络分为了七个层面,与其对应的 TCP/IP 对其又进行了整合划分为四个层面分别是应用层,传输层,网络层和网络接口(数据链路层,物理层)。应用层最高,物理层为最底层,每个层为上层提供服务。从分层的设计角度来看,这是一个很好的自顶向下、分层和模块化的设计思想。

如果我们以之前的 TCP/IP 模型为基础,对其进行改造,把它整合成公司的信息系统架构。在应用层上再加一个层面,就是公司的业务层。在将下面的几个层面抽象成与公司业务相关的层次,这样就型成了以业务层、应用系统层、基础系统层、网络层,以及机房层核心的五个层面。

然后我们在给他加上资源管理和监控、审计与安全这两个横贯全层次的运维流,这就构成了一个实用的 IT 模型。凡客当时的 IT 基础设施架构就是这样的情况,下面我们来介绍下这个模型。

  • 业务层,公司的业务情况,比如公司内部行政、财务业务、客服、物流、仓库、对外的线上网站等等。
  • 应用系统层,公司业务的技术化体现,指应用系统,比如公司内部 OA、ERP,仓库系统、物流系统、客服系统、网站订单系统。
  • 基础系统层,从这个层面开始往下,应该是我们IT运维人员最为熟悉的了。比如 DNS、DHCP、文件、邮件、账号系统我就把他们归属于基础系统层。
  • 网络层,就是路由器、交换机、防火墙、专线、上网光纤组成的互联网络。
  • 机房层,狭义上可以理解就是咱服务器、交换机存放的机房,广义上应该还包括IT所有物理层面相关的东西。

这个模型存在的意义是帮忙我们理快速解整个企业的IT系统的,对于不同的IT人员有不同的切入角度。作为我们运维人员,我们就需要从运维的角度去看待各个层面对我们自身工作的影响。

简单的说,企业 IT 基础架构,按照这个模型,就涵盖了基础系统层、网络层、机房层,所以在实际工作中,更多的要考虑业务层、应用系统层对这下三层的影响。

下三层,也就是 IT 基础架构层面要怎么设计和建设才能满足上三层包括应用系统的正常运行,进而满足公司业务发展。

接下来我们首先来了解下凡客当时的历史背景和业务情况,在业务层主要分这几大块:

  • 企业办公
  • 仓储中心
  • 呼叫中心
  • 快递物流
  • 两个主网站凡客和 vjia

在2013年巅峰时期,全国有近三十个仓库和近 10 个办公楼,6个 IDC 数据中心,员工有1万2千多人。

每个仓库和办公楼、IDC 数据中心我们视作一个站点,加起来就是40多个站点,每个站点办公人员上百到千不等,所以是一个非常大的企业网络。

每个业务模块的应用系统是不一样的,对基础系统网络的要求也是不一样。比如仓库对无线的要求就非常高,因为拣货都是通过移动手持设备去扫描找货的。仓库那么大,对设备漫游的要求和办公网络是很不一样的。

业务层和应用系统层的区别是有的,但是作为底层的基础架构,其实更多的是共性,作为基础层,要求我们对公司上层所有应用都能良好的支撑,我们这次重点讲共同的东西,大同小异的架构层面。

3、基础层设计和实践

我们先看看基础系统层面的具体设计和实践,基础系统层我认为包含这些:

  • 网络基础服务:DNS、DHCP
  • 基础办公:文件、打印
  • 企业沟通:邮件、即时通讯、电话
  • 信息安全:账户管理、权限
  • IT运维:桌面管理、虚拟机管理等

3.1 网络基础服务的设计—DNS

由于我们仓储业务和呼叫中心业务的特点,对高可用性要求相当高,因为我有次亲身有体会。

刚入职没多久,我们正在对上海的一个仓库的域控制器进行升级,导致了运行在上面的 DNS 服务器出现了中断,时长大约半个小时吧。大家正忙着恢复,领导站在旁边默默的看着没说话。

在事后告诉我说,隔壁的库房流水线上有上千个人都不能干活了,大家等我们站着等我们恢复系统等了半个小时。

所以,由于业务的关系整个凡客 IT 基础架构,最大的特点之一,就是对 IT 基础设施的可用性要求非常高。

我们基本上主体都是使用 Windows 服务器来提供 DNS 和 DHCP 服务。为什么呢,主要是 Windows 活动目录的普及,所有计算机都加入域,Windows AD 本身就有 DNS 了,当然加个 DHCP 服务也很容易,Windows 上面管理 DHCP 还是比网络设备上管理要方便太多。

除了 Windows AD 的先发优势和既有资源的优势外,Windows 上的 DNS 和 DHCP 在高可用性上也符合业务的要求。

对于 DNS 来讲,DNS 服务器每个站点就有2台,这2台是通过 AD 复制服务保持状态和数据同步的,而且 AD 复制机制是双向的,比 DNS 自身主从复制更有优势,当然,Linux 的 bind 也是主从单向复制。

对于客户端,网卡上需要设置本地的2个 DNS 服务器地址作为冗余了。

DNS 使用中还有一个中国人都会遇到的问题,就是电信和联通的问题。因为我们仓库系统、内部管理系统有时需要调取网站的图片,比如某个单品页,衣服的图片等。

由于 CDN 和各地站点网络出口不同的问题,为了提高访问这个图片的效率,需要就近访问该图片 CDN 的缓存,所以对于 Internet 的访问,需要转发到本地 ISP 提供的 DNS。

不过这个需要注意,由于各地 ISP 服务质量不一样,你需要仔细观察线路和实际命中情况,为此我们有时不得不使用自己部署的专门负责电信或者联通线路解析的 DNS。不过现在好了,可以考虑用阿里或者百度的智能 DNS server。

域名使用中,有使用内部和外部 DNS 问题,我们的情况是内部和外部域名是不一样的,这样做会省掉因为内外部域名一样导致的麻烦,具体麻烦就不细说了,一般推荐内外部域名不一样比较好。

然后在日常 DNS 注册过程中,内部的系统就用内部的域名,千万不要内外部域名随便用。这样更加整洁,也更加安全,不至于将某个外部域名解析成内部 IP。

3.2 网络基础服务的设计 — DHCP

首先是子网和 IP 池的规划,要注意的是要和网络人员一起考虑,不要太小气,要充分考虑到业务的发展和架构的伸缩。我们整个内网基本上采用10.0.0.0整个私有网络。

高可用性方面也是两台 DHCP 服务器,分别部署在各地2台域控上,我记得 DHCP 设计高可用性原则上一般是说 2/8 原则,我们在实际中其实是 5/5 原则,比如,一个子网,前半段的 IP 有第一台服务器分配,后半段的由第二段分配。

为什么每台分配一部分,而且不重叠,就是考虑到分配IP的时候避免分配同一个IP,导致IP冲突。但在实际应用测试过程中,即使两台服务器分配范围完全一样,也是可行的。

对于 DHCP 高可用性,Windows官方做法有 DHCP 集群,就是 Windows Cluster 到 Windows 2008 R2 的时候支持 DHCP 服务器了,比如之前一般只支持 SQL 集群提高可用性。

但是这种 cluter 有个致命的问题,就是两个节点的服务器群集需要一个共享磁盘来作为仲裁盘和数据盘,虽然服务器层面没有了单点故障,但是共享磁盘是个单点故障,而且共享磁盘这资源要求其实不低。专业的磁盘阵列很贵,模拟的也不放心。

当然,本质上 DHCP 服务实际上在节点故障后并不需要特别快速的切换,所以我们采用这种 5/5 原则这种架构更简单的方案。

3.3 Windows文件服务

Windows 文件服务确实不错,但是在大型公司里面,那是有两个难点,一个是全员加域,才能获得比较好的体验,另外就是权限设计,必须基于组绑定特定的部门,如果是基于个人和单个文件、文件夹的话,NTFS 授权相对于后续若干文件夹就是一场噩梦。

个人认为当前百度网盘、微软 onediver 方式是比较好的。具有很好的优势,基于 Http 的分享、容量去重,最大的缺点在功能上账号系统完全脱离企业掌控,当然数据存放在百度也存在风险。这个在凡客当时做了一套模仿的系统。

当然相比当前大家熟悉的公共网盘,这个系统与企业内部的账号系统集成,分享的链接可以提供下载或者提供上传。

权限设计非常适合企业,方便内部分享、甚至和合作伙伴协作。但是后台文件系统这块还不是很完整,如果加上分布式存储,以及文件去重,将是非常棒的企业网盘。

3.4 文件打印

办公用文件系统打印采用的是 Windows 标准的文件服务器解决方案,细节不谈了,主要有这些特色:

  • 全公司内访问路径统一:
    \\vancloa.cn\file;
  • 按照部门所需进行磁盘空间配额;
  • 支持数据热备和可回滚;基于角色的权限设计;
  • 集中的打印系统。

用户只需要连接本地站点的打印服务器就可以发现和连接所有打印机。为了避免故障,每个站点也是两台打印服务器。为了方便出差人员查找,打印服务器的命名是有规则的,都是 “sitename-prt-数字” 这样的格式。

3.5 邮件系统的建设设计

由于业务上我们有企业办公、凡客网站、vjia 网站、如风达快递,所以我们 Exchange 对应接收有 vancl.cn、vancl.com、vjia.com、rufengda.com 等域名后缀的邮件。

凡客的邮件业务可以基本分为:

  • 一般办公人员收发,指的是公司内部邮件交流;
  • 大量的业务邮件收取,比如 service@vancl.com 用来接受投诉的邮箱的,通过程序收取给后台客服系统进行处理,特点是量大。
  • 更大量的报警内部邮件投递给内部相关人员;
  • 还有超大量的广告邮件、订单状态邮件等发送给外部客户;

从技术上看,邮件除了收,就是发,所以凡客的邮件系统主要基于这两个软件,一个是微软的 Exchange Server 2010,我们 Exchange 用于办公协作和邮件的收取。一个是开源软件 Postfix,用于邮件投递以及过滤垃圾邮件这块。

Exchange 作为企业内部邮件是非常优秀的,众多大中型企业在用它就说明了这一点,包括很多大型的互联网公司也在使用更说明了这一点。

Exchange 和桌面 Outlook 配合的确是办公协作的利器,对移动手机支持也非常不错,安卓苹果手机邮件同步基本上也都是用 Exchange 模式。

其他 Exchange 在会议室管理、通讯录、通讯组方面也很不错。如果必须选择自建办公邮件系统的话,Exchange 应该是最佳选择了。

另外为什么业务也采用 Exchange 作为邮件收取,主要是它的高可用性和可扩展性。各位可以看看我们的 Exchange 系统架构示意图,前端各个模块角色扩展性很好,后端数据库可用性和扩展性也很好。

这里有一个小技巧,数据库这块尽量多分,从安全的角度考量,多个鸡蛋不要放在同一个篮子上,多个用户平均分布。另外我们的邮件服务器全部是虚拟主机。

关于 Exchange 的内部部署架构,具体细节就不谈了,微软官网上有;简单一句话就是按角色部署和拆分,每个角色至少两个节点,这个很互联网!

现在我们看看邮件的投递,也就是发送这块。

我们知道 Exchange 本身就可以作为投递,为什么要单独拿出来再做一个邮件投递系统了。

原因是因为我们的业务模式决定了。而且从技术上开,邮件投递只需要很轻便的 SMTP 服务就可以了,所以 Postfix 非常适合,可以极大的降低 Exchange 的负载。

而且各类邮件是分开的,避免交叉影响。尤其是影响邮件投递的成功率。比如 EDM 大量的投递,那么对应的 IP 地址池很可能信誉度会降低,就会影响正常办公邮件和其他业务邮件的投递。

假如投递系统没有分开的话。基本上我们把投递分为办公邮件的投递、内部报警邮件的投递、凡客业务邮件的投递、vjia 业务邮件的投递、以及 EDM 大量广告邮件的投递。

3.6 即时通讯系统建设

刚才我们了解了邮件异步通讯这块,那么凡客的即时通讯是个什么情况?

简单的一句话,我们打通了传统电话和 IP 电话、打通了 PC 和手机、打通了即时通讯和邮件、打通了开源 SIPX 和微软 Lync、打通了 PSTN 电话网络和 VOIP 计算机网络,形成了一个统一的企业沟通系统。

这个张图是当时的 Lync 系统架构部署图。从这个图里可以了解整个统一沟通平台的大致情况:

  1. Lync 自身的高可用设计,杜绝单点故障;
  2. 这是一个分布式的电话系统,全国各地都有自身的 SIPX 来管理电话机,以及从通过当地语音网关从当地 ISP 出局,Lync 负责 PC 终端。
  3. 手机、电话、PC 是互联互通的。企业统一沟通。从沟通来讲,手机、电脑、电话合一,从技术来讲,我们使用 IP 网络,传统电话网络和内部的计算机网络是合二为一的。

3.7 账户与权限建设

账号管理是企业IT的重头戏,凡客这块个人认为做得很有特点。

  1. 凡客以 Windows AD 作为账号管理系统,因为我们的办公、以及线上服务器,无论是 Windows 还是 Linux 都是域管理模式。
  2. 凡客账号管理既有自动化,也有用户自助化的特点。
  3. 凡客内部的权限都是基于 AD 账号的。

不管你是登陆个人 PC 还是办公或者网站服务器、网络设备,或者是内部网站,像登陆 PC 或者登陆金蝶,这类验证方式可以归属为 LDAP 方式,权限控制基本上有各个系统自行控制,或者结合 Windows AD 的安全组来进行控制。

对于登陆公司内部系统,由于自己开发的,所以基本上都是采用自己开发的一组 WebService 来验证和统一授权,提供这些接口的系统在我们内部叫PMS权限管理系统。

账号管理这块凡客做得是非常有特点的,这个架构除了适应凡客这样的互联网企业,据我从以前同事那了解到,这个方案用由他带到了到传统的上市公司,也得到了很好的效果。

我们有一个非常庞大的 AD 账号系统,这是当时 DC 服务器全国分布图。

我们有两个核心的内部用数据中心,只有在两个数据中心是可写的 DC,其余三十来个站点全部是只读。这样的架构,高可用性和安全性都能照顾到。

3.8 AD域设计

关于 AD 设计,最有特点的就是 OU 结构的扁平化设计,而不是安装传统的组织结构。也就是在 Employment 员工这个 OU下 ,所有的员工账号都在里面,因为离职的账号我们只会禁用,所以目前这里面账号应该有好几万吧。

关于为什么这么设计,是当时打通人事和IT系统账号信息方面种种原因所迫。详细情况就不谈了。在这里只告诉各位:

  1. 这么做可以极大地降低 AD 账号自动化管理的难度,你如果觉得会影响组策略什么的,我可以告诉你我们考虑过了,这都不是问题,凡客 IT 后续和账号相关的管理,很多都得益于这个最最基础的简单的 AD 数据结构。
  2. 还一个就是性能问题,从我的经验看,上万活动账号都不是问题,个人认为10万以上都不是问题。

3.9 IT运维自动化建设

IT 运维自动化的核心和前提其实是标准化,这个是运维思想层面的事情,具体我们是通过微软 System Center 中系列实现,尤其是 SCCM 系统。

我们根据业务类型,制作了不同的操作系统镜像,有仓储的,有一般办公的,有开发人员的,有呼叫中心坐席的,都可以裸机网络启动来安装好系统,不仅仅提高了工作效率,关键是整个系统都是标准的,规范的。这个也成为了我们系统安全的基石。

有些软件安装是需要授权的,我们通过账号管理系统中的审批流程来实现审批,审批完成,用户就能自己安装了。远程协助解决公司内部 pc 终端问题也都靠它,这样一个北京的支持人员可以远程去支持广州的桌面问题。

看起来 SCCM 整个工具很强大,其实更强大的是我们的标准化。除了桌面支持,后台没有 SCCM 的系统、网络都可以这么做,因为每个地方的网络环境、软件系统环境都是一个标准的,中心的人员可以直接快速的支持任何一个站点的系统网络。这样做,导致了整个部门管理效率的提升!

凡客做运维自动化采用的是微软的 SCCM 方案,这个是老版本的 SCCM 系统架构,目前是 SCCM 2012 r2,该架构的特点是别处新意的。我们近四十个站点,数千台PC终端,采用的架构是扁平化的。细节就不谈了,只说说整个架构的优点:

1. 架构简单,易于部署和后续管理,节约成本;
2. 系统安装和软件分发类似 CDN,没有跨站点的流量。

3.10 虚拟化建设

虚拟化在外面的基础架构中的地位举足轻重,说句极端的话,由于历史原因,很可惜,企业IT服务器虚拟化比例没有达到百分之百。凡客的办公核心,各地机房,我的原则是,务必全部虚拟化。

所以,从某个层面来看,我是把物理机看出一种平台而已了。我们前面谈到 AD、lync、SIPX、Exchange、SCCM、文件服务器等等,基本上都是虚拟机。

采用虚拟机的好处就不多说,主要是要注意风险,尤其是不能把鸡蛋放到一个篮子里面。

我们知道虚拟化后,一台物理机上跑了多个虚拟机,这样一挂就是挂一片虚机,所以风险是增大了。

我们虚机可用性非常高,是因为通过冗余负载我们在服务层面是没有单点故障的。

比如我们每个站点提供账号验证、DNS、DHCP 服务的域控,每个站点都有两台,而且这两台绝对不在同一台宿主机上,甚至这两台宿主机不在同一个机柜,不是使用同一个 PDU,同一个交换机。

4、总结

说起来,其实也挺无奈,咱们的传统企业 IT 技术和互联网还是有很大不同,互联网基本上大部分的应用都是自己开发的,基础架构在基础系统当然这块当然可以选择开源的产品,比如 Linux、Mysql、Redis、Nginx、Hadoop 等等。而传统企业如果要自己开发,成本太高,得不偿失!

凡客内部的 ERP 系统使用的是标准化的金蝶产品。所以对于传统企业运维管理来说要综合考虑,以实用为目的,没有必要重新去发明轮子。

在凡客的基础系统中,除了邮件系统的投递使用了 Postfix 作为投递群集,更多的使用有 zabbix、Nagios、Cacti 等开源监控系统,还有网站用到的缓存Redis、图片用到的分布式文件系统等等,不是因为他开源,是因为它更适合。

总之,在基础系统这块,AD 账号系统的设计、SCCM 的部署结构都是非常有特色的,很值得借鉴,除此之外,办公内部核心系统,当然包括邮件系统这类比较吃硬件的系统几乎完全虚拟化也很超前。

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部