OpenStack实战指南
目录 |
OpenStack简介
- 2010,来自于NASA Nebula(之前用的是Eucalyptus) + Rackspace Swift
- vs CloudStack
- p7 Apache项目成员均以个人名义列入,而不是他们所代表的公司
- Neutron接受来自虚拟机的指令来定义VM需要的网络,然后转发给交换机和路由器创建这些网络(SDN?)
- OpenStack为分布式组件模式(不可热插拔?),CloudStack是一个可插拔式的模型
- 都支持KVM、Xen、VMWare,OpenStack还支持Hyper-V、PowerVM、LXC via libvirt、Baremental、QEMU、Docker
- 创建虚拟机实例
- Horizon将用户的HTTP请求转换为REST分发给Nova API,这期间会将镜像文件下载到Nova节点,并进行虚拟机配置
- 非核心项目
- Ironic:管理物理机的生命周期?
- 前身:Nova baremental驱动,主要通过PXE和IPMI进行管理?
- Tempest:功能测试、集成测试;基于unittest2和nose
- Ironic:管理物理机的生命周期?
OpenStack安装
- OpenStack通过AMQP实现RPC服务:RabbitMQ、Qpid、ZeroMQ
- 添加Havana的源(Ubuntu 12.04默认是Essex)
- # apt-get install -y python-software-properties
- # add-apt-repository cloud-archive;avana
- # apt-get update
- # apt-get upgrade -y
- # apt-get dist-upgrade -y
- # apt-get install -y ntp
- # apt-get install -y mysql-server python-mysqldb
- sed -I"s/127.0.0.1/10.80.80.10/" /etc/mysql/my.conf (这么修改mysql配置文件可靠吗?)
- # apt-get install -y rabbitmq-server
- rabbitmqctl change_password guest NEWPWD
- 安装部署Keystone
- # vi /etc/keystone/keystone.conf:admin_token?
- # keystone-manage db_sync(有点rails风格)
- p41 建立Tenant、用户、角色(略)
- # keystone user-role-add --user admin --role admin --tenant admin
- 定义Services和API Endpoints
- 安装Glance镜像组件(主要包括glance-api和glance-registry两个服务)
- 略
- # glance image-create --name my1stimg --is-public true --container-format bare --disk-format qcow2 --file a.img
- 安装Neutron组件(实际实现依赖与更底层的Open vSwitch、Nicira等)
- 当Grizzly版本发布后,网络组件改名叫Neutron,以前叫Quantum
- 安装Nova(略)
- 安装Cinder(略)
- 安装Horizon(略)
- 网络节点的安装*(这部分内容感觉有点技术含量啊)
- 负责虚拟机的网络控制,包括DHCP、虚拟路由、公网访问等,使用Open vSwitch作为底层驱动
- 计算节点的安装
- 负责运行虚拟机,KVM + libvirt
- 块存储节点的安装(负责提供volume)
- *在Ubuntu上使用源代码编译安装
- p68 学习DevStack
- p71 使用tmux启动keystone(tmux看起来是个不错的工具,它和一般shell/ssh的区别是什么?)
- $ tmux new-session -s keystone
- $ bin/keystone-all --config-file /etc/keystone/keystone.conf
- 下略
OpenStack组织结构一览
- 在Grizzly版本中,nova-compute不再之间与database交互,而是通过nova-conductor代理
OpenStack API的介绍和开发
- Nova API:以WSGI为入口,加上Routes、Webob和Paste等Python组件
- 分页查询:marker(上次最后一条记录name) limit end_marker
- 理解Eventlet(Python库,依赖于Greenlet和select.epoll)
- 自定义Dashboard面板
- Horizon基于Django
Keystone认证组件
- 哈哈,从这一章看来,OpenStack开发其实就是Python语言的编程
Glance镜像组件
- 表结构:glance# \dt
- image_locations
- images
- migrate_version
- 镜像状态:queued saving active killed deleted pending_delete
- 镜像格式
- RAW
- qcow2(QEMU的Copy on Write)
- VHD(微软的Virtual PC和Hyper-V)
- VMDK
- VDI
- ISO
- AKI、ARI、AMI
- 延时删除?glance-scrubber
- 设置后端存储:Ceph*
- 制作镜像
- 略
Nova计算组件
- 虚拟机(instance)状态:vm_state task_state power_state
- p194 在libvirt中,虚拟机被定义为Domain,简称Dom
- Context
- service_catalog到底是什么?
Neutron网络组件
- 虚拟设备:network subnet router port
- p205 在一个实际的部署Neutron环境中,往往会在不同的节点上安装多个服务,这是初学者不容易理解的地方
- 哈哈,网络管理配置本来就不容易,这算是一个技术壁垒了
- 插件?
- ML2?
- neutron-XXX-agent:DHCP、l3、metadata、LBaaS、FWaaS
- 使用Open vSwitch(OVS)的插件
- 网络类型:Provider / Tenant
- L3 agent:实现网络层路由转发和NAT;Floating IP
Cinder块存储组件
- dbus(IPC服务)导致libvirt出错?
OpenStack日常运维
- 集中管理日志:rsyslog?
使用Fuel快速安装OpenStack
时间: 2024-11-05 22:03:11