VIII openstack(1)
传统的数据中心面临的问题:成本、效率(要快)、管理方面(物理机、云主机);
云计算:对运维需求总体量是减少了,尤其是硬件工程师,对运维的技术要求提高了;
云计算是个概念,指资源的使用模式;
云计算特点:必须通过网络使用;弹性计算(按需付费,现公有云已支持按s、m、h计费);对用户是透明的(用户不考虑后端的具体实现);
云计算分类:私有云、公有云(amazon是老大、aliyun、tingyun、tencentyun)、混合云;
云计算分层:Iaas(infrastructure as a service)、Paas(platform as a service)、SaaS(software as a service);
注:
IaaS(也叫Hardware-as-a-Service,早期如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行起来,现在有了IaaS,你可以将硬件外包到别的地方去,IaaS公司会提供场外服务器,存储和网络硬件,你可以租用,节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用;一些大的IaaS公司包括Amazon、Microsoft、VMWare、Rackspace、Red Hat,这些公司都有自己的专长,比如Amazon和微软给你提供的不只是IaaS,他们还会将其计算能力出租给你来host你的网站);
PaaS(有时也叫中间件,公司所有的开发都可以在这一层进行,节省了时间和资源,PaaS为公司在网上提供各种开发和分发应用的解决方案,比如虚拟服务器和操作系统,这节省了你在硬件上的费用,也让分散的工作室之间的合作变得更加容易,网页应用管理,应用设计,应用虚拟主机,存储,安全以及应用开发协作工具等;一些大的PaaS提供者有Google App Engine、Microsoft Azure、Force.com、Heroku、Engine Yard、AppFog、Mendix、Standing Cloud);
SaaS(这一层和我们的生活密切相关,我们大多时候是通过网页浏览器来接入,任何一个远程服务器上的应用都可以通过网络来运行,这就是SaaS,它是一种通过Internet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务,用户不用再购买软件,而改用向提供商租用基于Web的软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务,对于许多小型企业来说,SaaS是采用先进技术的最好途径,它消除了企业购买、构建和维护基础设施和应用程序的需要,你消费的服务完全是从网页如Netflix、MOG、Google Apps、Box.net、Dropbox或者苹果的iCloud那里进入这些分类,尽管这些网页服务是用作商务和娱乐或者两者都有,但这也算是云技术的一部分;一些用作商务的SaaS应用包括Citrix的GoToMeeting、Cisco的WebEx、Salesforce的CRM、ADP、Workday、SuccessFactors);
注:百科中的云计算:
背景(云计算是继1980年代大型计算机到客户端-服务器的大转变之后的又一种巨变;云计算(Cloud Computing)是分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(LoadBalance)、热备份冗余(High Available)等传统计算机和网络技术发展融合的产物);云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源(Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet.);
美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。XenSystem,以及在国外已经非常成熟的Intel和IBM,各种“云计算”的应用服务范围正日渐扩大,影响力也无可估量;
Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage,applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
云计算用到了虚拟化技术(提高了资源利用率、便捷性和可管理性更强);
虚拟化(完全虚拟化FV、半虚拟化PV);
KVM(kernel-based virtual machine,结构简单,包括两部分(设备驱动/dev/kvm;针对模拟PC硬件的用户空间组件),KVM只支持FV,需要CPU中硬件虚拟化的支持,只可在有硬件虚拟化的CPU上运行,即具有VT功能的intel cpu和具有amd-v功能的amd cpu);
KVM虚拟化特性(嵌入到Linux正式kernel(提高兼容性);代码级资源调用(提高性能);虚拟机就是一个进程(内存易于管理);直接支持numa技术(提高扩展性);redhat已收购,更好的服务支持及商业保障;保持开源发展模式);
[root@server1 ~]# egrep --color ‘vmx|svm‘/proc/cpuinfo #(intel-vt关键字为vmx,amd-v关键字svm)
http://www.openstack.org/
openstack的诞生(nova、swift,a way for the rest of the world to compete with Amazon);
openstack的使命(to produce the ubiquitous open source cloud computing platform that will meet the needs of public and private clouds regardless of size,by being simple to implement and massively scalable);
openstack发展过程(austin(2010.10);bexar(2011.2);cactus(2011.4);diablo(2011.10);essex(2012.4);folsom(2012.9);grizzly(2013.4);havana(2013.10);icehouse(2014.4);juno(2014.10);kilo(2015.4);liberty;mitaka;newton);
注:从havana版本开始网络管理由quantum更名为neutron;openstack每隔6个月发布一次新版
icehouse included components组件:nova、neutron、cinder、glance、swift、horizon、keystone、ceilometer、heat、trove:
服务名称 | 项目名称 | 描述 |
Dashboard | Horizon | 基于openstack api接口使用django开发的web管理界面 |
Compute | Nava | 通过虚拟化技术提供计算资源池 |
Networking | Neutron | 实现了虚拟机的网络资源管理 |
Storage: | ||
Object storage | Swift | 对象存储,适用于一次写入多次读取 |
Block storage | Cinder | 块存储,提供存储资源池 |
Shared services: | ||
Identity service | Keystone | 认证管理 |
Image service | Glance | 提供虚拟镜像的注册和存储管理 |
Telemetry | Ceilometer | 提供监控和数据采集、计量服务 |
High-level services: | ||
Orchestration | Heat | 自动化部署 |
Database service | Trove | 提供数据库应用服务 |
openstack三大核心组件:nova(coumpute service计算服务);neutron(networking service网络服务);cinder(block storage块存储);
其它组件:keystone(identity service认证服务);horizon(dashboard仪表板,web界面);glance(image service镜像服务);
基础服务:MySQL;rabbitmq(组件间通信的交通枢杻);
language:python(68%);XML(16%);javascript(5%);other(11%);
openstack概念架构:
openstack概念图:
SOA,service oriented architecture面向服务的体系结构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言,这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互;SOA,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用,服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性;SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型,SOA可以看作是B/S模型、XML(标准通用标记语言的子集)/WebService技术之后的自然延伸;SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统,较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化;
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点;
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
(1)keystone;(2)glance;(3)nova;(4)neutron
注:keystone和glance都是共享服务;
(1)
openstack验证服务identity service(keystone:用户认证;服务目录):
要将openstack的所有组件注册到keystone服务上,keystone可以追踪每一个组件并在网络中定位该组件服务的位置;
用户认证(用户权限和用户行为跟踪,跟踪用户及其权限):
user(一个人、系统或服务在openstack中的数字表示,已经登录的用户分配令牌环以访问资源,用户可以直接分配给特定的租户,像隶属于每个组;user可被添加到任意一个全局的或租户内的角色中,在全局role中,用户的role权限作用于所有的租户,即可对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限);
tenatnt(租户,一个组织或孤立资源的容器,租户可以组织或隔离认证对象,根据服务运营的要求,一个租户可以映射到客户、账户、组织或项目);
token(令牌,一个用于访问openstack api和资源的字母数字字符串,某个令牌可以随时撤销,也可在一段时间内有效);
role(角色,代表一组用户可访问的资源权限,定制化的包含特定用户权限和特权权限的集合,如nova中的VM,glance中的image);
credential(凭证,用于确认用户身份的数据,如用户名和密码,用户名和api key,认证服务提供的身份验证令牌);
authentication(验证,确认用户身份的过程);
服务目录(提供一个服务目录,包括所有服务项与相关api的endpoint端点):
service(服务,如nova、glance、swift,一个服务可以确认当前用户是否具有访问其资源的权限,但当一个user尝试访问其租户内的service时,它必须知道这个service是否存在及如何访问这个service);
endpoint(端点,可理解为它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道它的endpoint,endpoint的每个URL都对应一个服务实例的访问地址,且具有public、private、admin这三种权限,public url可被全局访问,privateurl只能被LAN访问,admin url被从常规的访问中分离);
keystone client(keystone命令行工具,通过该工具可创建用户、角色、服务、端点);
通过admin token连到keystone上,创建用户,创建好用户后就不要再使用admin token了;
使用keystone有两种方式:
类似在CLI下使用mysql,如#mysql -uUSERNAME-pPASSWORD -hIP_ADDR;
在环境变量中设好用户名和密码(keystone的环境变量中设有:用户名、密码、endpoint(keystone的API访问方式)),直接执行命令即可;
(2)
glance镜像服务image service(glance-api、glance-registry、image store):
glance使用户能发现、注册、检索虚拟机镜像(.img文件);它提供了一个REST api接口,使用户可以查询VM image metadata和检索一个实际的镜像文件;不论是简单的文件存储还是openstack对象存储,都可以通过glance服务在不同的位置存储虚拟机镜像;默认上传的VM镜像存储路径为/var/lib/glance/imgaes/;
glance-api(一个用来接受镜像发现、检索和存储的api接口;接受云系统镜像的创建、删除、读取请求;接收RESTapi的请求,功能上类似nova api,都是接收REST api请求,然后通过其它模块glanceregistry和image store来完成诸如镜像的查找、获取、上传、删除等操作;glance api默认port为9292);
glance-registry(用来存储、处理、检索镜像的metadata(元数据包含对象的大小和类型);glanceregistry是一个openstack镜像服务使用的内部服务,不能透露给用户;云系统的镜像注册服务;与DB交互,支持大多数数据库,MySQL orSQLite,DB用于存储镜像的元数据metadata(大小、类型),提供镜像元数据相关的REST接口;glance registry的port为9191;在DB中有两张表,image和image property,image保存镜像格式、大小等信息,image property主要保存镜像的定制化信息);
image store(存储可在本地,也可在分布式存储上;image store是一个存储接口层,通过这个接口,glance可获取镜像,image store支持的存储有amazon‘sS3、openstack本身的swift、ceph、sheepdog、glusterfs等;image store是镜像保存与获取的接口,它仅仅是一个接口层,具体的实现要外部的存储支持);
storage repository for image files(镜像文件的存储仓库,支持包括普通FS在内的各种存储类型,包括对象存储、RADOS块设备、http、amazon的S3,但有些存储只支持只读访问);
(3)
nova计算服务compute service(API;compute core;networking forVMs;console interface;image management(EC2 scenario);command-line clients and other interfaces;other components):
早期glance、neutron、cinder都是nova的组件,后拆分成独立的组件;
compute service用于计算主机和管理云计算系统,是IaaS的重要组成部分;主要模块使用python语言实现;
nova compute通过MQ接收并管理VM的生命周期,nova compute通过libvirt管理KVM,通过xenAPI管理xen,通过vCenterAPI管理vmware;
openstack中,计算节点不能随便改主机名,若改动后会被自动识别为新的计算节点,之前的计算节点会被干掉;
API(API包括nova-api service和nova-api-metadata service;nova-api service,接收并响应终端用户计算API调用(终端用户外部调用),支持openstack api、amazon EC2 api和特殊的管理特权API;nova-api-metadataservice,接受从实例元数据发来的请求,该服务通常与nova-network服务在安装多主机模式下运行);
compute core(包括nova-compute service、nova-schedulerservice、nova-conductor module;nova-compute service,一个守护进程,通过虚拟化层API接口创建和终止虚拟机实例,如XenAPI for XenServer/XCP,libvirt for KVM or QEMU,VMwareAPI for VMware;nova-schedulerservice,用于云主机调度,从队列中获取虚拟机实例请求,并计算由哪台计算服务运行该虚拟机;nova-conductor module,计算node访问数据的中间件,协调nova-compute service和DB之间交互数据,避免nova-compute service直接访问云DB,不要将该模块部署在nova-compute运行的node上);
networking for VMs(包括nova-network worker daemon、nova-consoleauth daemon、nova-novncproxy daemon、nova-spicehtml5proxy、nova-cert daemon;nova-networkworker daemon,类似nova-compute service,接受来自队列的网络任务和操作网络,如网卡bridge或改变iptables规则;nova-consoleauth daemon,在控制台代理提供用户授权令牌;nova-novncproxy daemon,提供了一个通过vnc连接来访问运行的虚拟机实例的代理,支持基于browser的novnc客户端;nova-spicehtml5proxy,提供了一个通过spice连接来访问运行的虚拟机实例的代理,支持基于browser的html5客户端;nova-cert deamon,x509证书);
image management(EC2scenario)(包括nova-objectstoredaemon、euca2ools client;nova-objectstore daemon,一个amazon S3的接口,用于将amazon S3的镜像注册到openstack;euca2oolsclient,用于兼容amazon E2接口的命令行工具);
command-line clients andother interfaces(nova client,nova命令行工具);
other components(包括the queue、SQL database;the queue,在进程之间传递消息的中心,通过使用rabbitmq;SQL database,保存云基础设置建立和运行时的状态信息);
openstack-nova-api(nova-api组件实现了RESTful API功能,是外部访问nova的唯一途径;接收外部请求并通过MQ将请求发送给其它服务组件,同时也兼容EC2 API,所以也可用EC2的管理工具对nova进行日常管理);
openstack-nova-scheduler(用于云主机调度;该模块作用,决定VM创建在哪个compute node上;决策一个VM应调度到某物理节点,分两步:filter和计算权值weight;filter scheduler首先得到未经过过滤的主机列表,然后根据过滤属性,选择服务条件的compute node主机;经过主机过滤后,需要对主机进行权值的计算,根据策略选择相应的某一台主机,对于每一个要创建的虚拟主机而言,优先选择剩余资源多的主机node存放VM);
openstack-nova-cert(负责身份认证);
openstack-nova-conductor(计算node访问数据的中间件,协调nova-computeservice和DB之间交互数据,避免nova-compute service直接访问云DB,不要将该模块部署在nova-compute运行的node上)
openstack-nova-console(在控制台代理提供用户授权令牌)
openstack-nova-novncproxy(提供了一个通过vnc连接来访问运行的虚拟机实例的代理,支持基于browser的novnc客户端)
注:应用过程中,会出现找不到有效的主机,看nova-scheduler的日志,是资源不够还是其它原因
(4)
neutron网络组件networking component(openstacknetworking;nova-network networkingservice):
演变(nova-network-->quantum-->neutron);
openstack networking(neutron,支持为每一个实例配置多种网络类型;包含支持虚拟网络的各种插件);
nova-network networkingservice(只能为每一个实例配置单一网络类型;提供基本网络功能);
网络(在实际的物理环境下,使用switch把多个计算机连接起来形成了网络,在neutron世界里,网络也是将多个不同的云主机连接起来;neutron网络的目的是,为openstack云更灵活地划分物理网络,在多租户环境下提供给每个租户独立的网络环境,另,neutron提供api来实现这种目标;neutron中网络是一个可以被用户创建的对象,如果要和物理环境下的概念映射的话,这个对象相当于一个巨大的switch,可以拥有无限多个动态可创建和销毁的虚拟端口);
端口(在实际的物理环境下,每个子网或每个网络都有很多端口,端口是用于连接设备进入网络的地方,如switch的端口供计算机连接,在neutron世界里也一样,有类似的功能,云主机的网卡会对应到一个端口上,它是路由器和虚拟机挂接网络的着附点);
路由器(在实际的物理环境下,不同网络或不同逻辑子网间若要通信,需要通过路由器进行路由;neutron中的路由也一样,是一个路由选择和转发部件,用来连接不同的网络或子网,在neutron中可创建和销毁软部件);
子网(在实际物理环境下,在一个网络中可划分多个逻辑子网,子网是由一组IP组成的地址池,不同子网间的通信需要路由器的支持;在neutron世界里一样,neutron中子网隶属于网络);
公共网络(向租户提供访问和api调用);
管理网络(云中物理机之间的通信);
存储网络(云中存储的网络,如iSCSI或glusterfs使用);
服务网络(虚拟机内部使用的网络);
neutron网络的一种典型结构:
openstack网络模型:
OpenStack虚拟网络Neutron把部分传统网络管理的功能推到了租户方,租户通过它可以创建一个自己专属的虚拟网络及其子网,创建路由器等等,在虚拟网络功能的帮助下,基础物理网络就可以向外提供额外的网络服务了,比如租户完全可以创建一个属于自己的类似于数据中心网络的虚拟网络;Neutron 提供了比较完善的多租户环境下的虚拟网络模型以及 API;像部署物理网络一样,使用 Neutron 创建虚拟网络时也需要做一些基本的规划和设计
icehouse加入ML2 plugin(module layer2;实现agent间代码共用;使得不同的主机使用不同的网络类型multi-vender-support,使不同的网络类型共存,如linuxbridge和openvswitch和其它;实现不同的网络拓扑,之前要么VLAN,要么GRE,要么FLAT单一平面网络);
上图,FLAT单一平面网络(物理机和VM在一个网络中;生产中用于255台以下的VM;缺点(存在单一网络瓶颈,缺乏可伸缩性;缺乏合适的多租户隔离)
本文出自 “Linux运维重难点学习笔记” 博客,请务必保留此出处http://jowin.blog.51cto.com/10090021/1858248
原文地址:http://jowin.blog.51cto.com/10090021/1858248