OpenStack
OpenStack是什么
-
用于实现云项目的云计算技术解决方案
-
云操作系统
作用:用于部署公有云、私有云、并实现对云项目的管理
开发语言:python
OpenStack核心服务
- Compute
- Networking
- Storage
OpenStack组件项目
- Compute 计算服务 Nova
- Networking 网络服务 Neutron
- Object Storage 对象存储e服务 Swift
- Block Storage 块存储服务 Cinder
- Identity 身份认证服务 Keystone
- Image Service 镜像服务 Glance
- Dashboard UI界面 Horizon
- Metering 测量 Ceilometer
- Orchestration 部署编排 Heat
- Database Service 数据库服务 Trove
- 消息队列–rabbitmq
- 缓存系统–memcache
Keystone
用户管理
- 认证
- 方式:token令牌、账号密码、服务目录、策略
- 核心术语
- User:使用Openstack服务的一个用户
Project:(Tenant租户)组件服务的一种资源隔离方式
Role:角色,User访问指定Project资源的一种权限
Token:令牌,一个综合的加密认证信息- 一个User赋予在指定Project中一个资源访问的Role角色
- User:使用Openstack服务的一个用户
- 授权
服务目录(端点目录服务)
- Service:OpenStack各组提供的服务,用于用户访问
- Endpoint:用户访问Service的一个url链接入口
组件部署
- 数据库配置
- 软件安装
- 配置文件设置
- 信息初始化
- web页面配置(keystone需要httpd才能提供服务)
- 认证权限管理
- 验证方式
- 端口梳理:5000-公共服务(普通用户)
35357-管理副U(admin用户)
glance
作用:用户发现、注册及搜索VM实例镜像文件的功能
组件
- glance-api
- 查询获取:是RESTful格式的API,供外部用户查询VM实例镜像的元数据信息,和通过HTTP请求来获取镜像文件
- 内容更改:涉及到数据库操作,会调用registry-client生成HTTP指令,交给glance-registry处理
- glance-registry
- 只响应从glance-api发送过来额镜像元数据REST请求,然后与数据库进行交互,实现VM实例镜像的元数据信息的存储、处理、获取
- glance-db
- 在OpenStack中使用数据库来支撑,用于存放VM实例镜像的元数据
镜像文件存储
- 存储机制:普通文件系统、分布式文件系统(ceph、swift、glusterfs)、HTTP服务
- 镜像格式:Raw、qcow2(qemu/kvm)、VHD(Hyper-v)、VDI(VirtueBox)、VMDK(VMWare)、OVF(VMWare,others)、Machine(不包含内核、内存、存储,例如AMI)
- 访问权限
- Public
- Private
- Shared
- Protected
- 镜像文件状态类型
- Queued
- Saving
- Active
- Delete/pending_delete
- Killed
镜像文件介绍
- 主要是操作系统,本身不做存储功能
- 特点:支持由Openstack获取其元数据信息;
支持对镜像文件的大小进行调整
组件部署
- 数据库配置
- 软件安装
- 配置文件设置
- glance-api.conf:数据库连接、keystone认证、glance存储
glance-registry.conf:数据库连接、keystone认证
- glance-api.conf:数据库连接、keystone认证、glance存储
- 信息初始化
- 权限设置
- 效果检查
- 端口详情
- 9292(glance-api服务),9191(glance-registry服务)
nova
组件
- API组件
- nova-api:负责接收外部操作请求,是外部访问nova的唯一途径
- nova-api-metadata:是nova-api子服务,为VM实例创建提供metadata信息
- Compute Core组件
- nova-scheduler:VM实例的资源调度
- nova-compute:管理VM实例,通过消息队列接受请求,承担操作工作
- nova-Conductor:nova-compute 借助nova-Conductor 实现对数据库的访问
- Console Interface 组件
- nova-cert:负责身份认证
- nova-comsoleauth:用户控制台的授权验证
- nova-novncproxy:VNC代理,支持基于浏览器的vnc客户端
资源调度策略
- nova-scheduler模块通过过滤和权重计算,来决策VM实例创建在那个计算节点上
- 过滤:已用节点——>可用节点——>内存匹配——>磁盘匹配——>CPU匹配——>服务正常——>特性正常——>镜像属性正常——>主机组
- 计算权重:对过滤后的计算节点进行空闲资源评分,选主机
默认情况下,根据计算节点空闲内存量计算权重值
组件部署
- 控制节点
- 数据库——软件安装——配置文件修改——信息初始化——权限设置——测试效果
- nova.conf:数据库连接、rabbitmq连接、keystone认证、网络类型、vnc。记录追踪
- 00-nova-placement-api.conf:web访问权限
- 数据库——软件安装——配置文件修改——信息初始化——权限设置——测试效果
- 计算节点
- 软件安装——配置文件修改
- nova.conf:rabbitmq连接。keystone认证、网络类型、vnc、记录追踪
- 软件安装——配置文件修改
- 控制节点
- 增加计算节点
- 端口详情
- 6080(vncproxy服务)、8773(nova-api服务)、8774(nova-compute服务)、8775(metadata服务)
neutron
基本网络架构
- 管理网络
- 数据网络
- 外部网络
网络类型
- Provider网络:半虚拟化网络
- flat
- local
- vlan
- Self-Service网络:全虚拟化网络
- Flat
- Local
- VLAN
- VxLAN、GRE
组件
- neutron-server:接收API请求并转发给适当的网络插件来执行操作
- Neutron database:存储网络相关参数信息的Neutron数据库
- neutron-dhcp-agent:向所有Project网络提供动态主机配置协议服务
- neutron-l3-agent:执行L3/网络地址转化(NAT)转发,以支持网络访问租户网络上的VM
- neutron-l2-agent:二层网络插件
- neutron-3rd party plugin:第三方网络插件
部署
- 控制节点
- 计算节点
- 端口:9696(Neutron服务端口)
cinder
组件
- cinder-api:接收用户的存储信息请求,将该请求路由给存储节点处理
- cinder-scheduler:根据调度策略选择合适的后端存储节点来处理用户的请求
- cinder-volume:处理存储服务的读取和写入请求,通过相关驱动程序架构直接与块存储服务进行交互
- cinder-database:存储相关的运输局信息
Horizon
- 是OpenStack各个服务项目与用户进行交互的统一管理界面
虚拟机
- CPU
- 内存
- 存储
- 网络