也谈架构:百万pv项目与虚拟化 推荐
2012-01-15 18:31
316 查看
也谈架构:百万pv项目与虚拟化
一 说明
100万pv的项目网站,说大不大,说小又具备了一定规模,最近公司网站的xxx项目从物理机迁移到了VMware虚拟化平台(ESXI),这里总结下该项目的网站架构,如有不妥之处还肯请老鸟多指点,新同学可以当作简单的参考资料!
二 项目架构介绍
2.1 公司xxx项目开始于2007年,目前日均pv 100万左右,峰值流量(BGP)60Mbit左右,haproxy 负载均衡器峰值并发4000左右,xxx项目共占用两个机柜 14u机位,共计13台 由12台Dell 1950 与 1台Dell 2950组成,
包括
1 台 CDN 源站服务器
1 台 haproxy 负载均衡器
4 台 iis web服务器
2 台 memcache 缓存服务器
2 台 lucene 检索服务器
1 台 SqlServer 主数据库服务器
2 台 SqlServer 从数据库服务器
2.2 网站架构
xxx项目逻辑上可以分为5层
1 CDN 层,为提高用户体验度,公司网站全部使用商用CDN来加速网站,cdn 源站服务器用于存储用户或者CMS发布的静态文件。
2 代理层,使用haproxy 反向代理IIS服务器,haproxy 拥有强大的负载均衡能力与健康检查功能,提供友好的监控页面。
3 应用层,IIS 服务器适用于.net ,同理如果你使用php|jsp 那么就要换成 apache|nginx|tomcat 等等。
4 缓存层,memcache lucene 都是为了减轻数据库压力而存在的。
5 数据库层, SqlServer 数据库由1主(写)2从(读)组成。
2.3 网站架构拓扑图
2.4 架构存在的问题
a CDN 源站单点问题,不考虑费用的情况下这个可以考虑双机HA,或者将 xxximg.xxx.com 合并到主站CDN源服务器
b haproxy 单点问题,这个已经通过haproxy + keepalived 方式解决
c 其实有些经验的朋友都能看出来,缓存层中无论是 memcache 还是 lucene 都是为了减轻数据库压力而存在的,目前数据库是1主(写)2从(读)在缓存层服务器的帮助下,负载并不高,不过一旦缓存服务器崩溃,数据压力立刻增加!
三 项目虚拟化
3.1 为什么要进行虚拟化?
1 xxx项目的服务器已经运行近5年原计划考虑升级服务器配置,或者更换新的服务器代替老旧的服务器,但是不能忽略成本这个重要的因素!
2 XXX机房目前中国IDC行业数一数二的角色,但是它的机柜资源非常紧张,以我们公司为例四个月前向其申请新的机柜,至今还在“排队”等待!
3 XXX机房限制机柜用电量,比如每机柜限制在6.8安,所以老旧服务器耗电量是一个问题!
4 集中管理与集中控制,可以使用Vmware Vcenter 集中管理Vmware ESXI 主机,举个例子:如果我要重启一台服务器只需要在Vcenter直接reboot ESXI主机即可,非常方便!
3.2 虚拟化后服务器数量
1 台 CDN 源站服务器(保持不变)
4 台 Vmware ESXI 服务器
3.3 虚拟机划分
3.4 虚拟化注意事项
线上ESXI 服务器配置:
线上虚拟机资源分配:
注意事项从四个方面考虑,包括
1. 处理器性能:为虚拟机分配资源要考虑服务器类型,不建议为虚拟机分配过多的vcpu"够用则好",否则将导致此虚拟机抢占资源太多,会影响同一宿主机上的其它虚拟机的正常共作 。
2. 内存容量:分配内存与分配cpu大致相同“够用则好”,不过不要忘记为ESXI主机预留一定内存用于ESXI自身开销,线上ESXI主机一般预留1GB至2GB内存。
3. I/O资源:结合实际i/o使用情况,建议一台ESXI主机虚拟机数量小于6个,以线上服务器为例,一般一台ESXI主机在3-4台虚拟机之间,当然这个不是绝对的,比如线上另一台mysql 从库服务器独享 ESXI主机全部资源。
4. 网络资源:由于几台虚拟机共享ESXI主机网络设备,所以高带宽高流量的服务要注意,可以将ESXI主机的某个网卡独享给每台虚拟机
最后我们可以看到 ,虚拟机部署是按照不同服务类型来分摊到每个一ESXI主机上的,而不是把全部的鸡蛋放在一个篮子里面,这样做的原因是如果服务器硬件造成的故障,线上服务影响到最小限度;其次,分析不同服务类型占用的资源不同再对虚拟机作出调整,比如 haproxy 很省资源,只分给其 2 vcpu/2GB mem/30GB vdisk/ 。
不适用于虚拟化
目前来讲,假如系统 负载/IO/cpu/内存/网络 等较小,都可以迁移至虚拟化平台,但是 IO/cpu/内存/网络 等等要求极高,
例如"繁忙"的数据库 或者本项目中的 cdn源站服务器(磁盘),虚拟化就需要三思而后行了,当然为了方便集中管理,可以将ESXI主机全部资源分给此虚拟机,此虚拟机独享ESXI全部资源 (VMware vsphere 5 )
四 成本对比
结束
此文资料来自公司线上某项目,这里我们讨论了网站架构与虚拟化,如有不妥之处还肯请老鸟多指点,新同学可以当作简单的参考资料,如有疑问欢迎到此讨论(你懂得) 37275208!
一 说明
100万pv的项目网站,说大不大,说小又具备了一定规模,最近公司网站的xxx项目从物理机迁移到了VMware虚拟化平台(ESXI),这里总结下该项目的网站架构,如有不妥之处还肯请老鸟多指点,新同学可以当作简单的参考资料!
二 项目架构介绍
2.1 公司xxx项目开始于2007年,目前日均pv 100万左右,峰值流量(BGP)60Mbit左右,haproxy 负载均衡器峰值并发4000左右,xxx项目共占用两个机柜 14u机位,共计13台 由12台Dell 1950 与 1台Dell 2950组成,
包括
1 台 CDN 源站服务器
1 台 haproxy 负载均衡器
4 台 iis web服务器
2 台 memcache 缓存服务器
2 台 lucene 检索服务器
1 台 SqlServer 主数据库服务器
2 台 SqlServer 从数据库服务器
2.2 网站架构
xxx项目逻辑上可以分为5层
1 CDN 层,为提高用户体验度,公司网站全部使用商用CDN来加速网站,cdn 源站服务器用于存储用户或者CMS发布的静态文件。
2 代理层,使用haproxy 反向代理IIS服务器,haproxy 拥有强大的负载均衡能力与健康检查功能,提供友好的监控页面。
3 应用层,IIS 服务器适用于.net ,同理如果你使用php|jsp 那么就要换成 apache|nginx|tomcat 等等。
4 缓存层,memcache lucene 都是为了减轻数据库压力而存在的。
5 数据库层, SqlServer 数据库由1主(写)2从(读)组成。
2.3 网站架构拓扑图
2.4 架构存在的问题
a CDN 源站单点问题,不考虑费用的情况下这个可以考虑双机HA,或者将 xxximg.xxx.com 合并到主站CDN源服务器
b haproxy 单点问题,这个已经通过haproxy + keepalived 方式解决
c 其实有些经验的朋友都能看出来,缓存层中无论是 memcache 还是 lucene 都是为了减轻数据库压力而存在的,目前数据库是1主(写)2从(读)在缓存层服务器的帮助下,负载并不高,不过一旦缓存服务器崩溃,数据压力立刻增加!
三 项目虚拟化
3.1 为什么要进行虚拟化?
1 xxx项目的服务器已经运行近5年原计划考虑升级服务器配置,或者更换新的服务器代替老旧的服务器,但是不能忽略成本这个重要的因素!
2 XXX机房目前中国IDC行业数一数二的角色,但是它的机柜资源非常紧张,以我们公司为例四个月前向其申请新的机柜,至今还在“排队”等待!
3 XXX机房限制机柜用电量,比如每机柜限制在6.8安,所以老旧服务器耗电量是一个问题!
4 集中管理与集中控制,可以使用Vmware Vcenter 集中管理Vmware ESXI 主机,举个例子:如果我要重启一台服务器只需要在Vcenter直接reboot ESXI主机即可,非常方便!
3.2 虚拟化后服务器数量
1 台 CDN 源站服务器(保持不变)
4 台 Vmware ESXI 服务器
3.3 虚拟机划分
haproxy01 sql_master sql_slave01 sql_slave02 iis01 iis02 iis03 iis04 memcache01 memcache02 lucene01 lucene02 haproxy02 -------------------------------------------------------- Esxi-1 Esxi-2 Esxi-3 Esxi-4
3.4 虚拟化注意事项
线上ESXI 服务器配置:
Dell R610 1U cpu *2 XEON 5620 mem 32GB disk *4 300G 10k sas perc 6i raid 10
线上虚拟机资源分配:
haproxy 2 vcpu/2GB mem/30GB vdisk/ #耗网络(相对) iis 4vcpu/6GB mem/60GB vdisk/ #耗cpu+内存 memcache 2vcpu/10GB mem/30GB vdisk/ #耗内存 lucene 4vcpu/10GB mem/80GB vdisk/ #耗内存 sqlserver 4vcpu/10GB mem/100GB vdisk/ #耗cpu+内存+IO
注意事项从四个方面考虑,包括
1. 处理器性能:为虚拟机分配资源要考虑服务器类型,不建议为虚拟机分配过多的vcpu"够用则好",否则将导致此虚拟机抢占资源太多,会影响同一宿主机上的其它虚拟机的正常共作 。
2. 内存容量:分配内存与分配cpu大致相同“够用则好”,不过不要忘记为ESXI主机预留一定内存用于ESXI自身开销,线上ESXI主机一般预留1GB至2GB内存。
3. I/O资源:结合实际i/o使用情况,建议一台ESXI主机虚拟机数量小于6个,以线上服务器为例,一般一台ESXI主机在3-4台虚拟机之间,当然这个不是绝对的,比如线上另一台mysql 从库服务器独享 ESXI主机全部资源。
4. 网络资源:由于几台虚拟机共享ESXI主机网络设备,所以高带宽高流量的服务要注意,可以将ESXI主机的某个网卡独享给每台虚拟机
最后我们可以看到 ,虚拟机部署是按照不同服务类型来分摊到每个一ESXI主机上的,而不是把全部的鸡蛋放在一个篮子里面,这样做的原因是如果服务器硬件造成的故障,线上服务影响到最小限度;其次,分析不同服务类型占用的资源不同再对虚拟机作出调整,比如 haproxy 很省资源,只分给其 2 vcpu/2GB mem/30GB vdisk/ 。
不适用于虚拟化
目前来讲,假如系统 负载/IO/cpu/内存/网络 等较小,都可以迁移至虚拟化平台,但是 IO/cpu/内存/网络 等等要求极高,
例如"繁忙"的数据库 或者本项目中的 cdn源站服务器(磁盘),虚拟化就需要三思而后行了,当然为了方便集中管理,可以将ESXI主机全部资源分给此虚拟机,此虚拟机独享ESXI全部资源 (VMware vsphere 5 )
四 成本对比
XXX项目 服务器数量 机位数量 耗电量 物理机 13 台 14 约10安 虚拟化 5 台 6 约4安
结束
此文资料来自公司线上某项目,这里我们讨论了网站架构与虚拟化,如有不妥之处还肯请老鸟多指点,新同学可以当作简单的参考资料,如有疑问欢迎到此讨论(你懂得) 37275208!
相关文章推荐
- 也谈架构:百万pv项目与虚拟化
- 架构在研发项目中的应用 推荐
- 项目架构搭建的一些心得体会 推荐
- 个性化推荐项目架构
- 【博文推荐】DRBD项目实施之NFS高可用架构(NFS+Heartbeat+Drbd) - 51CTO.COM
- 面向服务体系架构的业务规划和建模方法系列之五——SOA项目中IBM产品的采用 推荐
- Project Silk – Mileage Stats 项目架构初步分析(ASP.NET MVC 3) 推荐
- 深入解析大数据虚拟化的架构(下)- 系统架构 推荐
- 推荐litianping的几篇文章,包括owc统计图,rss技术,项目常用类,petshop架构分析
- 面向服务体系架构的业务规划和建模方法之六-SOA项目的导入策略 推荐
- 艾伟也谈项目管理,软件架构引言之项目管理的问题
- 【实战虚拟化】安全设计之一基本架构 推荐
- 某虚拟化项目总结:一条光纤引发的故障 推荐
- 对一个“失败”项目的审视—架构 推荐
- 艾伟也谈项目管理,架构组织管理
- Intel®虚拟化技术为ERP应用提供高能耗比的部署架构 推荐
- 小短文,也谈iOS项目架构
- 艾伟也谈项目管理,动起来再调整 - 向项目经理推荐敏捷
- 用ESX进行虚拟化的技巧连载二:VI运行基础架构服务 推荐