最新发行版Openstack Havana单机安装指引

转载请注明出处 - 阿Q

v1.0 //2013/11/12

v1.1 //2013/12/6 修改glance的配置,防止snapshot创建时的错误。

//2013/12/7 修改Horizon的配置,使一些项目可以编辑

//2014/02/08修改小错误


Havana于2013年10月份发布,稳定版本为2013.2。相信很多Openstack爱好者和开发测试人员已经开始使用了。作为IaaS架构平台,Openstack面向的是集群主机虚拟化和资源的半自动化调配。但是作为测试和开发使用,尤其是在有限成本控制下,多主机测试在资金和空间占用上耗费较多。所以我们寻求在单主机下实现Openstack的运行。

本文面向的读者:

- 具备基本的Openstack知识(逻辑架构和组成部分)

- 熟悉基本的Linux操作和配置。本文使用的是Ubuntu12.04 LTS Server版,这也是Openstack官方测试所选择的Linux发行版。


既然是单主机系统,那就对主机的配置稍有要求。我用的是Dell的PC服务器,4核,4G内存,500G硬盘,单网卡。这也应该算是最低配置了。说起网卡,Havana官方文档建议的是采用双网段(可以区分内网管理和外网服务),这也就要求我们的服务器具有两个物理端口。因为我们是测试环境,无需区分网络,所以单网卡可以满足要求,只是需要检查单网段下Havana是否工作正常。


因为是单机安装,存储和网络相对都简单化了,所以这里我们暂时不会涉及对象存储(Object Storage),块存储(Block Storage)和网络,以后我会讲如何仿真。


安装会涉及到如下几部分。

  1. 操作系统的基本配置
  2. 配置认证服务(Identity Service)
  3. 配置镜像服务(Image Service)
  4. 配置云计算服务(Compute Services)
  5. 增加用户面板(Dashboard)

注:本文所有的操作命令都是在Ubuntu 12.04 LTS Server版的root用户下执行,所以请先进入root用户模式(sudo -i)以方便执行。

1. 操作系统的基本配置

1.1 网络配置

由于我们只有单网卡,OS的网络配置在你安装系统的时候就已经完成了,所以在此无需配置。针对Openstack的内部网段,我们可以通过虚拟桥接方式实现。你可以手工配置,当然Openstack安装的时候也会自动配置,这里我们先略过不谈。

1.2 NTP配置

因为是单机安装,无需配置NTP Server。

1.3 安装MySql数据库

Openstack服务需要数据库来存储信息。我们就拿常用的MySql来举例。需要安装客户端,数据库和Python库。

# apt-get install python-mysqldb mysql-server
安装时,会需要你设置root用户密码。Openstack要求MySql没有匿名用户权限,所以你需要删除匿名用户和无关的数据库。下面这个命令可以实现。

# mysql_secure_installation
运行以后,会有一些选项,全选yes就ok。

1.4 准备Openstack包

在Ubuntu下,需要安装一些针对Havana的最新的包。

# apt-get install python-software-properties
# add-apt-repository cloud-archive:havana
这些包安装完后,你需要升级一下系统。

# apt-get update && apt-get dist-upgrade

1.5 安装消息队列服务

Openstack默认选用了RabbitMQ。也支持Qpid和ZeroMQ。

# apt-get install rabbitmq-server

2. 配置认证服务(Identity Service)

2.1 安装认证服务(Keystone)

# apt-get install keystone python-keystone python-keystoneclient
我们在mysql里为认证服务创建一个数据库,名字就叫做keystone,密码也是keystone

# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
修改Keystone的配置文件/etc/keystone/keystone.conf,使其指向我们刚刚创建的数据库。修改[sql]部分如下:

[sql]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://keystone:keystone@localhost/keystone
接下来创建keystone需要的表格。

# keystone-manage db_sync
生成admin的token。

# openssl rand -hex 10
还是编辑/etc/keystone/keystone.conf,把上面生成的token替换下面的ADMIN_TOKEN

