分类: 云计算

OpenStack Havana(Ubuntu 13.10)安装笔记

安装配置OpenStack最好的资料是OpenStack的官方安装指南,我就是按照官方指南一步一步进行的,虽然基于的操作系统版本不同(指南中使用的是Ubuntu 12.04),所幸没有遇到什么诡异的问题,不废话了,整个过程记录如下。


安装环境

操作系统:Ubuntu 13.10
配置机器数:1(单点安装)
机器网卡数量:2
Hypervisor类型:KVM


安装顺序

OpenStack主要包括Identity Service、Image Service、Compute Service、Dashboard、Block Storage等几部分组成,OpenStack Havana的整体结构图如下(图片出自官方安装指南):

OpenStack基本结构概况

OpenStack基本结构概况

我没有安装图中全部的模块,仅选择了主要的几部分,按照下面的顺序进行安装:

  1. 基础服务
  2. Identity Service(keystone)
  3. Compute Service(nova)
  4. Dashboard(horizon)
  5. Block Storage(cinder)

一些约定

  • 由于本文是按照单节点的结构进行安装的,所以文中多使用localhost(127.0.0.1)来进行配置。如果需要在多节点环境中进行安装,将localhost改为对应的节点即可。
  • 下文中将不包含安装配置中具体使用的密码,所有使用到的密码如下:
密码 描述
RABBIT_PASS RabbitMQ的guest用户密码
KEYSTONE_DBPASS keystone使用的数据库密码
ADMIN_PASS admin用户密码
GLANCE_DBPASS glance使用的数据库密码
GLANCE_PASS glance用户密码
NOVA_DBPASS nova使用的数据库密码
NOVA_PASS nova用户密码
CINDER_DBPASS cinder使用的数据库密码
CINDER_PASS cinder用户密码

干掉弱密码:一种好用的随机密码生成:


基础服务

安装ntp,作为OpenStack集群的时钟同步服务。如果为多节点安装,修改除Controller以外其他所有节点的/etc/ntp.conf将server指向Controller节点以同步时钟。

安装MySQL并初始化

添加OpenStack的Ubuntu源

安装消息队列服务rabbitmq,并修改rabbitmq guest用户的密码供OpneStack使用


安装Identity Service

修改keystone配置文件/etc/keystone/keystone.conf

在MySQL中为keystone创建数据库和用户

初始化keystone数据表

重启服务

创建初始用户、角色等

为keystone注册服务和endpoint

验证keystone是否可以正常工作


安装Image Service

镜像存储直接使用本地file system作为存储后端,所以不需要额外安装Object Storage等存储服务

修改glance配置文件/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf

创建数据库和用户

初始化glance数据库

在/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini中添加keystone验证信息

为glance创建用户

为glance注册服务和endponit

重启服务

验证glance是否正常工作


安装Compute Service(Controller部分)

修改nova配置文件/etc/nova/nova.conf

创建数据库和用户

初始化nova数据表

在/etc/nova/api-paste.ini中添加keystone验证信息

为nova创建用户

为nova创建服务和endpoint

重启服务


安装Compute Service(Compute Node部分)

这一部分内容安装的是nova运行在compute node上的部分,如果为单节点安装,需要跳过与Controller重复的部分

注意:nova-api-metadata只在独立的compute node安装,与nova-api冲突,如果部署为单节点已经安装了nova-api,则不需要安装nova-api-metadata。
修改nova配置文件/etc/nova/nova.conf

注意在上面的网络设置中,flat_interface和public_interface最好能够区分开,否则可能会影响虚拟机通过NAT连接外网,见后文。

在/etc/nova/api-paste.ini中添加keystone验证信息

创建虚拟网络


安装Dashboard

安装apache2

安装horizon

修改horizon配置文件中OPENSTACK_HOST为Identity Service所在节点

一切顺利的话现在就可以通过访问 http://localhost/horizon 使用OpenStack了


安装Block Storage

安装进行到这里OpenStack的基本功能已经可以正常使用了。但是目前为止的安装中instance只能使用Ephemeral Storage来进行存储,当instance被terminate后所有的存储会丢失。如果想要有可持久的存储,接下来需要安装block storage,也就是OpenStack的Cinder模块。

修改cinder配置文件/etc/cinder/cinder.conf

在/etc/cinder/api-paste.ini中添加keystone验证信息

创建数据库和用户

初始化cinder数据表

为cinder创建用户

为cinder注册服务和endpoint

重启服务

Cinder需要选择一种存储方案作为存储后端,可选的有LVM、Ceph、NFS、ZFS等,这里我选择LVM/iSCSI作为存储后端选择。
如果你也选择LVM作为cinder存储后端,你需要至少一个完整的磁盘分区来配置LVM,你可以选择使用完整的磁盘分区或者使用普通文件创建loop设备(仅限于实验用)来配置LVM,这里有一篇对于LVM的介绍。

我用来配置LVM的分区是/dev/sda9,根据你的情况进行设置

安装cinder-volume

重启服务


虚拟机的ping和SSH

刚安装完成OpenStack后启动instance,你会发现在宿主机上也无法ping通虚拟机ip,并且无法使用ssh登录虚拟机。这是因为OpenStack的安全组设置默认不允许非虚拟机局域网内的input流量,可以通过在Horizon中修改instance所属的安全组(默认为default组)设置或是执行下面的命令来允许icmp和ssh流量进入虚拟机:

其实质上是OpenStack在宿主机上增加了如下iptables规则:


外网访问

OpenStack文档中给出的外网和私有网的连通方式是绑定floating ip和fixed ip的方法,实际上在没有绑定floating ip的情况下虚拟机也可以通过NAT的方式访问外网。
在/etc/nova/nova.conf中添加下面的规则即可(仅限FlatDHCP和VLAN模式)。

这条配置实质上是在宿主机上增加了如下iptables规则:

另外别忘了打开Linux的ip转发功能

重启nova-network