一:云计算
一、起源
1. 云计算这个概念首次在2006年8月的搜索引擎会议上提出,成为了继互联网、计算机后信息时代的又一种革新(互联网第三次革命)。
2. 云计算的核心是将资源协调在一起,使用户通过网络就可以获取到无限的资源并且不受时间和空间的限制,为用户提供一种全新的体验。
二、基本概念
1. 定义
1. 官方:云计算是一种按使用量付费的模式(资源服务模式),该模式可以实现随时随地、便捷按需的从可配置资源共享池中获取所需的资源。
2. 百度百科:云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。
2. 特点
1. 按需部署:根据用户的需求快速配备计算能力及资源分配。
2. 资源池化:供应商的资源被池化,以多用户租用模式被不同客户使用。
3. 快速伸缩:资源可以弹性的部署和释放。
4. 可靠性高:倘若服务器故障也不影响计算与应用的正常运行。
3. 分类
1. 私有云:云计算基础设施由一个单一的组织部署和使用。
2. 公有云:云计算基础设施被部署给广泛的公众公开使用。
3. 混合云:使用标准或专有的技术组合以上两种云。
4. 服务类型
1. IaaS(基础设施即服务):提供商提供虚拟化计算资源,如虚拟机、存储、网络和操作系统。
2. PaaS(平台即服务):通过互联网为开发人员提供构建应用程序和服务的平台。
3. SaaS(软件即服务):通过互联网为用户提供按需软件付费应用程序。
三、平台分类
1. 从技术应用划分
1. 以数据存储为主的存储型云平台
2. 以数据处理为主的计算型云平台
3. 计算和存储兼顾的综合型云平台
2. 从是否收费划分
1. 开源云平台:AbiCloud、Hadoop、Eucalyptus、MongoDB、OpenStack
2. 商业化云平台:Google、IBM、Oracle、Amazon、阿里云等
四、应用
1. 存储云:云存储是一个以数据存储和管理为核心的云计算系统。用户可以将本地的资源上传至云端上,可以在任何地方连入互联网来获取云上的资源。
2. 医疗云:使用云计算来创建医疗健康服务云平台,实现了医疗资源的共享和医疗范围的扩大
3. 金融云:利用云计算的模型,将信息、金融和服务等功能分散到庞大分支机构构成的互联网“云”中,共享互联网资源,从而解决现有问题并且达到高效、低成本的目标。
4. 教育云:教育云可以将所需要的任何教育硬件资源虚拟化,然后将其传入互联网中,以向教育机构和学生老师提供一个方便快捷的平台。
五、虚拟化
1. 虚拟化技术
1. 定义:虚拟化是一个广义上的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一个为了简化管理,优化资源的解决方案。
2. 分类
1. 桌面虚拟化:在本地计算机显示和操作远程计算机桌面,在远程计算机执行程序和储存信息。
2. 应用虚拟化:在操作系统和应用程序间建立虚拟环境。
3. 服务器虚拟化:将服务器物理资源抽象成逻辑资源形成动态管理的“资源池“”。
4. 网络虚拟化:将不同网络的硬件和软件资源结合成一个虚拟的整体。
5. 存储虚拟化:将实体存储空间分隔成不同的逻辑存储空间。
2. 云计算和虚拟化的关系
3. 虚拟化的优点
1. 提高IT资源利用率,加速应用部署,提高应用兼容性。
2. 显著减少了服务器的数量,企业不动资产和管理成本。
二:OpenStack
一、简介
1. 定义
1. 百度百科:OpenStack是一个开源的云计算管理平台项目,由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证授权的开源代码项目。
2. 官方:OpenStack是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过web接口让最终用户部署资源。
2. 发展历程
二、核心架构
1. 物理架构图
2. 逻辑架构图
3. 概念架构图
三、核心项目
1. 共享服务组件
1. 数据库服务(database service):Mariadb及Mongodb。
2. 消息传输(Message Queues)::RabbitMQ
3. 缓存(cache):Memcached
4. 时间同步(time sync):ntp
5. 存储(storge provider):ceph,GFS,LVM,ISICI等
6. 高可用及负载均衡:pacemaker,HAproxy,keepalived,lvs
2. 核心组件
1. 认证服务(Identity Service):Keystone。提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库。
2. 镜像服务(Image Service):Glance。提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
3. 计算服务(compute):Nova。负责维护和管理云计算计算资源,维护和管理计算和网络。
4. 网络服务(Network):Neutron。提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
5. Web界面服务(Dashboard):Horizon。提供了以Web的形式对所有节点的所有服务的管理
6. 块存储服务(Block Storage):Cinder。为运行实例提供稳定的数据块存储服务
7. 对象存储(Object Storage):Swift。为Glance提供镜像存储和卷备份服务
8. 测量(Metering):Ceillrmeter。提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
9. 部署编排(Orchestration):Heat。提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
10. 数据库服务(Database Service):Trove。提供可扩展和可靠的关系和非关系数据库引擎服务
四、组件详解
1. RabbitMQ
1. 概念:实现了AMQP( 高级消息队列协议 )的流行消息队列系统 ,用于在分布式系统中存储转发消息,在 易用性、扩展性、高可用性等方面表现不俗。
2. 特点
1. 开源,性能优秀,稳定性保障。
2. 提供可靠性消息投递模式、返回模式和HA模式、表达式配置及镜像队列模型
3. 集群模式丰富,语Spring AMQP完美整合,保证数据不丢失的前提做到高可靠性和可用性
3. 核心概念
4. 工作原理
1. 客户端连接到消息队列服务器,打开一个channel。
2. 客户端声明一个exchange,并设置相关属性。
3. 客户端声明一个queue,并设置相关属性。
4. 客户端使用routing key,在exchange和queue之间建立好绑定关系。
5. 客户端投递消息到exchange。
6. exchange接收到消息后,就根据消息的key和已经设置的binding,进行消息路由,将消息投递到一个或多个队列里。
5. 常用操作
2. Memcached
1. 概念:Memcached 是一个开源的、高性能的分布式内存对象缓存系统。通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站访问速度,加速动态WEB应用、减轻数据库负载。
2. 缓存流程
1. 检查客户端请求的数据是否在 Memcache 中,如果存在,直接将请求的数据返回,不在对数据进行任何操作。
2. 如果请求的数据不在 Memcache 中,就去数据库查询,把从数据库中获取的数据返回给客户端,同时把数据缓存一份 Memcache 中
3. 每次更新数据库的同时更新 Memcache 中的数据库,确保数据信息一致性。
4. 当分配给 Memcache 内存空间用完后,会使用 LRU 策略加到其失效策略,失效的数据首先被替换掉,然后再替换掉最近未使用的数据。
3. Keystone
1. 作用:认证服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库。
2. 核心概念
3. 工作原理
4. 工作流程(在各个组件中的作用)
4. Glance
1. 作用:镜像服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
2. 核心概念
3. 工作原理
1. Glance-api:接收REST API的请求,然后通过其他模块来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。
2. Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata),默认监听端口9191。
3. Store Adapter:通过提供的存储接口来获取镜像
5. Nova(核心)
1. 作用:负责维护和管理的网络和存储,提供计算服务
2. 核心组件
3. 虚拟机创建流程
6. Horizon
1. 作用:web界面服务(Dashboard),提供了以Web的形式对所有节点的所有服务的管理
2. 区域(Region)
1. 地理上的概念,可以理解为一个独立的数据中心,每个所定义的区域有自己独立的Endpoint;
2. 区域之间是完全隔离的,但多个区域之间共享同一个Keystone和Dashboard(目前Openstack中的Dashboard还不支持多个区域);
3. 区域的设计更多侧重地理位置的概念,用户可以选择离自己更新的区域来部署自己的服务,选择不同的区域主要是考虑那个区域更靠近自己;
4. 区域的概念是由Amazon在AWS中提出,主要是解决容错能力和可靠性;
3. 可用性区域(Availability Zone)
1. AZ是在Region范围内的再次切分,例如可以把一个机架上的服务器划分为一个AZ,划分AZ是为了提高容灾能力和提供廉价的隔离服务;
2. AZ主要是通过冗余来解决可用性的问题,在Amazon的声明中,Instance不可用是指用户所有AZ中的同一个Instance都不可达才表明不可用;
3. AZ是用户可见的一个概念,并可选择,是物理隔离的,一个AZ不可用不会影响其他的AZ,用户在创建Instance的时候可以选择创建到那些AZ中;
4. Host Aggreates:一组具有共同属性的节点集合,如以CPU作为区分类型的一个属性
5. Cell
1. 概念:nova为了增加横向扩展以及分布式、大规模(地理位置级别)部署的能力,同时又不增加数据库和消息中间件的复杂度,引入了cell的概念,并引入了nova-cell服务。
2. 作用
1. 解决OpenStack的扩展性和规模瓶颈
2. 每个Cell都有自己独立的DB和AMQP,不与其他模块共用DB和AMQP,解决了大规模环境中DB和AMQP的瓶颈问题;
3. Cell实现了树形结构(通过消息路由)和分级调度(过滤算法和权重算法),Cell之间通过RPC通讯,解决了扩展性问题;
7. Cinder
1. 作用:存储服务,为运行实例提供稳定的数据块存储服务
2. 核心组件
3. 工作流程
1. 用户向 cinder-api发送创建volume的请求
2. cinder-api对请求做一些必要处理后,通过 Messaging将创建消息发送给cinder-scheduler
3. cinder-scheduler从 Messaging 获取到 cinder-api发给它的消息,然后执行调度算法,从若干计存储点中选出节点 A
4. cinder-scheduler通过 Messaging 将创建消息发送给存储节点A
5. 存储节点 A 的 cinder-volume从 Messaging 中获取到 cinder-scheduler发给它的消息,然后通过 driver 在 volume provider 上创建 volume。
三:先电云计算基础架构服务平台搭建
一、搭建云平台(单双节点)
1. 创建虚拟机并配置网络
1. 虚拟机规格(单双节点均可用)
2. 网络配置
2. 基本环境配置
3. 编辑环境变量
4. 执行脚本安装服务
1. 单节点(computer改为compute)
2. 双节点(computer改为compute)
二、脚本详解
1. 基础配置脚本:iaas-pre-host.sh
1 #/bin/bash 2 source /etc/xiandian/openrc.sh #加载配置文件 3 # config env network 4 # 关闭防火墙,将标准和错误输出永久丢弃 5 systemctl stop firewalld.service 6 systemctl disable firewalld.service >> /dev/null 2>&1 ## 将 7 # 关闭网络管理器,将标准和错误输出永久丢弃 8 systemctl stop NetworkManager >> /dev/null 2>&1 9 systemctl disable NetworkManager >> /dev/null 2>&1 10 # 设置selinux的值为permissive 11 sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config 12 setenforce 0 13 # 删除防火墙和网络管理器软件包,重启网络服务 14 yum remove -y NetworkManager firewalld 15 service network restart 16 #---- ntp --------------------------------- 17 # 安装ntp和iptables服务,执行不成功报错并退出 18 yum install ntp iptables-services -y 19 if [ 0 -ne $? ]; then 20 echo -e "