[DEFAULT]
# A "shared secret" between keystone and other openstack services
admin_token = ADMIN_TOKEN
重启认证服务

# service keystone restart


2.2 定义用户(Users)、租户(Tenants)和角色(Roles)

在使用认证服务的时候,你需要一对用户名和密码。目前我们还没有创建任何用户,但我们可以使用之前创建的管理token。需要做的就是把这个token传给keystone命令(参数为--token)。为了避免每次使用keystone命令都加一些相同的参数,我们可以把这些参数值放到环境变量里。

# export OS_SERVICE_TOKEN=ADMIN_TOKEN
# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
其中endpoint指明认证服务在哪运行。下面创建租户。

# keystone tenant-create --name=admin --description="Admin Tenant"
# keystone tenant-create --name=service --description="Service Tenant"

创建管理用户。用户密码ADMIN_PASS需要自己指定。

# keystone user-create --name=admin --pass=ADMIN_PASS --email=admin@example.com
创建角色

# keystone role-create --name=admin
为用户添加角色和租户属性。

# keystone user-role-add --user=admin --tenant=admin --role=admin

2.3 定义服务和API接入点(endpoints)

认证服务不光管理着用户属性,还登记所有Openstack服务,包括它自己本身。所以我们注册一个认证服务。

# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
创建成功后会生成一个id,这个id要用在下面这个命令上,以便创建API接入点。

# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:5000/v2.0 \
--internalurl=http://127.0.0.1:5000/v2.0 --adminurl=http://127.0.0.1:35357/v2.0
同样的,当你安装其他Openstack服务时,像Glance,Nova,都要运行类似上面的命令。

2.4 验证认证服务是否安装成功

先把环境变量取消。

# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

制作一个文件,文件名自取,例如ksrc,内容如下,然后source一下它。

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:35357/v2.0

# source ksrc


现在你可以尝试获得一下token,如果成功,说明认证服务工作正常。

$ keystone token-get

3. 配置镜像服务

很多命令与配置认证服务一样,我就不做过多解释了。

3.1 安装镜像服务(Glance)

安装glance包。

# apt-get install glance
删除/var/lib/glance/glance.sqlite,防止错误使用sqlite数据库。

为镜像服务创建数据库,名字叫做glance,密码也是glance

# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
生成数据表。

# glance-manage db_sync

keystone里创建glance用户,密码(GLANCE_PASS)自己指定

# keystone user-create --name=glance --pass=GLANCE_PASS--email=glance@example.com
# keystone user-role-add --user=glance --tenant=service --role=admin
修改glance配置文件/etc/glance/glance-api.conf和glance-registry.conf,找到如下部分并修改。

