尽管OpenStack官方提供的在线安装教程和分步向导能够为管理员提供很大帮助,但是依然存在很多不尽如人意的地方。因此在Ubuntu上安装OpenStack的过程当中,可以使用下面的操作文档来弥补官方教程的不足。 学习如何使用OpenStack的最简单方式就是在自己的电脑上进行实际部署。OpenStack官网提供了如何进行部署的相关教程,但是这个教程所包含的步骤过于繁杂,并且还有很多不准确的地方,因此用户很难顺利完成整个流程——比如,在整个安装流程当中,用户不可能简单地通过apt-get来获得所有的必要组件。
虽然OpenStack同时提供了图形化的分步向导,但是这种方式需要使用五台单独的虚拟机……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
尽管OpenStack官方提供的在线安装教程和分步向导能够为管理员提供很大帮助,但是依然存在很多不尽如人意的地方。因此在Ubuntu上安装OpenStack的过程当中,可以使用下面的操作文档来弥补官方教程的不足。
学习如何使用OpenStack的最简单方式就是在自己的电脑上进行实际部署。OpenStack官网提供了如何进行部署的相关教程,但是这个教程所包含的步骤过于繁杂,并且还有很多不准确的地方,因此用户很难顺利完成整个流程——比如,在整个安装流程当中,用户不可能简单地通过apt-get来获得所有的必要组件。虽然OpenStack同时提供了图形化的分步向导,但是这种方式需要使用五台单独的虚拟机。
在安装OpenStack的过程当中用户可能会遇到一系列的错误提示信息,尽管可以在Google当中逐个搜索这些问题的解决方案,但是这种方式会让用户在漫长的安装过程中感到更加沮丧,因此我推荐用户参考这个教程完成安装。为了彻底理解整个安装流程,我在Ubuntu上完成了两次OpenStack的完整安装过程,并且将所有获得的经验都体现在这个OpenStack安装教程当中。简单来说,这个教程的目的在于尽量简化和详尽说明OpenStack所提供的官方文档,最大程度上解决可能遇到的任何问题。
OpenStack安装前提
在开始之前,首先浏览一下OpenStack官网提供的文档“OpenStack Installation Guide for Ubuntu 14.04。”为了实现最佳效果,可以同时参考官网教程以及这个文档,以保证安装过程的顺利实施。作为参考,我使用的是OpenStack Kilo,也被称为version K。
为了保证系统正常运行,环境当中必须至少包含一个计算节点和一个控制器节点。虽然我们没有部署对象存储、块存储或者网络节点,但是这些都是在生产环境当中所必须的。
如果在安装过程当中卡在某一环节无法完成,那么可以暂时跳过这一环节,因为这些步骤除了第一步之外,并不需要按照时间顺序完成。在后面的安装过程当中可能会找到之前问题的解决方案。
总体来说,部署OpenStack环境包含如下基本步骤:
- 通过安装数据库、配置主机文件来创建基本环境;
- 安装Identity Service(身份验证服务);
- 安装Image Service(镜像服务);
- 安装Compute Service(计算服务);
- 安装Dashboard以便能够登陆lb界面。
搭建基础环境
在尝试搭建基础环境之前,必须首先创建一台Ubuntu 14.04 Server虚拟机。可以使用任何种类的hypervisor完成这项任务。我使用的是VMware vCloud Director。至于操作系统版本,尽管我倾向于使用Ubuntu Server,但是这个文档应该同样适用于Ubuntu Desktop。Ubuntu Server和Ubuntu Desktop的主要区别在于Server版没有图形界面。
注意需要使用root权限执行如下命令。如果用户使用的是Ubuntu Desktop而不是Server版,那么需要首先使用不同于root的普通账户登录,之后更改root账户密码,这样才能够运行后续的用户命令。在搭建环境的过程当中,还应该确保制作足够的快照,这样就能够在某些部分出现问题的时候及时进行回滚操作。
用户可以使用OpenStack教程当中提供的密码,直接复制和粘结这些密码可以尽量减少可能产生的错误。此外,SQL数据库当中不会使用root密码。除非文档特殊说明,否则不要运行apt-get命令,因为根据OpenStack.org的提示,不允许对OpenStack进行自动更新。
在创建Ubuntu Server虚拟机之后,需要向“/etc/hosts”文件当中添加controller和compute1的IP地址。为了保证这两个组件都在同一台机器上,可以使用如下命令:
127.0.0.1 controller compute1
之后,运行下面的命令:
apt-get install ubuntu-cloud-keyring
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu"
"trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list
apt-get update && apt-get dist-upgrade
跳过安装NTP(网络时间协议)服务器这一步。当前环境当中只有一台机器,因此不需要同步时间。现在运行下面的命令:
apt-get install mariadb-server python-mysqldb
需要注意的是我们使用的是MariaDB,而不是MySQL。现在我们需要按照文档说明来编辑“/etc/mysql/my.cnf”配置文件。
完成这一步之后,执行下面的命令:
service mysql restart
mysql_secure_installation
之后使用如下命令安装RabbitMQ服务器:
apt-get install rabbitmq-server
rabbitmqctl change_password guest RABBIT_PASS
身份验证服务
为了安装Identity Service,首先创建Keystone数据库。用户通过创建token来实现Keystone操作,之后用户才能够创建用户ID和密码,通过执行如下命令来完成这项任务:
openssl rand -hex 10
运行这个命令之后我得到了一个token:cde3aa151a5a7e048da9。用户可以使用这个token或者制作自己的token。之后,运行如下命令:
apt-get install keystone python-keystoneclient
参照OpenStack提供的文档,使用 vi /etc/keystone/keystone.conf来编辑配置文件。
需要注意的是OpenStack文档当中的某些命令会导致错误,因为其打开了一个新的shell。可以通过运行如下命令来避免产生这种错误,注意前面不要添加su –s:
/bin/sh -c "keystone-manage db_sync" keystone
之后执行如下命令重启keystone服务:
service keystone restart
现在用户必须导出这两种环境变量。这样就能够临时允许用户使用token来通过Keystone的认证,而不需要使用用户账户。
export OS_SERVICE_TOKEN=cde3aa151a5a7e048da9
OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
创建tenant、用户和角色
这时候我遇到了一个error 500的错误,是因为我忘记了重启Keystone服务。为了创建Keystone、用户和角色,需要首先执行下面的命令:
keystone tenant-create --name admin --description "Admin Tenant"
keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS
继续参照OpenStack提供的文档,执行如下命令:
keystone tenant-create --name service --description "Service Tenant"
创建service entity(服务实体)和API endpoint
根据OpenStack提供的文档说明,下一步需要进行验证操作,也就是尝试发现任何错误。
验证操作
根据OpenStack所提供的文档,如果想要验证上面的操作是否正确需要执行下面的命令:
unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
为了保证用户名和密码能够顺利通过验证过程,可以使用下面的命令:
keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS
> --os-auth-url http://controller:35357/v2.0 token-get
上面的命令模拟了Identity Service的验证过程,会为用户分配一个登陆token。
在我执行OpenStack所提供命令的过程当中,收到了下面的错误提示信息:
The request you have made requires authentication. (HTTP 401) (Request-ID: req-0550f2c3-9077-470b-95d8-ce4ff498ff8f)
Error 401表明用户没有通过验证,意味着我忘记使用下面的命令创建管理员角色了。
keystone role-create --name admin
用户还可以使用下面这条命令检查用户具有哪些角色:
keystone user-role-list --user admin --tenant admin
可以使用如下命令重设token环境变量:
export OS_SERVICE_TOKEN=cde3aa151a5a7e048da9
export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
为了修复这个问题,我为admin用户添加了admin角色:
keystone user-role-add --user admin --tenant admin --role admin
还可以使用其他Keystone命令——比如list——在当前环境当中进行debug。这对于将要安装的下一个命令集同样适用:
创建OpenStack客户端环境脚本
如果不想使用token运行这些命令或者不想将它们放在命令行当中执行,那么可以配置环境变量。使用下面的命令创建两个脚本文件。
vi admin-openrc.sh
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v2.0
vi demo-openrc.sh
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v2.0
之后执行如下命令:
source admin-openrc.sh
添加image service(镜像服务)
参考这个文档安装Glance,之后使用下面的命令来创建数据库:
keystone user-create --name glance --pass GLANCE_PASS
我收到了error 401错误提示信息,但是可以使用如下命令进行修复:
export OS_SERVICE_TOKEN=cde3aa151a5a7e048da9
export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0
如果你同时使用shell和endpoint进行认证,那么将会收到下面的提示:“警告,可以使用token和终端来绕开认证(认证凭证已经被忽略。)”
继续输入如下所示的一系列命令:
keystone service-create --name glance --type image
--description "OpenStack Image Service"
keystone endpoint-create
--service-id $(keystone service-list | awk '/ image / {print $2}')
--publicurl http://controller:9292
--internalurl http://controller:9292
--adminurl http://controller:9292
--region regionOne
apt-get install glance python-glanceclient
这时当你参照OpenStack教程编辑“/etc/glance/glance-api.conf”文件的时候,还需要rem out:
#sqlite_db = /var/lib/glance/glance.sqlite
使用下面这些命令来替换上面这条命令:
[keystone_authtoken]
#identity_uri = http://127.0.0.1:35357
#admin_tenant_name = %SERVICE_TENANT_NAME%
#admin_user = %SERVICE_USER%
#admin_password = %SERVICE_PASSWORD%
#revocation_cache_time = 10
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
完成上面的操作之后,参考OpenStack教程继续进行编辑:
vi /etc/glance/glance-registry.conf
之后输入下面的命令,省略sh –c:
/bin/sh -c "glance-manage db_sync" glance
这时,我收到了如下的错误提示信息:
CRITICAL glance [-] DBConnectionError: (OperationalError) (2003, "Can't connect to MySQL server on 'controller' (111)") None None
这条信息表明,我没有输入正确格式的IP地址,而且没有执行如下命令:
flavor = keystone in [paste_deploy]
验证操作
根据验证操作的说明,用户必须首先下载一个Linux镜像,之后使用如下命令将其上传到image service当中:
glance image-create --name "cirros-0.3.3-x86_64" --file /tmp/images/cirros-0.3.3-x86_64-disk.img
--disk-format qcow2 --container-format bare --is-public True --progress
执行这条命令之后我收到了如下错误信息:
error 403
<h1>403 Forbidden</h1>
Access was denied to this resource.<br /><br />
To debug that, I ran:
之后我运行下面这条命令进行debug:
glance image-list
但是程序又返回一个error 500错误提示,因此我重启了glance服务:
service glance-registry restart
service glance-api restart
添加计算服务和部署控制器节点
我发现OpenStack教程当中的下一部分会让人感到十分困惑,因为通过apt-get获取的配置文件当中的全部内容都丢失了,为了解决这个问题,可以使用下面的内容进行替换:
[DEFAULT]
verbose = True
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
force_dhcp_release=True
libvirt_use_virtio_for_bridges=True
verbose=True
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
my_ip = 127.0.0.1
vncserver_listen = 127.0.0.1
vncserver_proxyclient_address = 127.0.0.1
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS
auth_strategy = keystone
[database]
connection = mysql://nova:NOVA_DBPASS@controller/nova
[keystone_authtoken]
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS
[glance]
host = controller
配置计算节点
到这个部分为止,用户已经控制器节点这个部分编辑过“/etc/nova/nova.conf"”文件了。现在唯一需要做的就是将下面这两条命令添加到“DEFAULT”区域当中:
vnc_enabled = True
novncproxy_base_url = http://controller:6080/vnc_auto.html
之前我们已经运行过下面这条命令:
/bin/sh -c "nova-manage db sync" nova
但是现在还是应该再运行一次,虽然只是显示如下信息,没有什么实际作用:
No handlers could be found for logger "oslo_config.cfg"
我们可以跳过Neutron Networking这一部分,因为我们只部署一台机器,不需要使用虚拟接口。
添加dashboard
参考OpenStack教程来安装Apache,并且在其中配置OpenStack dashboard;这样你就能够访问OpenStack命令行界面工具了。当你重启Apache之后应该会出现如下信息:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
出现这种信息十分正常,可以直接忽略。
如果用户使用的是Ubuntu Server,那么可以安装Unity Ubuntu desktop来登陆dashboard。如果用户使用的是Ubuntu Desktop,那么虚拟机当中默认已经安装了Unity Ubuntu。通过将Ubuntu虚拟机作为桥接网络,用户还可以从另外一台虚拟机登陆Apache。
可以使用如下命令安装Unity Ubuntu:
sudo apt-get install --no-install-recommends ubuntu-desktop
上面的操作并不会安装Firefox或者任何浏览器,所以用户需要在Ubuntu命令行当中添加一个用户,之后使用visudo为其赋予root访问权限,允许用户运行程序。
图A. 登陆dashborad查看hypervisor和硬件使用情况
之后用户就可以使用和“admin-openrc.sh”文件当中相同的用户ID和密码登陆dashboard了。
相关推荐
-
VMware-OpenStack合作伙伴关系不断演变
VMware最近对OpenStack标准集的支持转变为双管齐下的方法,VMware-OpenStack集成主要 […]
-
OpenStack及Openshift旨在简化VM和容器管理
与机相比,IT人员可更快地启动和关闭容器,而且,容器需要更少开销,基于此,目前这种技术已经有几种实际用例。然而 […]
-
VMware:Kubernetes、vRealize Automation令VIO4.0增值
VMware Integrated OpenStack 4.0增加了一些新功能用于改善性能、网络以及可扩展性,但用户需要付费才能使用这些新增加的功能。
-
OpenStack项目:哪一个VMware贡献最多?
曾经有一段时间,VMware只专注于专有的软件上。随着IT世界的扩展,VMware的视野也越来越大。除了云服务、网络虚拟化和软件定义存储之外,VMware已经成为许多开源项目,包括OpenStack的重要贡献者。