这是参考Redhat的Essex文档来写的,基本是参考原文,epel的文档,为了方便会做一些调整。为了方便,我都是用root的身份执行下面的命令。
这次安装openstack没有成功,不过有点收获,至少keystone的全部内容都是手工输入,并不是想象中那么恐怖。下一个版本,应该可以用的上。
2012年8月16日:epel的源目前好像有bug,compute服务无法启动,报/var/log/nova/compute.log:2012-08-16 02:41:05 CRITICAL nova [-] internal error Cannot find suitable emulator for x86_64。还没找到解决的办法。
2012年8月24日:发现包的bug已经修复,nova log已经不会有错误。 经过反复验证,原来是我的源设置的问题导致。记住一定要加上 centos update 源,否则就会出现nova compute服务无法启动。已经验证了装完后,各种服务正常,vnc,网络。
一:介绍
硬件只要求机器支持VT,单块网卡就可以.
1:设置源
我们需要使用epel的源,同时还需要启用epel-test,很多更新目前还在test上。
2:开始
yum install openstack-utils dnsmasq-utils
dnsmasq-utils,是用来给虚拟机的dns和dhcp使用。
openstack-utils 这是redhat专门出的配置openstack的工具,包括
- openstack-config 用来配置各种配置文件,这是redhat专门针对openstack开发的工具。
- openstack-db 初始化数据库
- openstack-status 显示服务状态
二:Keystone
1:安装和初始化
安装keystone软件包
yum install openstack-keystone
初始化数据库,会提示安装mysql数据库并且设置root的密码
openstack-db --init --service keystone
设置环境变量
export SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
创建token,token随机生成
export SERVICE_TOKEN=$(openssl rand -hex 10) echo $SERVICE_TOKEN > /tmp/ks_admin_token
把token添加到配置文件里
openstack-config --set /etc/keystone/keystone.conf \ DEFAULT admin_token $SERVICE_TOKEN
设置keystone服务
service openstack-keystone start chkconfig openstack-keystone on
检查是否有错误信息
# ps -ef | grep -i keystone-all keystone 5453 1 0 05:48 ? 00:00:00 /usr/bin/python /usr/bin/keystone-all --config-file /etc/keystone/keystone.conf root 5462 5131 0 05:49 pts/0 00:00:00 grep -i keystone-all # grep ERROR /var/log/keystone/keystone.log
原理图
2:创建管理员(admin)用户
用户(user) | 密码 | 租户(tenant) | 角色(roles) |
admin | secret | admin | admin |
现在需要给用户(admin)加入到租户(admin),并且给这个用户(admin)授予管理员的角色(admin)
keystone user-create --name admin --pass secret +----------+-----------------------------------+ | Property | Value | +----------+-----------------------------------+ | email | None | | enabled | True | | id | 94d659c3c9534095aba5f8475c87091a | | name | admin | | password | ... | | tenantId | None | +----------+-----------------------------------+ keystone role-create --name admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 78035c5d3cd94e62812d6d37551ecd6a | | name | admin | +----------+----------------------------------+ keystone tenant-create --name admin +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | None | | enabled | True | | id | 6f8e3e36c4194b86b9a9b55d4b722af3 | | name | admin | +-------------+----------------------------------+
授权需要使用id来进行. 就是上面的3个id,user id, roles id, tenant id.
keystone user-role-add --user 94d659c3c9534095aba5f8475c87091a \ --role 78035c5d3cd94e62812d6d37551ecd6a \ --tenant_id 6f8e3e36c4194b86b9a9b55d4b722af3
设置环境变量
这是admin用户的环境变量,创建一个 keystonerc_admin 文件,直接运行下面命令就可以
cat >/root/keystonerc_admin <<EOF
export OS_USERNAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=secret
export OS_AUTH_URL=http://127.0.0.1:35357/v2.0/
EOF
运行
source keystonerc_admin cat keystonerc_admin >> .bashrc
查看结果
keystone user-list +----------------------------------+---------+-------+-------+ | id | enabled | email | name | +----------------------------------+---------+-------+-------+ | 42f2e4b76cb04742bba86302175caeb3 | True | None | admin | +----------------------------------+---------+-------+-------+
设置endpoint
keystone service-create --name=keystone --type=identity \
--description="Keystone Identity Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Keystone Identity Service |
| id | 0ed581adcd934b49bcb19c7afb068e25 |
| name | keystone |
| type | identity |
+-------------+----------------------------------+
使用上面的ID,创建endpoint
keystone endpoint-create --region RegionOne \ --service_id 0ed581adcd934b49bcb19c7afb068e25 \ --publicurl 'http://127.0.0.1:5000/v2.0' \ --adminurl 'http://127.0.0.1:35357/v2.0' \ --internalurl 'http://127.0.0.1:5000/v2.0' +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://127.0.0.1:35357/v2.0 | | id | adb412f89bcb4ab381b4e9ee50874605 | | internalurl | http://127.0.0.1:5000/v2.0 | | publicurl | http://127.0.0.1:5000/v2.0 | | region | RegionOne | | service_id | 0ed581adcd934b49bcb19c7afb068e25 | +-------------+----------------------------------+
创建一个普通用户
user | 密码 | 角色 | 租户 |
chenshake | secret | user | rhsummit |
keystone user-create --name chenshake --pass secret +----------+-----------------------------------+ | Property | Value | +----------+-----------------------------------+ | email | None | | enabled | True | | id | 1d59c0bfef9b4ea9ab63e2a058e68ae0 | | name | chenshake | | password | ... | | tenantId | None | +----------+-----------------------------------+ keystone role-create --name user +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 8261ac4eabcc4da4b01610dbad6c038a | | name | user | +----------+----------------------------------+ keystone tenant-create --name rhsummit +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | None | | enabled | True | | id | 05816b0106994f95a83b913d4ff995eb | | name | rhsummit | +-------------+----------------------------------+
授权,这个和admin是一样的。
keystone user-role-add --user 1d59c0bfef9b4ea9ab63e2a058e68ae0 \ --role 8261ac4eabcc4da4b01610dbad6c038a \ --tenant_id 05816b0106994f95a83b913d4ff995eb
三:Glance
1:安装和初始化
安装glance
yum install openstack-glance
初始化数据库
openstack-db --init --service glance
配置
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone openstack-config --set /etc/glance/glance-api-paste.ini \ filter:authtoken admin_token $(cat /tmp/ks_admin_token) openstack-config --set /etc/glance/glance-registry.conf \ paste_deploy flavor keystone openstack-config --set /etc/glance/glance-registry-paste.ini \ filter:authtoken admin_token $(cat /tmp/ks_admin_token)
服务
service openstack-glance-registry start service openstack-glance-api start chkconfig openstack-glance-registry on chkconfig openstack-glance-api on
服务和endpoint
keystone service-create --name=glance --type=image --description="Glance Image Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Glance Image Service | | id | 1447f490e9784aa8890f9e39ddaa8d44 | | name | glance | | type | image | +-------------+----------------------------------+ keystone endpoint-create --service_id 1447f490e9784aa8890f9e39ddaa8d44 \ --publicurl http://127.0.0.1:9292/v1 \ --adminurl http://127.0.0.1:9292/v1 \ --internalurl http://127.0.0.1:9292/v1 +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://127.0.0.1:9292/v1 | | id | 9693e1af560843f68e9e91f2b3664a19 | | internalurl | http://127.0.0.1:9292/v1 | | publicurl | http://127.0.0.1:9292/v1 | | region | regionOne | | service_id | 1447f490e9784aa8890f9e39ddaa8d44 | +-------------+----------------------------------+
原理图
2:上传image
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=bare \ disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img
可以通过glance index 查看镜像的id,可以查看镜像的详细信息。
# glance show 00ff17db-915d-4c6b-8fd6-149a43529aeb
URI: http://127.0.0.1:9292/v1/images/00ff17db-915d-4c6b-8fd6-149a43529aeb
Id: 00ff17db-915d-4c6b-8fd6-149a43529aeb
Public: Yes
Protected: No
Name: Ubuntu 12.04 cloudimg amd64
Status: active
Size: 231997440
Disk format: qcow2
Container format: bare
Minimum Ram Required (MB): 0
Minimum Disk Required (GB): 0
Owner: 96e7b9d4e7ee4285814a47c4b330c2f6
四:Nova
1:安装和初始化
安装
yum install openstack-nova
数据库
openstack-db --init --service nova
配置
openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone openstack-config --set /etc/nova/api-paste.ini \ filter:authtoken admin_token $(cat /tmp/ks_admin_token)
设置网络
openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth0 openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth0
2:qpid
yum install qpid-cpp-server
sed -i -e 's/auth=.*/auth=no/g' /etc/qpidd.conf
service qpidd start
chkconfig qpidd on
3:启动服务
service libvirtd start chkconfig libvirtd on
4:Nova volume
启动iscsi服务
service tgtd start chkconfig tgtd on
umount /dev/sda7 pvcreate /dev/sda7 Physical volume "/dev/sda7" successfully created vgcreate nova-volumes /dev/sda7 Volume group "nova-volumes" successfully created
编辑 /etc/fstab , 注释掉nova-volumes开机加载,否则会导致你开机无法启动。我是安装过程,直接创建了一个nova-volume的分区
sed -i '/nova-volume/s/^/#/' /etc/fstab
5:重启相关服务
for srv in api cert network objectstore scheduler volume compute ; do \ sudo service openstack-nova-$srv start ; \ done for srv in api cert network objectstore scheduler volume compute ; do \ sudo chkconfig openstack-nova-$srv on ; \ done
6:排错
检查是否有错误
grep -i ERROR /var/log/nova/*
看log
tail -f /var/log/nova/*.log
7:endpoint
compute服务的endpoint
keystone service-create --name=nova --type=compute --description="Nova Compute Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Compute Service | | id | 9f004f52a97e469b9983d5adefe9f6d0 | | name | nova | | type | compute | +-------------+----------------------------------+ keystone endpoint-create --service_id 9f004f52a97e469b9983d5adefe9f6d0 \ --publicurl "http://127.0.0.1:8774/v1.1/\$(tenant_id)s" \ --adminurl "http://127.0.0.1:8774/v1.1/\$(tenant_id)s" \ --internalurl "http://127.0.0.1:8774/v1.1/\$(tenant_id)s" +-------------+------------------------------------------+ | Property | Value | +-------------+------------------------------------------+ | adminurl | http://127.0.0.1:8774/v1.1/$(tenant_id)s | | id | 247a56ec4fa94afca231aa0c304c7049 | | internalurl | http://127.0.0.1:8774/v1.1/$(tenant_id)s | | publicurl | http://127.0.0.1:8774/v1.1/$(tenant_id)s | | region | regionOne | | service_id | 9f004f52a97e469b9983d5adefe9f6d0 | +-------------+------------------------------------------+
nova volume 的endpoint
keystone service-create --name=volume --type=volume --description="Nova Volume Service" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Nova Volume Service | | id | 9347a8dc271c44da9f9991b5c70a6361 | | name | volume | | type | volume | +-------------+----------------------------------+ keystone endpoint-create --service_id 9347a8dc271c44da9f9991b5c70a6361 \ --publicurl 'http://127.0.0.1:8776/v1/%(tenant_id)s' \ --internalurl 'http://127.0.0.1:8776/v1/%(tenant_id)s' \ --adminurl 'http://127.0.0.1:8776/v1/%(tenant_id)s' +-------------+----------------------------------------+ | Property | Value | +-------------+----------------------------------------+ | adminurl | http://127.0.0.1:8776/v1/%(tenant_id)s | | id | b2a128758a274b09bb09337b99faa42a | | internalurl | http://127.0.0.1:8776/v1/%(tenant_id)s | | publicurl | http://127.0.0.1:8776/v1/%(tenant_id)s | | region | regionOne | | service_id | 9347a8dc271c44da9f9991b5c70a6361 | +-------------+----------------------------------------+
创建网络
nova-manage network create demonet 10.0.0.0/24 1 256 --bridge=demonetbr0
创建网络,会报一堆东西,不过不影响使用
密钥
nova keypair-add oskey > oskey.priv chmod 600 oskey.priv
设置安全组
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 nova secgroup-list nova secgroup-list-rules default
创建floating IP 网络
nova-manage floating create 10.1.199.224/28
五:Horizon (Dashboard)
yum install openstack-dashboard service httpd start chkconfig httpd on
iptables -I INPUT -p tcp --dport 80 -j ACCEPT /etc/init.d/iptables save
设置vnc
安装vnc相关的包
yum install openstack-nova-novncproxy
在 /etc/nova/nova.conf 文件里添加
novncproxy_host = 0.0.0.0 novncproxy_port = 6080 novncproxy_base_url=http://10.1.199.6:6080/vnc_auto.html vnc_enabled=true vncserver_listen=127.0.0.1 vncserver_proxyclient_address=127.0.0.1
打开防火墙6080端口
iptables -I INPUT -p tcp --dport 6080 -j ACCEPT /etc/init.d/iptables save
重启相关服务
service openstack-nova-novncproxy start service openstack-nova-consoleauth start chkconfig openstack-nova-novncproxy on chkconfig openstack-nova-consoleauth on service openstack-nova-compute restart
这个时候,你可以登陆dashbard,创建虚拟机,应该是一切正常。需要注意的是vnc,需要火狐下才能正常使用。
你就可以通过
- http://10.1.199.6/dashboard 访问
- user:admin
- pass:secret
我在增加计算节点时碰到了这个错:CRITICAL nova [-] internal error Cannot find suitable emulator for x86_64 ,nova-compute怎么也起不来,源的配置和控制节点是完全一样的。
问题最终解决,需要加一个软链:
ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-system-x86_64
谢谢分享。
这就是被RH系打包坑的。。好怪异的路径
您好,我安装您的步骤做完后,在登陆web的时候,提示验证失败,但是我查看数据库中,用户名是存在的,密码加过密,我多次尝试新建用户后,依然无法登陆,请问应该如何排查错误?
非常感谢!
cat >/root/novarc <
这个是我的配置文档:
# more keystonerc_admin
export OS_USERNAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=secret
export OS_AUTH_URL=http://127.0.0.1:35357/v2.0/
# . ./keystonerc_admin
nova endpoints
+————-+———————————————————–+
| volume | Value |
+————-+———————————————————–+
| adminURL | http://127.0.0.1:8776/v1/53b447fa3f8146ca9a656b6d2114c404 |
| internalURL | http://127.0.0.1:8776/v1/53b447fa3f8146ca9a656b6d2114c404 |
| publicURL | http://127.0.0.1:8776/v1/53b447fa3f8146ca9a656b6d2114c404 |
| region | regionOne |
+————-+———————————————————–+
+————-+————————–+
| glance | Value |
+————-+————————–+
| adminURL | http://127.0.0.1:9292/v1 |
| internalURL | http://127.0.0.1:9292/v1 |
| publicURL | http://127.0.0.1:9292/v1 |
| region | regionOne |
+————-+————————–+
+————-+————————————————————-+
| nova | Value |
+————-+————————————————————-+
| adminURL | http://127.0.0.1:8774/v1.1/53b447fa3f8146ca9a656b6d2114c404 |
| internalURL | http://127.0.0.1:8774/v1.1/53b447fa3f8146ca9a656b6d2114c404 |
| publicURL | http://127.0.0.1:8774/v1.1/53b447fa3f8146ca9a656b6d2114c404 |
| region | regionOne |
| serviceName | nova |
+————-+————————————————————-+
+————-+—————————–+
| keystone | Value |
+————-+—————————–+
| adminURL | http://127.0.0.1:35357/v2.0 |
| internalURL | http://127.0.0.1:5000/v2.0 |
| publicURL | http://127.0.0.1:5000/v2.0 |
| region | RegionOne |
+————-+—————————–+
在shell里面可以看到这些信息,我用admin:secret 为什么web无法登陆呢
你完全按照我的文档来操作,就不会有这样的问题。你的keystone导入的数据好像就有问题。
我也碰到了同样的问题,很奇怪啊,安装过程没有报错,就是照这个步骤一步步操作的。
您好,我在一台Dell Poweredge 1950服务器上安装了openstack的keystone/glance/dashboard,然后想在另一台机器上访问。
但是登陆界面始终显示:Error: An error occurred authenticating. Please try again later.
不知是不是dashboard访问不到keystone的缘故,但感觉配置都没问题。同样的配置在我的笔记本上能成功登陆。
这个应该还是你配置的原因吧。自己检查一下。对着最新的文档操作一下。用命令去修改配置文件,这样可以避免错误。
沙克,你好!
我按照你的这篇博文进行操作,前面进行的似乎都很正常,但 http://10.1.199.6/dashboard 无法访问。请问还需要注意哪些地方吗?
vmware workstation 9.0, redhat 6.3 x86_64。网络连接用的是NAT,IP是 10.1.199.128。iptables已关闭,httpd已正常启动。重启虚拟机无效
我改天好好测试一下centos6.3的openstack,有一段时间没搞了。文档也难免有错误的地方。
陈老师,我按照Fedora的Getting_started_with_OpenStack_EPEL方法,在RHEL先装了单节点,一切正常,但是在添加了一个计算节点后,启动实例状态一直是BUILD,task_state一直是scheduling。
去到那台计算节点,查看了/var/log/nova/compute.log,有warning记录报的是:
Found 9 in the database and 0 on the hypervisor.
然后就是像这样依次9个实例分别有一条信息
WARNING nova.compute.manager [-] [instance: bc21f703-48a8-402a-98f1-9c826464fd07] Instance found in database but not known by hypervisor. Setting power state to NOSTATE,
然后其他日志包括控制节点的compute.log, scheduler.log, api.log 都看不出有什么异常,我有几个思路:qpid的问题,nova-scheuler的问题,计算节点与控制节点上的kvm交互的问题。
我想请问下陈老师,我的这几个思路大概正确么?或者您认为应该是哪里有问题呢?
另外还想请教,计算节点上只需要安装nova-compute等,而不需要安装kvm么?如果不需要,那么存在在计算节点上的实例时运行在控制节点的kvm上?
应该是你创建了9个示例,但是进行到使用hypervisor管理创建虚拟机时失败,此时数据库中已经记录创建。这样就导致了数据不一致的情况。
没这方面的经验,你大概可以看看:nova api,nova-network服务是否正常。你看看 nova-manage service list,看看各个服务是否正常。
多谢,这些都正常,几个节点都正常,那我再找找看。
请问,你找到这个问题了吗,我现在也遇到和你一样的问题
您好!
安装您的步骤做下来,我启动的实例始终不能上网,也ping不通和实体机在同一个网段的IP,但分配floating_ip,后,外面的是可以ping通实例,外面的IP能远程连接和putty上实例,我想问下,陈老师,有没有遇到这个问题?
陈老师,我的openstack-nova已经安装了,安装时没有centos源,出现这样错误internal error Cannot find suitable emulator for x86_64,现在我将centos源添上,需要卸载openstack-nova然后重装一遍吗