目录:
- 为何选择云计算/云计算之前遇到的问题
- 什么是云计算
- 云服务模式
- 云应用形式
- 传统应用与云感知应用
- openstack及其相关组件介绍
- flat/vlan/gre/vxlan介绍
- 分布式存储ceph介绍
- openstack mitaka三节点部署实战
一:为何选择云计算/云计算之前遇到的问题
一、有效解决硬件单点故障问题 单点故障是指某个硬件的故障造成网站某个服务的中断。要真正解决这个问题,需要为每个硬件准备冗余,这不仅大大增加了硬件购置成本,而且部署与维护成本也不容小视。 而云计算平台是基于服务器集群,从设计之初就考虑了单点故障问题,并在建设时有效地解决了这个问题。如果一家云服务商出现单点故障问题,就如同存在银行的钱丢了。 二、按需增/减硬件资源 自己托管服务器,增/减硬件一直是头疼的问题。 1. 增加服务器的时候,购买服务器需要时间,而且这个时间自己无法控制。而使用云服务器,随时可以增加服务器——垂手可得。 2. 减服务器只能从机房拉回办公室,无法再把服务器退给厂商,购置服务器的成本就浪费了。而使用云服务器,如果下个月不用,不续费就行了(针对阿里云按月购买的情况)——想用就用,想扔就扔。 3. 不能按需增加满足基本需求的服务器配置。假如我们现在需要一台低配置的服务器用Linux跑缓存服务,如果为之单独购买一台便宜的低配置的服务器很不合算,因为这台服务器仅仅一年的电费就至少要3000元左右。所以只能尽量减少服务器数量,提高单台服务器的配置,在让一台服务器跑更多东西。而使用云服务器,需要什么样的配置就买什么样的配置,让各个服务器的职责更单一,互相之间的影响更小——职责分明,效率更高。 三、BGP线路解决南北互通问题 南北互通问题是南方电信与北方联通线路之间的互通问题,这个问题困扰我们多年,之前用过双线机房,解决的也不是很好。目前只有BGP线路才能有效解决这个问题,而拥有真正的BGP线路的机房不是很多,成本也非常高。而我准备使用的阿里云用的就是BGP线路,这也是吸引我们的主要地方之一。 究竟什么是南北互通问题?基于我们的理解简体描述一下,不对之处欢迎指出。南北互通问题实际就是路由问题。假设我们的服务器放在上海电信的机房,上海一位联通的用户访问我们的服务器,要先绕到联通的北京总出口(假设总出口在北京),然后再绕回上海。实际上这位联通用户可以通过上海的线路直接到达我们的服务器,不用绕这么远,但上海电信的机房无法告知联通的路由器走近路过来,只能按照联通路由器设定好的路由走。本来即使走北京绕一下也没有大的影响,毕竟是光的速度,但是由于大多数联通的用户访问电信网络都这么绕着走,联通的总出口成为了瓶颈,总出口流量太大时,联通的用户访问电信的网络速度就会慢。BGP线路也没什么神奇之处,只是它能决定走什么路由过来,不绕远路,问题自然解决了。它有这样的特权,就不仅能解决南北互通的问题,而且能解决其他网络的互通问题,比如教育网。因为有权限决定路由,就可以优化路由,哪条路堵,我就换条路。 四、按需增/减带宽 带宽是主要成本,托管服务器时,与ISP服务商签一年合同之前就要确定带宽。用了一段时间之后,你发现带宽买多了,想减一些是不允许的。中途要临时增加带宽一段时间也是不行的,要买就买一年(这是根据我们接触过的ISP服务商)。所以,一般都会多买一些带宽,留一些余量。 使用云服务器可以灵活地增减带宽,不会浪费带宽,即使买少了也不用担心,随时可以增加。虽然各个云服务商会有一定的限制,比如在阿里云一次至少要购买1个月的带宽,但比自己托管服务器灵活很多,同样的带宽条件,会节省不少成本,尤其是带宽需求在一年中变化比较大的网站。 五、更有吸引力的费用支付方式 在IDC机房托管服务器一般是签一年合同,一次支付一个季度的费用。 而使用云服务,一次可以支付更短时间的费用,比如阿里云可以一次只支付一个月的费用,节约了流动资金。 从总体上考虑,差不多的成本,却拥有更多的内存、更多的CPU、更多的硬盘空间、更优质的带宽线路,更重要的是可以随时按需扩展计算资源。
二:什么是云计算(资源和服务的交互方式)
一、概念分解: 云:云计算中的云,代表循环利用的意思(云多了变成雨,落到地面,云减少,水蒸发到空中,云增加)。 计算:云计算中的计算,代表计算资源,涵盖虚机、存储、网络等。 云计算:代表计算资源向云水循环一样,按需分配,循环利用。 附:企业数据中心部署在云计算分布式平台上,类似于从原来单台发电机转向电厂集中供电模式,它意味着访问计算机和存储系统也可以作为一种商品流通,就像煤气、水电一样,取用方便,费用低廉,只不过它是通过互联网传输的,云就是互联网的一种比喻 二、云计算分类: 狭义:IT基础设施的交互和使用模式,通过网络以按需,易扩展的方式获取资源 广义:服务(IT基础设施、软件等)的交互和使用模式,通过网络以按需、易扩展的方式获取资源。
三:云服务模式
一、IaaS:基础设施即服务 用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源。 典型应用:亚马逊AWS等
二、PaaS:平台即服务 将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等。典型应用:Google AppEngine、Force.com、微软Azure等
三、SaaS:软件即服务 将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动。典型应用:Google Doc、Saleforce.com、Oracle CRM On Demand、Office Live Workspace等
四:云应用形式
一.私有云 将基础设施与软硬件资源构建于防火墙内,基于iaas构建私有云平台供企业内部使用,开源组件有:openstack(最为出色),cloudstack等
二.云存储 云存储系统是一个以数据存储和管理为核心的云计算系统
三.云游戏 游戏运行云平台服务端,云平台将游戏画面解压缩后传给用户,用户端无需高配置处理器和显卡,只需要基本的视频解压缩能力即可。
四.云物联 基于云平台实现物物相连的互联网。
五.云安全 通过网状的大量客户端检测网络中软件的异常,获取木马,恶意程序的最新信息,推送到云平台服务端自动分析和处理,再把解决方案发送给每一个客户端。云平台使用者越多,越安全。
六.公有云 云平台对外开放,主要以Iaas和Paas为主,较为成熟的是Iaas,如阿里云,腾讯云,青云,ucloud,首都在线等
七.混合云
公有云和私有云的结合,即对企业内部又对企业外部,例如AWS
五:传统应用与云感知应用
一、传统应用
传统应用像养宠物,宠物病了要细心呵护
每个应用都是独特的、专门的
专门的服务器、硬件和软件保证可靠性
资源不够,增加cpu、内存、磁盘
专门的技术支持
二、云感知应用
云感知应用像养牛,牛生病了,你需要一头新的牛
应用跑在一个或多个虚拟机里
资源不够,增加新的虚拟机
应用挂起,重启或创建新的虚拟机
六:openstack与及其相关组件介绍
一、openstack由来
openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成。后来以apache许可证授权,旨在为公共及私有云平台建设。openstack主要用来为企业内部实现类似于Amazon EC2和S3的云基础架构服务(Iaas).每6个月更新一次,基本与ubuntu同步,命名是以A-Z作为首字母来的。
二、openstack项目与组件(服务名是项目名的别名)
核心项目3个
1.控制台
服务名:Dashboard
项目名:Horizon
功能:web方式管理云平台,建云主机,分配网络,配安全组,加云盘
2.计算
服务名:计算
项目名:Nova
功能:负责响应虚拟机创建请求、调度、销毁云主机
3.网络
服务名:网络
项目名:Neutron
功能:实现SDN(软件定义网络),提供一整套API,用户可以基于该API实现自己定义专属网络,不同厂商可以基于此API提供自己的产品实现
存储项目2个
1.对象存储 服务名:对象存储 项目名:Swift 功能:REST风格的接口和扁平的数据组织结构。RESTFUL HTTP API来保存和访问任意非结构化数据,ring环的方式实现数据自动复制和高度可以扩展架构,保证数据的高度容错和可靠性
2.块存储 服务名:块存储 项目名:Cinder 功能:提供持久化块存储,即为云主机提供附加云盘。
共享服务项目3个 1.认证服务 服务名:认证服务 项目名:Keystone 功能:为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件。
2.镜像服务 服务名:镜像服务 项目名:Glance 功能:为云主机安装操作系统提供不同的镜像选择
3.计费服务 服务名:计费服务 项目名:Ceilometer 功能:收集云平台资源使用数据,用来计费或者性能监控
高层服务项目1个 1.编排服务 服务名:编排服务 项目名:Heat 功能:自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas
三、openstack各组件详解及运行流程
openstack运行示例
1.消息中间件和数据库
Openstack 的主要组件有 Nova、Cinder、Neutron、Glance 等,分别负责云平台的计算、存储、网络资源管理。OpenStack 各组件之间是通过 REST 接口进行相互通信,而各组件内部则采用了基于 AMQP 模型的 RPC 通信。在本文中,笔者将会以 OpenStack 块存储组件 Cinder 为例,分享 OpenStack RPC 机制的实现以及应用
https://www.ibm.com/developerwor ... _renmm_opestackrpc/
2.keystone
User:指使用Openstack service的用户,可以是人、服务、系统,但凡使用了Openstack service的对象都可以称为User。 Project(Tenant):可以理解为一个人、或服务所拥有的 资源集合 。在一个Project(Tenant)中可以包含多个User,每一个User都会根据权限的划分来使用Project(Tenant)中的资源。比如通过Nova创建虚拟机时要指定到某个Project中,在Cinder创建卷也要指定到某个Project中。User访问Project的资源前,必须要与该Project关联,并且指定User在Project下的Role。 Role:用于划分权限。可以通过给User指定Role,使User获得Role对应的操作权限。Keystone返回给User的Token包含了Role列表,被访问的Services会判断访问它的User和User提供的Token中所包含的Role。系统默认使用管理Role admin和成员Role _member_ 。 Policy:OpenStack对User的验证除了OpenStack的身份验证以外,还需要鉴别User对某个Service是否有访问权限。Policy机制就是用来控制User对Tenant中资源(包括Services)的操作权限。对于Keystone service来说,Policy就是一个JSON文件,默认是/etc/keystone/policy.json。通过配置这个文件,Keystone Service实现了对User基于Role的权限管理。 Token:是一个字符串表示,作为访问资源的令牌。Token包含了在 指定范围和有效时间内 可以被访问的资源。EG. 在Nova中一个tenant可以是一些虚拟机,在Swift和Glance中一个tenant可以是一些镜像存储,在Network中一个tenant可以是一些网络资源。Token一般被User持有。 Credentials:用于确认用户身份的凭证 Authentication:确定用户身份的过程 Service:Openstack service,即Openstack中运行的组件服务。 Endpoint:一个可以通过网络来访问和定位某个Openstack service的地址,通常是一个URL。比如,当Nova需要访问Glance服务去获取image 时,Nova通过访问Keystone拿到Glance的endpoint,然后通过访问该endpoint去获取Glance服务。我们可以通过Endpoint的region属性去定义多个region。Endpoint 该使用对象分为三类: - admin url –> 给admin用户使用,Post:35357
- internal url –> OpenStack内部服务使用来跟别的服务通信,Port:5000
- public url –> 其它用户可以访问的地址,Post:5000
public url可以被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。 V3新增
- Tenant 重命名为 Project
- 添加了 Domain 的概念
- 添加了 Group 的概念
3.glance
v1
v2
4.nova与cinder流程类似见1
- nova-api service
- Accepts and responds to end user compute API calls. The service supports the OpenStack Compute API, the Amazon EC2 API, and a special Admin API for privileged users to perform administrative actions. It enforces some policies and initiates most orchestration activities, such as running an instance.
- nova-api-metadata service
- Accepts metadata requests from instances. The nova-api-metadata service is generally used when you run in multi-host mode with nova-network installations. For details, see Metadata service in the OpenStack Administrator Guide.
- nova-compute service
A worker daemon that creates and terminates virtual machine instances through hypervisor APIs. For example:
- XenAPI for XenServer/XCP
- libvirt for KVM or QEMU
- VMwareAPI for VMware
Processing is fairly complex. Basically, the daemon accepts actions from the queue and performs a series of system commands such as launching a KVM instance and updating its state in the database. - nova-scheduler service
- Takes a virtual machine instance request from the queue and determines on which compute server host it runs.
- nova-conductor module
- Mediates interactions between the nova-compute service and the database. It eliminates direct accesses to the cloud database made by the nova-compute service. The nova-conductor module scales horizontally. However, do not deploy it on nodes where the nova-compute service runs. For more information, see Configuration Reference Guide.
- nova-cert module
- A server daemon that serves the Nova Cert service for X509 certificates. Used to generate certificates for euca-bundle-image. Only needed for the EC2 API.
- nova-network worker daemon
- Similar to the nova-compute service, accepts networking tasks from the queue and manipulates the network. Performs tasks such as setting up bridging interfaces or changing IPtables rules.
- nova-consoleauth daemon
- Authorizes tokens for users that console proxies provide. See nova-novncproxy and nova-xvpvncproxy. This service must be running for console proxies to work. You can run proxies of either type against a single nova-consoleauth service in a cluster configuration. For information, see About nova-consoleauth.
- nova-novncproxy daemon
- Provides a proxy for accessing running instances through a VNC connection. Supports browser-based novnc clients.
- nova-spicehtml5proxy daemon
- Provides a proxy for accessing running instances through a SPICE connection. Supports browser-based HTML5 client.
- nova-xvpvncproxy daemon
- Provides a proxy for accessing running instances through a VNC connection. Supports an OpenStack-specific Java client.
- nova-cert daemon
- x509 certificates.
- nova client
- Enables users to submit commands as a tenant administrator or end user.
5.cinder见1
6.neutron
一 (1)大容量的MAC表项和ARP表项 虚拟化会导致更大的MAC表项。假设一个互联网云计算中心的服务器有5000台,按照1:20的比例进行虚拟化,则有10万个虚拟机。通常每个虚拟机会配置两个业务网口,这样这个云计算中心就有20万个虚拟网口,对应的就是需要20万个MAC地址和IP地址。云计算要求资源灵活调度,业务资源任意迁移。也就是说任意一个虚拟机可以在整个云计算网络中任意迁移。这就要求全网在一个统一的二层网络中。全网任意交换机都有可能学习到全网所有的MAC表项。与此对应的则是,目前业界主流的接入交换机的MAC表项只有32K,基本无法满足互联网云计算的需求。另外,网关需要记录全网所有主机、所有网口的ARP信息。这就需要网关设备的有效ARP表项超过20万。大部分的网关设备芯片都不具备这种能力。 (2)4K VLAN Trunk问题 传统的大二层网络支持任意VLAN的虚拟机迁移到网络的任意位置,一般有两种方式。方式一:虚拟机迁移后,通过自动化网络管理平台动态的在虚拟机对应的所有端口上下发VLAN配置;同时,还需要动态删除迁移前虚拟机对应所有端口上的VLAN配置。这种方式的缺点是实现非常复杂,同时自动化管理平台对多厂商设备还面临兼容性的问题,所以很难实现。方式二:在云计算网络上静态配置VLAN,在所有端口上配置VLAN trunk all。这种方式的优点是非常简单,是目前主流的应用方式。但这也带来了巨大的问题:任一VLAN内如果出现广播风暴,则全网所有VLAN内的虚拟机都会受到风暴影响,出现业务中断。 (3)4K VLAN上限问题 云计算网络中有可能出现多租户需求。如果租户及业务的数量规模超出VLAN的上限(4K),则无法支撑客户的需求。 (4)虚拟机迁移网络依赖问题 VM迁移需要在同一个二层域内,基于IP子网的区域划分限制了二层网络连通性的规模。 二
数据中心(Data Center)中的物理网络是固定的、需要手工配置的、单一的、没有多租户隔离的网络
而云架构往往是多租户架构,这意味着多个客户会共享单一的物理网络
- OpenSack Cloud network:OpenStack 所管理的网络。
- External network:数据中心所管理的的公司网(Intranet) ,虚机使用的 Floating IP 是这个网络的地址的一部分。
- Internet:由各大电信运营商所管理的公共网络,使用公共IP。
- Provider network 是由 Admin 用户创建的,而 Tenant network 是由 tenant 普通用户创建的。
- Provider network 和物理网络的某段直接映射,比如对应某个 VLAN,因此需要预先在物理网络中做相应的配置。而 tenant network 是虚拟化的网络,Neutron 需要负责其路由等三层功能。
- 对 Flat 和 VLAN 类型的网络来说,只有 Provider network 才有意义。即使是这种类型的 tenant network,其本质上也是对应于一个实际的物理段。
- 对 GRE 和 VXLAN 类型的网络来说,只有 tenant network 才有意义,因为它本身不依赖于具体的物理网络,只是需要物理网络提供 IP 和 组播即可。
- Provider network 根据 admin 用户输入的物理网络参数创建;而 tenant work 由 tenant 普通用户创建,Neutron 根据其网络配置来选择具体的配置,包括网络类型,物理网络和 segmentation_id。
- 创建 Provider network 时允许使用不在配置项范围内的 segmentation_id。
|