[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
[paste_deploy]
flavor = keystone
在认证服务里注册镜像服务并创建API接入点。

# keystone service-create --name=glance --type=image --description="Glance Image Service"
# keystone endpoint-create \
--service-id=the_service_id_above \
--publicurl=http://127.0.0.1:9292 \
--internalurl=http://127.0.0.1:9292 \
--adminurl=http://127.0.0.1:9292

重启服务。

# service glance-registry restart
# service glance-api restart

3.2 验证镜像服务是否安装成功

准备好一个镜像文件,这个镜像文件可以自己制作,也可以从网上下载。我制作了一个Ubuntu12.04 LTS Server的镜像ubuntu_1204_server.qcow2。至于怎么制作镜像,我们另文讨论。

创建一个镜像。

# glance image-create --name="Ubuntu 12.04 LTS Server" --disk-format=qcow2 \
--container-format=bare --is-public=true < ubuntu_1204_server.qcow2
我的镜像如下所示。

# glance image-list
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+
| ID                                   | Name                    | Disk Format | Container Format | Size       | Status |
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | qcow2       | bare             | 1502347264 | active |
+--------------------------------------+-------------------------+-------------+------------------+------------+--------+
 

4. 配置云计算服务

4.1 安装nova控制服务

先安装所需要的包

# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler python-novaclient
为nova创建数据库,名字叫做nova,密码也是nova

# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
编辑nova配置文件/etc/nova/nova.conf,使其指向自己的数据库。

[database]
# The SQLAlchemy connection string used to connect to the database
sql_connection = mysql://nova:nova@localhost/nova

还有一些其他需要在配置文件nova.conf里修改或添加的属性,如下所示

my_ip=127.0.0.1
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=127.0.0.1
auth_strategy=keystone
rpc_backend=nova.rpc.impl_kombu
rabbit_host=127.0.0.1
glance_host=127.0.0.1
同时修改/etc/nova/api-paste.ini如下。

[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name=service
admin_user=nova
admin_password=nova

生成数据表。

# nova-manage db sync
接下来就是比较熟悉的命令了,如果命令返回错误,可以重启一下nova服务。

# keystone user-create --name=nova --pass=NOVA_PASS --email=nova@example.com
# keystone user-role-add --user=nova --tenant=service --role=admin
# keystone service-create --name=nova --type=compute --description="Nova Compute Service"
# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s --internalurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s --adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s
然后重启一下服务

# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart
下面可以检查一下nova是否配置正确,可以用如下命令。

# nova image-list
+--------------------------------------+-------------------------+--------+--------+
| ID                                   | Name                    | Status | Server |
+--------------------------------------+-------------------------+--------+--------+
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE |        |
+--------------------------------------+-------------------------+--------+--------+

4.2 安装一个nova云计算节点

先下载所需要的包。

# apt-get install nova-compute-kvm python-novaclient python-guestfs
删除默认安装的SQLite数据库

# rm /var/lib/nova/nova.sqlite
重启计算服务
# service nova-compute restart
 

 

4.3 激活内部网络

这应该算是很关键的一步了。我们选用FlatDHCPManager。以后我会用一个专题讲网络。

下载网络包。

# apt-get install nova-network

编辑配置文件/etc/nova/nova.conf

[DEFAULT]
network_manager=nova.network.manager.FlatDHCPManager
fixed_range=192.168.122.0/24
flat_network_dhcp_start=192.168.122.2
flat_network_bridge=virbr0
重启网络服务。

# service nova-network restart

创建自己的虚拟网络。

# nova network-create vmnet --bridge-interface=virbr0

4.4 启动一个镜像

生成密钥

$ ssh-keygen
$ cd .ssh
$ nova keypair-add --pub_key id_rsa.pub mykey
如果你需要自己的镜像实例能被ping通和ssh,需要放开如下权限

# nova secgroup-add-rule defaulttcp 22 22 0.0.0.0/0
# nova secgroup-add-rule defaulticmp -1 -1 0.0.0.0/0

启动实例

$ nova boot --flavor <flavor-id> --key_name mykey --image <image-id> --security_group default Ubuntu
以下是我的例子。

# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      |
| 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      |
| 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      |
| 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      |
| 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

# nova image-list
+--------------------------------------+-------------------------+--------+--------+
| ID                                   | Name                    | Status | Server |
+--------------------------------------+-------------------------+--------+--------+
| dbe3ba9c-c22b-41c9-bac5-dd0e6964c1ce | Ubuntu 12.04 LTS Server | ACTIVE |        |
+--------------------------------------+-------------------------+--------+--------+

# nova list
+--------------------------------------+--------+--------+------------+-------------+---------------------+
| ID                                   | Name   | Status | Task State | Power State | Networks            |
+--------------------------------------+--------+--------+------------+-------------+---------------------+
| eff82154-bd75-40a7-bc83-60ba0f5b2ac4 | ubuntu | ACTIVE | None       | Running     | vmnet=192.168.122.2 |
+--------------------------------------+--------+--------+------------+-------------+---------------------+

5. 增加用户面板

这个非常简单,安装完以后就可以访问了。

# apt-get install memcached libapache2-mod-wsgi openstack-dashboard

编辑/etc/openstack-dashboard/local_settings.py

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"



接着访问http://<your-host-id>/horizon,是不是很简单。


因为时间有限,写的比较简单,肯定会有错误,有些概念也没有深入,以后有时间我会补充。也希望大家的反馈。


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值