Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4449216
  • 博文数量: 1648
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12484
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1648)

文章存档

2019年(1)

2018年(20)

2017年(68)

2016年(61)

2015年(52)

2014年(204)

2013年(224)

2012年(645)

2011年(373)

分类: 云计算

2014-03-06 13:54:53

 最新发行版Openstack Havana单机安装指引 [复制链接]
00

企业云咨询顾问


帖子 26 主题 3 精华 0 可用积分 60 专家积分 0 在线时间 54 小时 注册时间 2005-10-14 最后登录 2014-02-18 论坛徽章: 0
电梯直达跳转到指定楼层
1[收藏(0)][报告][回复][引用]
 发表于 2013-11-14 10:46:16 |只看该作者 |倒序浏览
本帖最后由 cusor 于 2013-11-14 10:47 编辑

v1.0 //2013/11/12

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)和网络,以后我会讲如何仿真。

安装会涉及到如下几部分。
操作系统的基本配置
配置认证服务(Identity Service)
配置镜像服务(Image Service)
配置云计算服务(Compute Services)
增加用户面板(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
在认证服务里注册镜像服务并创建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 --key_name mykey --image --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
接着访问http:///horizon,是不是很简单。

Rank: 7Rank: 7Rank: 7

帖子 1232 主题 25 精华 0 可用积分 10946 专家积分 0 在线时间 2147 小时 注册时间 2012-05-30 最后登录 2014-02-02 论坛徽章: 2
CU新栏目活动纪念
日期:2013-04-17 11:46:28CU新栏目活动纪念
日期:2013-04-17 11:46:39
2[报告][回复][引用]
 发表于 2013-11-14 11:32:16 |只看该作者
挺好的,就是不知道H版好用不?稳定性、可靠性如何?
语言最爱 c、c++、java、php、javascript、perl、python、ruby...
数据库最爱 mysql、redis、memcached...
企业云咨询顾问


帖子 26 主题 3 精华 0 可用积分 60 专家积分 0 在线时间 54 小时 注册时间 2005-10-14 最后登录 2014-02-18 论坛徽章: 0
3[报告][回复][引用]
 发表于 2013-11-14 14:07:26 |只看该作者
按Openstack用户委员会的统计,半数以上在用G版和H版,不过以中小企业为主。所以我觉得对于H版的稳定性和可靠性应该是没有问题。但还需要机构的评测和时间的检验。IT经理们完全可以乐观的看待openstack。

cdtits 发表于 2013-11-14 11:32 
挺好的,就是不知道H版好用不?稳定性、可靠性如何?

Rank: 7Rank: 7Rank: 7

帖子 2788 主题 19 精华 0 可用积分 19497 专家积分 0 在线时间 1893 小时 注册时间 2009-09-10 最后登录 2014-03-04 论坛徽章: 8
问答平台徽章
日期:2013-10-08 15:27:26丑牛
日期:2013-10-23 15:17:07十二周年纪念徽章
日期:2013-10-24 15:41:34巳蛇
日期:2013-11-08 06:25:12射手座
日期:2013-11-12 10:54:26狮子座
日期:2013-11-18 22:55:08辰龙
日期:2013-11-22 15:20:59双子座
日期:2013-12-17 16:44:37
4[报告][回复][引用]
 发表于 2013-11-14 17:34:06 |只看该作者
appreciate  your effort!!!
一个良好的算法能够对性能起到关键作用,因此性能改进的首要点是对算法的改进。在算法的时间复杂度排序上依次是:
O(1) -> O(lg n) -> O(n lg n) -> O(n^2) -> O(n^3) -> O(n^k) -> O(k^n) -> O(n!)


帖子 1 主题 0 精华 0 可用积分 2 专家积分 0 在线时间 5 小时 注册时间 2013-11-30 最后登录 2013-12-06 论坛徽章: 0
5[报告][回复][引用]
 发表于 2013-11-30 15:39:42 |只看该作者
您好,我按照您的方法单机安装部署了openstack H版本,安装一直进行的很顺利,但是最后实例创建之后 外网无法ping通实例,也无法ssh登录实例,我想问一下您在nova.conf里为什么用virbr0?而不是br100? 用virbr0之前是不是要做一些配置?
企业云咨询顾问


帖子 26 主题 3 精华 0 可用积分 60 专家积分 0 在线时间 54 小时 注册时间 2005-10-14 最后登录 2014-02-18 论坛徽章: 0
6[报告][回复][引用]
 发表于 2013-12-06 12:14:35 |只看该作者
sucre3034 发表于 2013-11-30 15:39 
您好,我按照您的方法单机安装部署了openstack H版本,安装一直进行的很顺利,但是最后实例创建之后 外网无 ...


抱歉哈,这个论坛太冷淡了,所以也不常来,希望你已经自己搜寻到了答案。

外网要ping通的话,那就需要相应的路由和网段设置。
首先实例的网段就需要选择一个空闲的局域网段,而不是192.168.x.x。其次在你的交换机(或路由器)上和你的host上有相应的路由设置。
最简单的方法就是将实例的IP分配在你的主机所在的网段,这样路由就简单了。

virbr0或者br100都只是虚拟桥的名字。我之所以用virbr0是因为安装libvirt和kvm的时候virbr0是默认安装的,所以就用了它。


帖子 18 主题 6 精华 0 可用积分 30 专家积分 0 在线时间 35 小时 注册时间 2012-04-22 最后登录 2014-02-14 论坛徽章: 0
7[报告][回复][引用]
 发表于 2013-12-10 11:32:47 |只看该作者
keystone 都安装不成功,能不能给个全的正确的文档
企业云咨询顾问


帖子 26 主题 3 精华 0 可用积分 60 专家积分 0 在线时间 54 小时 注册时间 2005-10-14 最后登录 2014-02-18 论坛徽章: 0
8[报告][回复][引用]
 发表于 2013-12-11 14:18:24 |只看该作者
本帖最后由 cusor 于 2013-12-11 14:18 编辑
wdvill 发表于 2013-12-10 11:32 
keystone 都安装不成功,能不能给个全的正确的文档


本文针对的是有linux基础的群体,如果仅仅是一个软件包安装不成功,建议多搜索一下。


帖子 18 主题 6 精华 0 可用积分 30 专家积分 0 在线时间 35 小时 注册时间 2012-04-22 最后登录 2014-02-14 论坛徽章: 0
9[报告][回复][引用]
 发表于 2013-12-12 16:12:27 |只看该作者
回复 8# cusor 


    没事了,好像是我的apt源不对,不是F版的源


帖子 7 主题 2 精华 0 可用积分 12 专家积分 0 在线时间 36 小时 注册时间 2013-07-11 最后登录 2014-02-13 论坛徽章: 0
10[报告][回复][引用]
 发表于 2014-01-24 17:06:42 |只看该作者
您好,参考着这边指引做到 nova添加服务时有一些不太明白:为什么要运行2遍 " keystone  service-create --name=nova --password= ..."呢?
另外就是第2 遍运行这命令时,最后增加的 %\(tenant_id\)s 是什么意思?  是否直接替换为 service tenant的ID?  请不吝赐教,谢谢










过年期间好久没来,谢谢你指出其中错误,原因是我拷贝命令时拷错了,第二条命令应该是创建接入点。

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
阅读(3004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册