smart city connection 智慧城市的链接系统
万物互联下的新局势
- Internet: 4 billion devices 互联,在2020年互联网将会有20billion 设备。预示着Internet self has to change
- Sensors : Every device, Every building, every vehicle
- Things : 为了让所有的东西互联,我们需要将他们连接上互联网,然后通过软件来控制他们。将会是后面十年的主流方向。
- Services: 将来面向用户的都终将成为服务,这些服务包括:Ecommerce、Egoverment和其他相关领域。
这些将组成为一个整体的smart city。
而作为其中最重要的又将是作为所有基础设施的重中之重的Internet服务。
对于Internet的观点来说,只有三种类型的building,我们称之为 : rezidentsia building, commercial building, Data center.
TCP/IP 作为联通城市的最基础协议。
无限带宽技术(InfiniBand)
在数据中心内部,需要的带宽技术实际上更大,所以我们设计了新技术来取代TCP/IP,我们称其为InfiniBand。
TCP_IP只能用到带宽量的10-20%,但是InfiniBand技术可以使用到带宽量的95%。 则表示了InfiniBand技术是TCP_IP传输效率的10倍。但是Infiniband只能用于在短距离传输,一般用于数据中心内部。而TCP/IP可用于远距离传输。
在数据中心内部我们使用InfiniBand来控制设计数据中心内部的传输,以达到更高的效率,我们称为DataCenter Fabric
而对于整体的设计就会升级成在数据中心内部使用InfiniBand,而在数据中心之间使用TCP/IP。
扩展的无线带宽技术 Extending Infinband
使用交换设备将Infinband扩展的20000 kilometers
这个技术可以解决两点间的互通问题,我们可以用这个技术来替换数据中心间的两点间的互通,将数据中心之间使用InfiniBand技术来使得我们的网络利用率更高。
从而让我们都形成InfiniBand之间的互通。
他们提供三种相应的芯片来解决不同地域之间的互通问题,可以看看
数据中心和数据中心之间的使用Fabric to the cloud, 可以提供20000km距离,100Gb_s的量, 城市间的可以使用100km 10Gb_s的量级,而家庭之间的可以使用1Km 1Gb/s的。
最终还是解决互联之间的带宽问题。
加上这三个级别的交换设备,我们就可以解决城市内部的联通,来替代传统的TCP/IP网络
这个说明了如何来替代我们的城域网络,然后进一步的,我们使用小型的交换机来解决城市内部的小型网络,将我们整个城市的所有building互通。
从而进入了每个Building的每个room, 这样我们在building的机房内设置相应的大楼级交换机来进入每个room.
然后将房间内的每个设备都连上传感器来加入InfiniBand网络。同时也可以提供Extend Wifi等系统。
将这整个一套成为New generation Network。提供了新一代的连接方式。片子结尾将这定义为2050年的网络。
各大介绍
百度是这么介绍的http://baike.baidu.com/view/1549309.htm
IBM的相关介绍http://www.ibm.com/developerworks/cn/linux/l-cn-infiniband/index.html
思科也在其中 http://www.cisco.com/web/CN/products/products_netsol/datacenter/sol/0716_1.html
数据中心光纤融入InfiniBand
专访Mellanox CEO Eyal Waldman:InfiniBand与以太网齐驱并进 性能更胜一筹
北京石竹科技 []
引用一下相关解决方案:
上述数据中心中,分三层网络结构,主要包括一层核心层,二层汇聚层,三层为业务接入层。划分网络与系统功能大致分为:
- 业务运行系统:负责企业支撑、生产等业务系统运行。一般业务系统可通过以太网组网,进行不同应用系统间数据的共享与处理;当需要大数据量计算与处理时,或者需要高速互联传输时,可通过InfiniBand组网,实现高性能的互联计算,解决以太网遇到的I/O瓶颈问题。
- 安全与管理系统:以太网组网,包括监控管理中心和安全中心,监控管理负责设备运行与维护,包括性能管理、设备策略配置、故障管理、告警管理等网络与设备的管理与监控。安全中心负责企业证书认证、安全设备配置管理、入侵防护与告警监控等功能。
- 大容量存储系统:通过光纤交换机接入存储系统。
- 异地容灾备份中心:支持数据容灾(即数据复制)和应用的远程切换(即发生灾难时,应用可以很快在异地切换)。
- 办公网络系统:通过以太网交换机组网,企业ERP或内部管理系统,用于日常办公事务、项目、商务、外协等管理。
1.2 业务系统
业务系统是数据中心的处理核心,由数百台内置InfiniBand网卡刀片服务器组成,业务处理节点通过InfiniBand网络通讯。本方案中服务器按业务区别管理,如WEB应用业务系统用于负责应用界面的提供,接受客户端请求并返回最终结果,是业务系统和数据的对外界面;逻辑计算业务系统负责数据的计算、业务流程整合;数据管理业务系统,负责数据的存储,供业务系统进行读写和随机调用。
业务运行系统运行着企业内部的支撑系统或重要的生产系统,是企业核心业务,作为重要的系统资源,不仅从业务保证方面,要提高系统运行的高效率,更要求承载网络和运行的平台具备及高的安全性。
一般来讲,不同的业务系统,其应用会安装在不同的运行平台上,根据需求配置服务器和软件环境,从上述拓扑中,以太网络连接不同的应用,其数据也是在不同的路径中进行传输,其根据请求提交的运行结果,也会通过各种访问方式,进行响应。
1.3 安全与管理系统
安全管理系统包括安全中心和监控管理中心。
安全中心负责对全网内的安全设备进行统一管理,其功能包括对认证证书的统一管理,对安全设备如防火墙的策略设置管理,对入侵防护设备的预警配置管理,对安全审计系统的定期检测与策略更新,对全网防病毒系统的更新管理,对网关防毒、防攻击的安全设置与管理,对内网流量的安全监控等。
监控管理中心负责对网络实行全面网络管理与实时状态的监控,负责设备运行与维护,包括性能管理、设备策略配置、故障管理、告警管理等网络与设备的管理与监控,异常访问及异常流量的监控。同时还对运行的软件进行远程管理与设置。
上述的安全与管理系统是数据中心日常运维必须用到的,通过监控与管理,使网络系统透明化,运行状态实时可见,监控机房是数据中心重要的设施。
1.4 网络系统
本方案有多种网络分类方式:按照网络功能划分可以将网络分成安全与管理网络、办公网络、业务网络、容灾备份网络、外接网络;按照网络带宽不同可以分为以太网、InfiniBand网络、光纤网络;按照网络交换层次不同可分为核心层、汇聚层和接入层三层结构。
网络功能分区设计,易于各个独立管理;网络带宽兼容设计,可以充分节约成本。网络架构分层设计,充分隔离了各个功能区,易于网络故障分离排错,易于系统扩展伸缩。三种分类方式根据性能需求、成本条件、安全可靠等问题的统筹考虑,合理融合,相互渗透,形成了灵活易扩展、易管理的解决方案。
其中,各个交换环节都采用双机热备形式,更有光纤专线连入异地灾备区,这种全冗余设计充分保障安全性、可靠性。
另外,在本方案的应用环境需要同时搭建InfiniBand网络、Ethernet网络和FC存储网络,三个独立网络的搭建带来了巨大的工作量和非常高的成本,同时也大大增加了后期维护的难度及成本。而本方案采用最新技术,使用网关产品或下一代SwitchX 系列产品,实现了以太网、InfiniBand、FC 三种网络的融合。这大大减少了服务器上I/O卡的数量,降低了网络的复杂程度,降低了客户的成本,降低了客户的后期维护的难度,减少了网络维护的成本。
1.5 存储系统
本方案存储设备采用高密度,高可靠性,易扩展的SFA10000高性能,可扩展性存储平台,支持FC和IB交换网络,主机支持10 GB_s 写、12+GB_s读吞吐量;单系统最大支持88U/1,200 驱动器/3.6PB容量;单个机架最大支持48U/1.8PB容量;
另外,方案采用FC和IB网络传输数据,将极大的扩充数据通道的速度。光纤传输的优点是速度快、抗干扰能力强, 为高性能的数据存储提供了保障。InfiniBand可以在相对短的距离内提供高带宽、低延迟的传输,而且在单个或多个互联网络中支持冗余的I_O 通道,因此能保持数据中心在局部故障时仍能运转。它是一个统一的互联结构,既可以处理存储I_O、网络I/O,也能够处理进程间通信(IPC) ,实现高的可靠性、可用性、可扩展性和高的性能。
博客系统Hexo介绍
博客系统Hexo介绍
做了这么久的云,自己这个博客是直接放在github上面的,但是有时候国内访问比较慢之类的问题总是造成响应不太好,今天有时间看到Hexo系统。这里来大概分析一下他的好处。
Hexo是直接用Node.js开发的,它天生的优势就是完全静态化。传统的我们做个人博客的做法是先要去AWS或者国内阿里云之类的租用一个云主机,然后绑上公网IP,最后安装wordpress等博客系统。整完一套最低配置一年也需要1000大洋左右。
而Hexo免费静态博客程序,Hexo基于Node.js,出自台湾一博主,Hexo生成的静态网站可以放在任意空间上,例如常见的PHP、ASP空间、FTP服务器、百度BAE、新浪SAE等空间,可以说只要可以用Web访问的就可以搭建起Hexo博客。
而且Hexo可以直接通过架接在github上面提供访问,提供更好的体验。
详细的可以参考这篇博文 如何搭建一个独立博客——简明Github Pages与Hexo教程
题后
自己的使用的也是一个github上面的框架提供的类似服务。
Hexo的主要优势还是可选的模板比较多,自己可以配置自己想要的模板样式。
RDS Xen 远程桌面License区别
RDS Xen 远程桌面License区别
RDS:
有两种类型的远程桌面服务客户端访问许可证 (RDS CAL):
RDS-每设备 CAL和 RDS-每用户 CAL
每设备和每用户的区别:
如果使用每设备授权模式,并且客户端计算机或设备初次连接到RD 会话主机服务器,默认情况下,向该客户端计算机或设备颁发一个临时许可证。在客户端计算机或设备第二次连接到RD 会话主机服务器时,如果许可证服务器已激活,并且有足够的 RDS-每设备 CAL 可用,许可证服务器将向该客户端计算机或设备颁发永久 RDS-每设备 CAL。
RDS-每用户 CAL 向一个用户授予通过任意数量的客户端计算机或设备访问RD 会话主机服务器的权限。RD 授权不强制使用 RDS-每用户 CAL。因此,无论许可证服务器上安装了多少个 RDS-每用户 CAL,都可以建立客户端连接。这样,管理员不必考虑 Microsoft 软件许可条款对每个用户都需要有效的 RDS-每用户 CAL 的要求。使用每用户授权模式时,如果不是每个用户都有 RDS-每用户 CAL,将会违反许可条款。
Microsoft RDS CALs 卖的地方:
Amazon售卖Microsoft Windows Server 2008 Remote Desktop Services User 5 CAL Licenses
This is for Remote Desktop licenses. If you have users that need to remote into the server to do their work then you will need one license per user. If you only have 2 users then that is already included. This license is installed on the server and will be tracked by the server. If you have 5 users that need to use the server at one time then you will need to buy 1 pack of 5 licenses. If you have 10 people that will use the server but only 5 people will need to use the server at any given time then you will most likely want to use the "Per User" not the "Per Seat" option. If you use the "Per Seat" then you would have to buy 2 packs of 5 licenses to allow the 10 users to remote in. I would not confuse this license with the "Per Device" license required to allow other computers to network to this server. If that is what you want then this is the wrong product. Another thing to be aware is this will work on other servers that are not HP.
RDS的每客户License是根据客户的峰值来卖的,如果是5个用户的License,那么保证同时只能有5个用户在线。
5客户 921美元。
ebay售卖链接
可支持银联付款
5用户 3229.88 \(749 per year
10用户 8134.70 \)1,679.86 per year
25用户 15083.70 \(1599 per year
75用户 34446.04 \)5500 per year
100用户 40708.96 $6,500.00 per year
2012约 $118 one concurrent user per year
Citrix Xen
5用户 945 美元
多用户的待询问
Citrix Xen 包含三个版本 Citrix XenDesktopTM 7.6, Platinum Edition、Citrix XenDesktopTM 7.6, Enterprise Edition、Citrix XenDesktopTM 7.6, VDI Edition三个版本,SAP 要求使用白金版本。
Citrix XenApp product utilizes a concurrent licensing model. With the XenApp concurrent model, users are anonymous and a license is consumed by each concurrent user to one or more apps and/or XenApp published desktops. A licensed concurrent user is an anonymous floating user only licensed for the period during which access to the Citrix environment is required. Once access is terminated by the anonymoususer, the license is immediately returned to the license pool and available for another anonymous user to consume.
Citrix Xen 提供并发License模式。和微软RDS一样是采用最大并发限制进行license出售。
在网上查到一个2013年的报价
XenApp 白金版 Renewal SRP \(75 per CCU Recovery SRP \) 335 per CCU
Citrix支持两种方式报价,按年计算和终身计算方式,终身方式约为按年方式的4倍。
从CA数据中心管理看整个云数据中心管理
CA 数据中心管理
CA数据中心管理软件在最近的Gartner提供的《数据中心基础设施管理工具魔力象限》中被列为领导者象限,足见其在数据中心管理的整体低位。
数据中心集中化已经成为了当前IT业的一个趋势,对于数据中心的管理同样也需要更加的自动化。除了需要应对传统的基础架构、运维管理、服务管理之外,新兴的云数据中心同样的需要多种的管理手段。
本文希望从在工作中使用CA管理套件的学习中来整理和总结一些数据中心管理手段。
CA 管理软件目录分类
CA将自己的管理软件分成了几个大类,下面从已经了解的部分分析它的几个大类的管理:
CA Service Assurance
进行CA的服务保障,通过对CA管理服务的监控,如操作系统、网络、数据库、应用,通过对这些监控的数据分析和相应的服务行为和业务影响分析。来进行一个端到端的风向评估,以提供相应的解决方案。
以核心业务系统为被管对象,从基础架构性能、网络性能、应用程序性能等多个方面进行全方位的分析和管理。实现主动的问题发现、定位和排除,最终确保服务级别和质量。
主要包括的产品有(仅包括一些使用过的产品,详细的产品目录可以查看CA官网):
CA Performance Management
CA性能监控中心,通过SNMP和NON-SNMP,整合服务器、网络、存储、流量、应用response等多种性能和相关数据的统一展示,提供了一个更快速,更聚焦的数据中心展示平台。它能够快速整合多种监控软件,并能够定义不同的安全级别来进行数据中心的相关监控。
CA Performance Management是一套监控和管理IT系统和网络基础设施的现代解决方案,其中包括:
- Performance Center: 对多种数据源搜集的网络、设备、应用程序的性能数据进行统一的展示和管理。
- Data Aggregator: 其中Data Aggregator由三大组件构成Data Aggregator、Data Collector和Data Repository。其中Data Aggregator主要起数据搜集和性能指标监控的作用,Data Collector主要从各类设备上按照DA要求定期抽取数据,Data Repository主要用于数据的存储。
- Integration with IM solutions:集成其他的IM解决方案。如CA Network Flow Analysis, CA Application Delivery Analysis and CA Unified Communications Monitor以及 CA Spectrum 等。提供统一的展示功能。
CA DCIM
CA数据中心基础设施管理,提供对L1层的监控、告警以及数据中心的全方位可视化管理。可以进行相应的数据中心能耗管理,和可视化的数据中心实时2D、3D监控图。主要管理:电源系统、制冷系统、3D物理可视图。
CA Service Operations Insight
基于开放接口的集成平台
主要提供:
- 动态服务模型、服务性能和资源性能的拓扑发现
- 服务SLA、健康、性能的风险报告
- 针对服务性能进行根源分析,并输出事件和告警。
CA Application Delivery Analysis
提供端到端的应用程序监控,帮助快速的进行应用程序进程管理和快速定位解决问题。
- 监控所有应用的响应时间,可区分网络和服务器
- 监控服务器配置,ADA Console、Windows Server
CA eHealth
搜集和分析IT基础设施的实时性能数据,用可视化的方法对服务进行评估判断。提供算法分析和检测、用户自定义报表、实时数据显示和告警、多系统整合。
CA Mediation Manager
存储设备管理
- 存储设备拓扑发现,存储设备性能监控;
- 存储API适配,包括虚拟机的系统性能指标接入;
- 存储Agent适配、部署在被监控设备上。
由于存储设备的多样性,提供可同时管理non-IP和non-SNMP设备
CA Network Flow Analysis
网络流量分析,优化应用的网络性能,形成100%可视化管理。帮助优化网络架构,获取更好的网络性能。它能够帮助诊断网络拥塞的主因、所需的网络连接容量、能承受多大的网络流量等。
它可以和CA Performance Center, CA Application Delivery Analysis, CA Unified Communications Monitor 和 CA Technologies third-party 或 custom IT management tools 整合,形成一个整体的网络性能方案,优化整体网络方案。
CA Spectrum
网络拓扑功能,提供网络设备、服务器设备等可用性管理。
能够使用拓扑帮助整体复杂的IT 基础设施,如物理服务器、虚拟的和云环境。同时整合错误管理、容错管理和根因分析以及相应的告警管理。
作为基本管理组件可以整合到其他解决方案中去:
- CA Application Performance Management
- CA Unified Infrastructure Management
- CA Performance Management
- CA Service Desk Manager
- CA Service Operations Insight
CA Virtual Assurance for Infrastructure Managers
提供集中管理物理环境和虚拟化环境的能力,提供一个整合的视角来同时管理Vmware、IBM、Oracle和Citrix。
该组件通过管理SystemEDGE代理组件来通过插件的方式管理不同的操作系统或者云管理平台。提供对插件的下发和管理的功能。
CA Service Management
CA 服务管理,帮助传统物理环境、虚拟化和云环境提升整体服务质量和资源利用率。能帮助实现具体的流程定义(如ITIL流程定义),管理传输、交付具体的服务或者资产声明周期。这些服务能整合以实现你的整体ITIL流程,通过ITIL流程的规范化来优化员工的积极性和效率。
服务管理的完整性可以提升服务质量、防止服务中断和大幅降低服务开销
CA Service Desk Manager
CA服务管理整合部分,能够为业务提供有效的IT服务管理,增进管理用户的能力和决策者的执行力。SDM提供变更管理、扩展自动化和Saas等工具来帮助决策者和管理员增加IT服务管理能力和降低业务消耗和风险。
CA ServiceDeskManager集成事件管理、问题管理、根因管理、变更管理、桌面管理、自动化支持、服务台、知识库管理、管理性能指标等。
Automation
IT多样性和复杂性,决定了IT管理需要有快速和多样化的服务来达到日益增长的服务要求。Automation建立自动化模式来帮助你加速和简化多样化云服务的管理变更。提供了主要的优势:
- 智能化:快速的响应改变的业务需求
- 工作流的方式加速云计算的实施
- 专业的速度、生产力和可视化的控制。
CA Process Automation
CA流程自动化:设计、部署和管理IT可选自动化流程
在跨组织和系统的情况下增加IT流程自动化,从而降低服务部署时间,降低跨部门情况下损耗的时间
- 降低手动操作花销
- 增加管理员效率
- 加速IT服务部署
- 增强服务质量
- 巩固流程策略
CA Server Automation
自动化服务器部署来增加IT服务部署效率。对操作系统、存储资源、跨物理服务的应用组件、虚拟云系统提供自动部署、补丁和配置管理。
- 加速应用部署时间
- 流程化服务器部署
- 增加服务器使用率
- 建立弹性和增加操作效率。
CA Configuration Automation
配置管理自动化: 自动化的进行数据中心资源管理配置
自动发现基础设施中得网络设备、服务器、操作系统、应用、数据库和中间件,进行相关的配置管理和管理IT服务设施。并时刻监测设施变更。
- 提高操作效率
- 巩固流程策略并减少风险
- 避免数据中心因为配置错误造成的运行中断
- 建立最好的生命周期管理
Advanced Authentication and Single Sign-On
CA Single Sign-On
单点登录组件,控制系统的单点登录情况。
业务目标
- 在传统物理架构领域、虚拟化领域、云架构领域,通过对故障发现、故障隔离、故障根源分析、配置变更管理、性能管理、流量分析、预测容量规划等手段支持IT服务交付
- 通过对网络、服务器、应用程序性能监控,并通过网络或物理关系拓扑,控制底层架构和流量构成,在网络流量分析、对网络和服务器问题提前进行有效的防护措施,更精准的预测未来的容量需求。
- 通过跨域相关性(物理与虚拟系统、数据与语音系统、数据库、客户端\服务器应用、私有\共有云)来简化IT管理过程,以便在集中式的企业仪表板中直观地显示故障与性能信息。
- 利用跨域信息和服务感知对整个外包服务的性能和可用性进行监控和管理,借助用户架构中的集中视图,无论服务降级或者中断发生在哪个位置,用户均能以更高的精准度进行定位,可主动管理与服务供应商签订的SLA,以保持服务级别竞争优势。
产品应有能力
- 故障定位能力:网络拓扑管理、网络关联分析、告警管理输出。网络级业务层面的快速故障定位能力。
- 主动预防能力:监控服务器、中间件、业务应用的运行状态,收集性能数据并进行分析和评估。通过性能数据分析和异常流量自动检测。异构场景下的监控QOS亚健康状态并输出告警,增强主动预防能力
- 提供优化建议:保存性能原始数据和分析数据,分析计算出性能指标基线,为全网规划、优化提供建议。
产品功能需求
集中监控
告警管理:
时间规则处理
阈值告警
用户自定义告警
告警集中呈现
告警邮件通知
性能监控:
性能阈值告警
性能指标趋势报表
性能指标健康报表
性能指标实时监控报表
公共服务拨测功能
Topo呈现
异构管理
异构服务器
异构存储
异构网络
异构Hypervisor
异构数据库
QOS管理
服务等级报告: 可用性分布、延时分布、线路利用率分布、网络容量、健康异常、平均健康指数、CPU利用率。
容量预测: 假设分析报告、健康报表的容量推断部分、健康报表的容量预算部分。
网络流量统计
- 统计网络报文流量,监控网络响应时间
- NetQOS Report Analyzer 分析网络应用延迟,帮助用户定位性能瓶颈
- 监测点的网络流量中各类TCP、UDP连接分析
- 实现保障功能,找出引起问题的异常网络流
应用程序体验和性能分析
- 管理最终用户的问题业务影响报告
- 监控Servlet、JSP、EJB、JMS、JPBC、JTA、WebService等应用组件响应时间
- 对事务自动跟踪分析,为分布式J2EE提供执行过程视图,自动找到执行路径中得性能瓶颈
- 支持灵活的监控扩充能力,可根据需要多任意客户应用中的类和方法进行监控
- 监控应用系统执行中得错误和异常,实时监控捕捉应用中阻碍应用程序成功执行的异常和错误
问题快速定位
- 告警相关性抑制,去掉重复告警
- 系统快照及回放
- 服务影响和根因分析
Openstack 虚拟化优化方向
虚拟机亲和性调度机制
用于部分应用需要和某些指定应用隔离的场景,如主备场景等。
应用感知的大页表技术
用于高性能场景,使用大页表技术提供更高的内存hit率。
智能网络包中断合并技术
Linux内核在性能方面已经经历了很长一段时间的考验,尤其是2.6/3.x内核。然而,在高IO,尤其是网络方面的情况下,对中断的处理可能成为问题。我们已经在拥有一个或多个饱和1Gbps网卡的高性能系统上发现过这个问题,近来在有许多小包并发(大约10000packets/second)超载的虚拟机上也发现了这个问题。
原因很清楚:在最简单的模式中,内核通过硬件中断的方式来处理每个来自于网卡的包。但是随着数据包速率的增长,带来的中断渐渐超过了单个cpu可处理的范围。单cpu概念很重要,系统管理员对此往往认识不足。在一个普通的4-16核的系统中,因为整体cpu的使用率在6-25%左右并且系统看上去很正常,所以一个过载的内核很难被发现,。但是系统将运行很慢,并且会在没有告警,没有dmesg日志,没有明显征兆的情况下严重丢包。
详细内容请参考技术项目 - Linux网卡中断使单个CPU过载
减少VM-Exit上下文等虚拟化性能敏感的指令的优化:
减少虚拟化开销,让cpu更多的做业务相关的事情
亲和性感知的调度,HOST/Guest NUMA 的配置调优
NUMA系统的结点通常是由一组CPU(如,SGI Altix 3000是2个Itanium2 CPU)和本地内存组成,有的结点可能还有I/O子系统。由于每个结点都有自己的本地内存,因此全系统的内存在物理上是分布的,每个结点访问本地内存和访问其它结点的远地内存的延迟是不同的,为了减少非一致性访存对系统的影响,在硬件设计时应尽量降低远地内存访存延迟(如通过Cache一致性设计等),而操作系统也必须能感知硬件的拓扑结构,优化系统的访存。
可以参考 Linux 的 NUMA 技术
NetMap/DPDK软直通,及SR-IOV/VMDq硬直通,实现转发能力5-10倍以上的提升。
轻量化的Linux容器技术:
LXC 完全不使用硬件虚拟化,在host里面使用资源隔离技术,而不是做虚拟机级别的重隔离。
Linux Containers(LXC)一种操作系统层虚拟化(Operating system–level virtualization)技术,是Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得Linux用户可以容易的创建和管理系统或应用容器。[1]
LXC不需要Hypervisor这个软件层,软件容器(Container)本身极为轻量化,提升了创建虚拟机的速度。
LXC是所谓的操作系统层次的虚拟化技术,与传统的HAL(硬件抽象层)层次的虚拟化技术相比有以下优势:
更小的虚拟化开销(LXC的诸多特性基本由内核特供,而内核实现这些特性只有极少的花费,具体分析有时间再说)
快速部署。利用LXC来隔离特定应用,只需要安装LXC,即可使用LXC相关命令来创建并启动容器来为应用提供虚拟执行环境。传统的虚拟化技术则需要先创建虚拟机,然后安装系统,再部署应用。
LXC跟其他操作系统层次的虚拟化技术相比,最大的优势在于LXC被整合进内核,不用单独为内核打补丁。
LXC技术可以参考:LXC:Linux 容器工具
libvert 虚拟化网络配置详解
libvert 虚拟化网络配置详解
具体的libvert xml文件格式指南可以参考Domain XML format
基本虚拟libvert虚拟化网络
bridge 和 tap/tun
桥是一个接口,桥由多个接口共同构成,在以太层把每一个接口收到的数据复制到其他接口。向桥写入数据时,桥内所有的接口都会收到
tap_tun简单的说时一块虚拟网卡。tap是以太层设备,tun是IP层设备。用户空间的程序向tap_tun写入数据,这些数据会传送到内核的网络模块;内核的网络模块写入数据,这些数据又可以被用户空间的程序读到。实现了宿主和Guest之间的共享接口。当guest机器的IP和宿主IP在同一个子网中时,连上这块虚拟网卡的虚拟机就可以和宿主通信。
bridge模式
Linux每启动一个VM,就会为这个VM创建一个tap设备,名字叫vnetx,然后将这块虚拟网卡加入桥设备brx,桥设备具体和那一块网卡绑定由用户自己决定。
...
<devices>
<interface type='bridge'>
<source bridge='br0'/>
<mac address='00:14:41:12:ac'/>
</interface>
...
其中整个操作如下:
- 安装uml-utilities和bridge-utils这两个工具分别含有tunctl和brctl命令。
- 生成一个新的TAP接口
tunctl -t tap1 -u
- 生成一个叫做br0的bridge
brctl addbr br0
- 把真实网卡加到bridge br0的一端
brctl addif br0 eth0
- 把上面生成的TAP接口加到bridge br0的另一端
brctl addif br0 tap1
- 激活TAP
fconfig tap1 up
- 设置_dev_net/tun的读写权限
chmod 0666 /dev/net/tun
NAT模式
NAT: 网络地址转换
NAT分为: DNAT把数据包的目的地改称指定地址, SNAT把数据包的原地址改为指定地址。
SNAT的作用就是在宿主机内部构造一个独立的虚拟子网。Guest就是子网中的一台机器,当子网中的数据要发送出来的时候,这些数据的源地址会改为宿主机的实际网络地址,这样就实现了IP伪装。
Libvert创建了virbr0网桥,作为default虚拟网络的网关,并打开了STP。Libvert每启动一个VM的时候,同样为这个VM创建一个TAP设备。该tap设备连接到网桥之后,就可以访问这个虚拟网络的其他虚拟机。网桥可以通过NAT转发到外网,因为这个NAT使用Linux的iptables实现的,所以可以使用iptables规则。
...
<devices>
<interface type='network'>
<source network='default'/>
<mac address='00:14:41:12:ac'/>
</interface>
...
该配置表示连接到default这个虚拟网络,default虚拟网络的配置文件位于_var_lib_libvert_network/default.xml
具体详细配置可以参考
libvert 虚拟化网络详细配置
libvert xml详细使用可以参考官方的这篇文档http://libvirt.org/formatdomain.html#elementsNICS
这里专注于libvert的网络看一下当前libvert支持哪些网络,这也同样可以看出openstack当前支持哪些网络。
- Virtual network
- Bridge to LAN
- Userspace SLIRP stack
- Generic ethernet connection
- Direct attachment to physical interface
- PCI Passthrough
- Multicast tunnel
- TCP tunnel
- Setting the NIC model
- Setting NIC driver-specific options
- Overriding the target element
- Specifying boot order
- Interface ROM BIOS configuration
- Quality of service
- Setting VLAN tag (on supported network types only)
- Modifying virtual link state
- vhost-user interface
Virtual network
This is the recommended config for general guest connectivity on hosts with dynamic / wireless networking configs (or multi-host environments where the host hardware details are described separately in a definition Since 0.9.4).
virtual network定义了在HOST上的一种动态的/无线的连接配置。(就是NAT模式)
在网络下可以配置一个或多个portgroup,每个portgroup为不同的网络连接配置了不同的配置信息。
virtualport定义了该虚拟端口的下一跳,比如 vepa (802.1Qbg) 或者 802.1Qbh compliant switch 或者 Open vSwitch virtual switch。
...
<devices>
<interface type='network'>
<source network='default'/>
</interface>
...
<interface type='network'>
<source network='default' portgroup='engineering'/>
<target dev='vnet7'/>
<mac address="00:11:22:33:44:55"/>
<virtualport>
<parameters instanceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/>
</virtualport>
</interface>
</devices>
...
Open vSwitch virtual switch
This is the recommended config for general guest connectivity on hosts with static wired networking configs.
OVS switch配置静态的有线网络。 (bridge模式)
bridge提供虚拟机直接连接到LAN的功能。为虚拟机提供类似物理机的网络访问功能。
在Linux系统,bridge设备一般使用标准Linux host bridge 。 在支持OpenVSwitrh的HOST上同样可以将虚拟机对接到相应的OpenVSwitch端口上。
...
<devices>
...
<interface type='bridge'>
<source bridge='br0'/>
</interface>
<interface type='bridge'>
<source bridge='br1'/>
<target dev='vnet7'/>
<mac address="00:11:22:33:44:55"/>
</interface>
<interface type='bridge'>
<source bridge='ovsbr'/>
<virtualport type='openvswitch'>
<parameters profileid='menial' interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f'/>
</virtualport>
</interface>
...
</devices>
...
Userspace SLIRP stack
Provides a virtual LAN with NAT to the outside world.This networking is the only option for unprivileged users who need their VMs to have outgoing access.
使用NAT的方式将虚拟机网络直接对接到外部。仅用于需要访问外部的无特权用户。
...
<devices>
<interface type='user'/>
...
<interface type='user'>
<mac address="00:11:22:33:44:55"/>
</interface>
</devices>
...
Generic ethernet connection
Provides a means for the administrator to execute an arbitrary script to connect the guest's network to the LAN.
...
<devices>
<interface type='ethernet'/>
...
<interface type='ethernet'>
<target dev='vnet7'/>
<script path='/etc/qemu-ifup-mynet'/>
</interface>
</devices>
...
Direct attachment to physical interface
Provides direct attachment of the virtual machine's NIC to the given physical interface of the host. Since 0.7.7 (QEMU and KVM only)
This setup requires the Linux macvtap driver to be available.
可以支持3种形式的直连选择,'vepa','bridge','private'。 其中vepa为默认模式。
- vepa
All VMs' packets are sent to the external bridge. Packets whose destination is a VM on the same host - bridge
Packets whose destination is on the same host as where they originate from are directly delivered to the target macvtap device. Both origin and destination devices need to be in bridge mode for direct delivery. If either one of them is in vepa mode, a VEPA capable bridge is required. - private
All packets are sent to the external bridge and will only be delivered to a target VM on the same host if they are sent through an external router or gateway and that device sends them back to the host. This procedure is followed if either the source or destination device is in private mode. - passthrough
This feature attaches a virtual function of a SRIOV capable NIC directly to a VM without losing the migration capability. All packets are sent to the VF/IF of the configured network device. Depending on the capabilities of the device additional prerequisites or limitations may apply; for example, on Linux this requires kernel 2.6.38 or newer. Since 0.9.2
例子如下:
...
<devices>
...
<interface type='direct'>
<source dev='eth0' mode='vepa'/>
</interface>
</devices>
...
...
<devices>
...
<interface type='direct'>
<source dev='eth0.2' mode='vepa'/>
<virtualport type="802.1Qbg">
<parameters managerid="11" typeid="1193047" typeidversion="2" instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/>
</virtualport>
</interface>
</devices>
...
...
<devices>
...
<interface type='direct'>
<source dev='eth0' mode='private'/>
<virtualport type='802.1Qbh'>
<parameters profileid='finance'/>
</virtualport>
</interface>
</devices>
...
PCI Passthrough> A PCI network device (specified by the element) is directly assigned to the guest using generic device passthrough, after first optionally setting the device's MAC address to the configured value, and associating the device with an 802.1Qbh capable switch using an optionally specified element (see the examples of virtualport given above for type='direct' network devices).
用于将客户虚拟机直接绑定到PCI物理网卡,实现PCI的 passthrough. 使用可选的配置设备的mac地址,然后使用virtualport标签来是设备同步802.10bh交换能力。
...
<devices>
<interface type='hostdev' managed='yes'>
<driver name='vfio'/>
<source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</source>
<mac address='52:54:00:6d:90:02'>
<virtualport type='802.1Qbh'>
<parameters profileid='finance'/>
</virtualport>
</interface>
</devices>
...
Multicast tunnel
多播组,一个多播组用来建立一个虚拟网络。 多台虚拟机的devices设置同一个多播组的虚拟机能够进行跨host互访。
...
<devices>
<interface type='mcast'>
<mac address='52:54:00:6d:90:01'>
<source address='230.0.0.1' port='5558'/>
</interface>
</devices>
...
Tcp tunnel
Tcp Client/Server 构架同样可以用来组建一个虚拟网络。一个虚拟机提供网络的服务端,其他的虚拟机配置成为客户端。虚拟机之间的网络流量将Server作为路由,所有的都通过路由进行相互访问。
...
<devices>
<interface type='server'>
<mac address='52:54:00:22:c9:42'/>
<source address='192.168.0.1' port='5558'/>
</interface>
...
<interface type='client'>
<mac address='52:54:00:8b:c9:51'/>
<source address='192.168.0.1' port='5558'/>
</interface>
</devices>
...
set the NIC model
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet1'/>
<model type='ne2k_pci'/>
</interface>
</devices>
...
可以用以上方法设置网卡的模式。 这个type的类型是通过不同的hypervisor类型来进行定义的。
在qume和KVM中可以使用如下方式查询支持的模型列表:
qemu -net nic,model=? /dev/null
qemu-kvm -net nic,model=? /dev/null
可以查询到相应的模型类型:ne2k_isa i82551 i82557b i82559er ne2k_pci pcnet rtl8139 e1000 virtio
Setting NIC driver-specific options
网卡的特殊driver类型选项。
...
<devices>
<interface type='network'>
<source network='default'/>
<target dev='vnet1'/>
<model type='virtio'/>
<driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='5'/>
</interface>
</devices>
...
libvert基本功能及相关接口分析
KVM
KVM(Kernel-based Virtual Machine)是基于内核的虚拟化解决方案,目前Intel和AMD的CPU都对其提供了好很的支持。
平时KVM也会被说成是管理KVM虚拟化的一个工具,类似于qemu(quick emulator)。在网上看的文档,有的说KVM只能在物理机上做虚拟化,而qemu还适合在虚拟机上面进一步做虚拟化。目前大家常用的KVM虚拟化工具都是qemu。
KVM基本操作
虚拟机创建
创建img镜像文件(快照)
# cd /var/instances
# qemu-img create ubuntu.img 5G
# cd /var/instances
# kvm -hda ubuntu.img -cdrom ubuntu-12.04-server-amd64.iso -boot d -m 512
创建镜像并创建虚拟机。
# cd /var/instances
#virt-install --name=ubuntu --ram=512 --vcpu=2 \
--disk path=/var/instances/ubuntu.img,size=5 \
--cdrom=/var/images/ubuntu-12.04-server-amd64.iso \
--graphics=vnc,listen=0.0.0.0
另一种创建虚拟机的方式。
virt-install命令在virtinst包里,在CentOS下该包名为python-virtinst,其实最终调用的命令还是qemu-img和qemu-kvm。
操作系统安装
vnc登入安装操作系统,完成之后会在相应目录下生成镜像文件及xml配置文件(_etc_libvirt_qemu_ubuntu.xml)。
更多相关内容: http://en.wikibooks.org/wiki/QEMU/Images#Mounting_an_image_on_the_host
libvirt
libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,这个函数库是一种实现Linux虚拟化功能的API,它支持虚拟机监控程序,比如Xen, KVM, Qemu等。
虚拟机基本信息
libvert虚拟机管理
安装完成之后,会生成相应的XML文件,libvert对于虚拟机的管理就针对这个XML文件,管理的命令如下:
# virsh list
# virsh list --all
# virsh create /etc/libvirt/qemu/ubuntu.xml
# virsh define /etc/libvirt/qemu/ubuntu.xml
# virsh undefine /etc/libvirt/qemu/ubuntu.xml
# virsh autostart domain_id|instance_name
# virsh destory domain_id|instance_name
# virsh start/shutdown/reboot/... domain_id|instance_name
libvirt XML文件格式
常规信息区域
...
<domain type='xen' id='3'>
<name>instance-name</name>
<uuid>d9ef885b-634a-4437-adb6-e7abe1f792a5</uuid>
<title>A short description - title - of the domain</title>
<description>Some human readable description</description>
<metadata>
<app1:foo xmlns:app1="http://app1.org/app1/">..</app1:foo>
<app2:bar xmlns:app2="http://app1.org/app2/">..</app2:bar>
</metadata>
...
type是虚拟化类型,其值可以是kvm, xen, qemu, lxc, kqemu等。id是标识正在运行的虚拟机,可以省略。
- name
虚拟机的名字,可以由数字、字母、中横线和下划线组成。 - uuid
虚拟机的全局唯一标识,可以用uuidgen命令生成。如果在定义(define)或创建(create)虚拟机实例时省略,系统会自动分配一个随机值这个实例。 - title, description
这两个东西都可以省略,见名知义,如果有特殊需求可以加上。 - metadata
metadata可以被应用(applications)以xml格式来存放自定义的metadata,该项也可以省略。
操作系统启动区域```
...
...
* type
虚拟机启动的操作系统类型,hvm表示操作系统是在裸设备上运行的,需要完全虚拟化。
* boot
boot属性的值可以是fd, hd, cdrom, network等,用来定义下一个启动方式(启动顺序)。该属性可以有多个。
* bootmenu
在虚拟机启动时是否弹出启动菜单,该属性缺省是弹出启动菜单。
* kernel
内核镜像文件的绝对路径。
* initrd
ramdisk镜像文件的绝对路径,该属性是可选的。
* cmdline
这个属性主要是在内核启动时传递一些参数给它。
##### 内存和CPU区域
...
...
vcpu属性表示分配给虚拟机实例的最大CPU个数。其中cpuset表示该vcpu可以运行在哪个物理CPU上面,一般如果设置cpuset,那么placement就设置成static。current的意思是是否允许虚拟机使用较少的CPU个数(current can be used to specify whether fewer than the maximum number of virtual CPUs should be enabled)。vcpu下面的这几个属性貌似只在kvm与qemu中有。
* memory
memory表示分配给虚拟机实例的最大内存大小。unit是内存的计算单位,可以是KB, KiB, MB, MiB,默认为Kib。(1KB=10^3bytes,1KiB=2^10bytes)
* currentMemory
currentMemory表示实际分配给虚拟实例的内存,该值可以比memory的值小。
##### 磁盘区域
...
<disk type='file' device='disk'>
<source file='_var_instances_instance-hostname_disk' />
<target dev='vda' bus='ide' />
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='_var_instances_instance-hostname_disk.raw'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='_dev_sdc'/>
<geometry cyls='16383' heads='16' secs='63' trans='lba'/>
<blockio logical_block_size='512' physical_block_size='4096'/>
<target dev='hda' bus='ide'/>
</disk>
...
模拟器的二进制文件全路径。
* disk
定义单块虚拟机实例上的磁盘。
* type
可以是block, file, dir, network。分别表示什么意思就不多说了。
* device
表示该磁盘以什么形式暴露给虚拟机实例,可以是disk, floppy, cdrom, lun,默认为disk。
* driver
可以定义对disk更为详细的使用结节。
* source
定义磁盘的源地址,由type来确定该值应该是文件、目录或设备地址。
* target
控制着磁盘的bus/device以什么方式暴露给虚拟机实例,可以是ide, scsi, virtio, sen, usb, sata等,如果未设置的系统会自动根据设备名字来确定。如: 设备名字为hda那么就是ide。
* mirror
这个mirror属性比较牛B,可以将虚拟机实例的某个盘做镜像,具体不细说了。
##### 网络接口区域
...
...
表示该接口的类型,可以是bridge等类型
##### 相关事件的配置
...
...
on_poweroff, on_reboot, on_crash
其属性值为遇到这三项时进行的操作,可以是以下操作:
* destroy 虚拟机实例完全终止并且释放所占资源。
* restart 虚拟机实例终止并以相同配置重新启动。
* preserve 虚拟机实例终止,但其所占资源保留来做进一步的分析。
* rename-restart 虚拟机实例终止并且以一个新名字来重新启动。
on_crash 还支持以下操作:
* coredump-destroy crash的虚拟机实例会发生coredump,然后该实例完全终止并释放所占资源。
* coredump-restart crash的虚拟机实例会发生coredump,然后该实例会重新启动。
on_lockfailure
当锁管理器(lock manager)失去对资源的控制时(lose resource locks)所采取的操作:
* poweroff 虚拟机实例被强制停止。
* restart 虚拟机实例被停止后再启动来重新获取它的锁(locks)。
* pause 虚拟机实例会被暂停,并且当你解决了锁(lock)问题后可以将其手动恢复运行。
* ignore 让虚拟机实例继续运行,仿佛一切都没发生过。
##### 时间区域
offset支持utc, localtime, timezone, variable等四个值,表示虚拟机实例以什么方式与宿主机同步时间。(并不是所有虚拟化技术都支持这些模式)
##### 图形管理接口
...
...
type为管理类型,可以是VNC,rdp等。其中port可以自动分配(从5900开始分配)。
##### 日志记录
...
...
以上意思是禁止字符设备的输入,并将其输出定向到虚拟机的日志文件中(domain log)。将设备的日志写到一个文件里(Device log),比如:开机时的屏幕输出。
###虚拟网卡
#### Linux Tun/Tap虚拟网卡##### 介绍:
Tun_Tap 驱动程序实现了虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。利用tun_tap 驱动,可以将tcp_ip协议栈处理好的网络分包传给任何一个使用tun_tap驱动的进程,由进程重新处理后再发到物理链路中。
开源项目[openvpn](http://openvpn.sourceforge.net)和[Vtun](http://vtun.sourceforge.net)都是利用tun/tap驱动实现的隧道封装。
##### 工作原理:
做为虚拟网卡驱动,Tun_Tap驱动程序的数据接收和发送并不直接和真实网卡打交道,他在Linux内核中添加了一个TUN_TAP虚拟网络设备的驱动程序和一个与之相关连的字符设备 _dev_net/tun,字符设备tun作为用户空间和内核空间交换数据的接口。当内核将数据包发送到虚拟网络设备时,数据包被保存在设备相关的一个队 列中,直到用户空间程序通过打开的字符设备tun的描述符读取时,它才会被拷贝到用户空间的缓冲区中,其效果就相当于,数据包直接发送到了用户空间。通过 系统调用write发送数据包时其原理与此类似。
在linux下,要实现内核空间和用户空间数据的交互,有多种方式:可以通用socket创建特殊套接字,利用套接字实现数据交互;通过proc文件系统创建文件来进行数据交互;还可以使用设备文件的方式,访问设备文件会调用设备驱动相应的例程,设备驱动本身就是内核空间和用户空间的一个接口,Tun/tap驱动就是利用设备文件实现用户空间和内核空间的数据交互。
从结构上来说,Tun/tap驱动并不单纯是实现网卡驱动,同时它还实现了字符设备驱动部分。以字符设备的方式连接用户空间和内核空间。
Tun_tap 驱动程序中包含两个部分,一部分是字符设备驱动,还有一部分是网卡驱动部分。利用网卡驱动部分接收来自TCP_IP协议栈的网络分包并发送或者反过来将接收到的网络分包传给协议栈处理,而字符驱动部分则将网络分包在用户空间和内核空间之间传送,模拟物理链路的数据接收和发送。Tun/tap驱动很好的实现了两种驱动的结合。
#### libvert Network Interface指南
详细指南请参考 [](http://pengjunjie.com/articles/library-network-interface/)
Openstack Cascade级联特性
Openstack Cascade 级联特性
简介
Openstack Cascade解决方案设计用于解决大规模的分布式云场景,比如由多个数据中心组成的上百万级别的虚拟机场景。
Openstack Cascade主要通过Openstack API聚合组成,将由多个子Openstack整合成一个单一的Openstack,提供单一的API供租户访问(包括NOVA_Cinder_Neutron_Glance_Ceilometer API)。 对于租户来说,看到的是一个Openstack,多个子Openstack被一个父Openstack整合,提供给租户,租户可以看到的是仅仅是单一的父Openstack。每个租户同样可以看到多个available zone。 每个Openstack实际的工作组成类似amazon的availiablity zone。
对于大级别云,两种方案的对比
使用单一Openstack组建
- 使用单一Openstack管理100万以上的虚拟机或者10万以上的Host主机风险很大
- 不能想EC2的available zone一样隔离故障区域,由于数据库和RPC message的绑定所有的云都仅仅的绑定到一个Openstack中了。
- 单一的巨大的系统为维护团队的升级和配置管理带来了极大的挑战
使用多Openstack组建Cascade
Openstack Cascade 架构
架构演进可以参考这篇文章OpenStack cascading and fractal
- Nova-Proxy: Similar role like Nova-Compute. Transfer the VM operation to cascaded Nova. Also responsible for attach volume and network to the VM in the cascaded OpenStack.
- Cinder-Proxy: Similar role like Cinder-Volume. Transfer the volume operation to cascaded Cinder.
- L2-Proxy: Similar role like OVS-Agent. Finish L2-networking in the cascaded OpenStack, including cross OpenStack networking.
- L3-Proxy: Similar role like L3-Agent. Finish L3-networking in the cascaded OpenStack, including cross OpenStack networking.
- FW-Proxy: Similar role like FWaaS-Agent. TBD
- LB-Proxy: Similar role like LBaaS-Agent. TBD
- VPN-Proxy: Similar role like VPNaaS-Agent. TBD
Openstack Cascade 包含Nova、Cinder、Neutron、Glance和Ceilometer的级联。但是Keystone和Heat将作为在级联中分享的全局服务。
详细内容可以看这一段Openstack Cascade官方文档
Copyright © 2020 鄂ICP备16010598号-1