首页 > 代码库 > OpenStack实战指南 笔记

OpenStack实战指南 笔记

OpenStack实战指南

跳转至: 导航、 搜索

目录

  • 1OpenStack简介
  • 2OpenStack安装
  • 3OpenStack组织结构一览
  • 4OpenStack API的介绍和开发
  • 5Keystone认证组件
  • 6Glance镜像组件
  • 7Nova计算组件
  • 8Neutron网络组件
  • 9Cinder块存储组件
  • 10OpenStack日常运维
  • 11使用Fuel快速安装OpenStack

OpenStack简介

  1. 2010,来自于NASA Nebula(之前用的是Eucalyptus) + Rackspace Swift
  2. vs CloudStack
    1. p7 Apache项目成员均以个人名义列入,而不是他们所代表的公司
    2. Neutron接受来自虚拟机的指令来定义VM需要的网络,然后转发给交换机和路由器创建这些网络(SDN?)
    3. OpenStack为分布式组件模式(不可热插拔?),CloudStack是一个可插拔式的模型
    4. 都支持KVM、Xen、VMWare,OpenStack还支持Hyper-V、PowerVM、LXC via libvirt、Baremental、QEMU、Docker
  3. 创建虚拟机实例
    1. Horizon将用户的HTTP请求转换为REST分发给Nova API,这期间会将镜像文件下载到Nova节点,并进行虚拟机配置
  4. 非核心项目
    1. Ironic:管理物理机的生命周期?
      1. 前身:Nova baremental驱动,主要通过PXE和IPMI进行管理?
    2. Tempest:功能测试、集成测试;基于unittest2和nose

OpenStack安装

  1. OpenStack通过AMQP实现RPC服务:RabbitMQ、Qpid、ZeroMQ
  2. 添加Havana的源(Ubuntu 12.04默认是Essex)
    1. # apt-get install -y python-software-properties
    2. # add-apt-repository cloud-archive;avana
    3. # apt-get update
    4. # apt-get upgrade -y
    5. # apt-get dist-upgrade -y
  3. # apt-get install -y ntp
  4. # apt-get install -y mysql-server python-mysqldb
    1. sed -I"s/127.0.0.1/10.80.80.10/" /etc/mysql/my.conf (这么修改mysql配置文件可靠吗?)
  5. # apt-get install -y rabbitmq-server
    1. rabbitmqctl change_password guest NEWPWD
  6. 安装部署Keystone
    1. # vi /etc/keystone/keystone.conf:admin_token?
    2. # keystone-manage db_sync(有点rails风格)
    3. p41 建立Tenant、用户、角色(略)
      1. # keystone user-role-add --user admin --role admin --tenant admin
    4. 定义Services和API Endpoints
  7. 安装Glance镜像组件(主要包括glance-api和glance-registry两个服务)
    1. # glance image-create --name my1stimg --is-public true --container-format bare --disk-format qcow2 --file a.img
  8. 安装Neutron组件(实际实现依赖与更底层的Open vSwitch、Nicira等)
    1. 当Grizzly版本发布后,网络组件改名叫Neutron,以前叫Quantum
  9. 安装Nova(略)
  10. 安装Cinder(略)
  11. 安装Horizon(略)
  12. 网络节点的安装*(这部分内容感觉有点技术含量啊)
    1. 负责虚拟机的网络控制,包括DHCP、虚拟路由、公网访问等,使用Open vSwitch作为底层驱动
  13. 计算节点的安装
    1. 负责运行虚拟机,KVM + libvirt
  14. 块存储节点的安装(负责提供volume)
  15. *在Ubuntu上使用源代码编译安装
    1. p68 学习DevStack
    2. p71 使用tmux启动keystone(tmux看起来是个不错的工具,它和一般shell/ssh的区别是什么?)
      1. $ tmux new-session -s keystone
      2. $ bin/keystone-all --config-file /etc/keystone/keystone.conf
    3. 下略

OpenStack组织结构一览

  1. 在Grizzly版本中,nova-compute不再之间与database交互,而是通过nova-conductor代理

OpenStack API的介绍和开发

  1. Nova API:以WSGI为入口,加上Routes、Webob和Paste等Python组件
    1. 分页查询:marker(上次最后一条记录name) limit end_marker
  2. 理解Eventlet(Python库,依赖于Greenlet和select.epoll)
  3. 自定义Dashboard面板
    1. Horizon基于Django

Keystone认证组件

  1. 哈哈,从这一章看来,OpenStack开发其实就是Python语言的编程

Glance镜像组件

  1. 表结构:glance# \dt
    1. image_locations
    2. images
    3. migrate_version
  2. 镜像状态:queued saving active killed deleted pending_delete
  3. 镜像格式
    1. RAW
    2. qcow2(QEMU的Copy on Write)
    3. VHD(微软的Virtual PC和Hyper-V)
    4. VMDK
    5. VDI
    6. ISO
    7. AKI、ARI、AMI
  4. 延时删除?glance-scrubber
  5. 设置后端存储:Ceph*
  6. 制作镜像

Nova计算组件

  1. 虚拟机(instance)状态:vm_state task_state power_state
    1. p194 在libvirt中,虚拟机被定义为Domain,简称Dom
  2. Context
    1. service_catalog到底是什么?

Neutron网络组件

  1. 虚拟设备:network subnet router port
  2. p205 在一个实际的部署Neutron环境中,往往会在不同的节点上安装多个服务,这是初学者不容易理解的地方
    1. 哈哈,网络管理配置本来就不容易,这算是一个技术壁垒了
  3. 插件?
    1. ML2?
    2. neutron-XXX-agent:DHCP、l3、metadata、LBaaS、FWaaS
  4. 使用Open vSwitch(OVS)的插件
    1. 网络类型:Provider / Tenant
    2. L3 agent:实现网络层路由转发和NAT;Floating IP

Cinder块存储组件

  1. dbus(IPC服务)导致libvirt出错?

OpenStack日常运维

  1. 集中管理日志:rsyslog?

使用Fuel快速安装OpenStack 

OpenStack实战指南 笔记