热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

也谈架构:百万pv项目与虚拟化

也,谈,架构,百万,pv

也谈架构:百万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 虚拟机划分

 
  1. haproxy01    sql_master  sql_slave01  sql_slave02 
  2. iis01        iis02       iis03        iis04 
  3. memcache01   memcache02  lucene01     lucene02 
  4.                                       haproxy02 
  5. -------------------------------------------------------- 
  6. Esxi-1       Esxi-2      Esxi-3       Esxi-4 


3.4 虚拟化注意事项

线上ESXI 服务器配置:

 
  1. Dell R610 1U 
  2. cpu  *2 XEON 5620 
  3. mem 32GB 
  4. disk *4 300G 10k sas  
  5. perc 6i raid 10 

线上虚拟机资源分配:

 
  1. haproxy 2 vcpu/2GB mem/30GB vdisk/       #耗网络(相对) 
  2. iis 4vcpu/6GB mem/60GB vdisk/            #耗cpu+内存 
  3. memcache 2vcpu/10GB mem/30GB vdisk/      #耗内存 
  4. lucene 4vcpu/10GB mem/80GB vdisk/        #耗内存 
  5. 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 )

四 成本对比

 
  1. XXX项目     服务器数量  机位数量    耗电量 
  2.  
  3. 物理机       13 台        14       约10安 
  4.  
  5. 虚拟化       5  台         6       约4安 


结束
此文资料来自公司线上某项目,这里我们讨论了网站架构与虚拟化,如有不妥之处还肯请老鸟多指点,新同学可以当作简单的参考资料,如有疑问欢迎到此讨论(你懂得) 37275208!


本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/764387


推荐阅读
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 我们知道CDN护航了双11十年,却不知道背后有那么多故事
    2019独角兽企业重金招聘Python工程师标准摘要:一路走来,文景也曾疑惑过:为什么我们不能把活动的时间跨度拉长到3天࿰ ... [详细]
  • nosql数据库的基本要求Nosql全称是NotOnlySQL,是一种不同于关系型数据库的数据库管理系统设计方式。对NoSQL最普遍的解释是“非关系型的”,强调Key-ValueS ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • SQL Server 内存中OLTP内部机制概述(一)
    内存中OLTP(项目名为“Hekaton”)是一个新的完全集成到SQLServer中的数据库引擎组件。它专为访问内存常驻数据的OLTP工作负荷而进行优化。内存中OLTP有助于OLT ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 下图|通用型_企业用户如何选择合适的云服务器配置?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了企业用户如何选择合适的云服务器配置?相关的知识,希望对你有一定的参考价值。随着网络飞速发展,企业上云已成为 ... [详细]
  • yii框架目录结构详细分析说明
    php教程|php手册yii,目录结构php教程-php手册yii框架目录结构详细分析说明猫狗大战源码,华为云电脑ubuntu,梦见放走很多爬虫,parttmpphp,seo页面描 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
author-avatar
Ericke2702932972
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有