Ubuntu 12.04 Openstack Essex 安装(单节点)
这个文档是描述Openstack Essex安装,把所有的服务安装在一台机器上。包括组件Nova,Keystone, Glance, Dashboard. 本文章来源:陈沙克 实际操作变化附上,共日后修改参考
2012年7月9号更新:加上nova-volume,对文档安装了2遍,基本相信不会有问题。(IP改成10.1.199.17)
2012年7月11日更新:修改nova.conf, 创建网络的时候,加入multi_host=T参数
2012年7月12日更新: nova和glance的配置文件,采用租户service,用户glance和nova来启动,这应该才是正确设置,这也是参考作者的原文
2012年7月20日更新:多节点的测试,基本完成。
2012年7月23日更新: 修改keystone脚本,去掉demo账号,减少大家的困惑. 验证了一遍多节点的安装, 没发现任何的问题. 参考onestack脚本,把一些修改变成sed修改。
2012年8月1日更新: 调整一下nova.conf, 多节点测试。
2012年8月7日更新:把nova.conf 和网卡设置,作为附件提供下载,包括控制节点和计算节点。配置文件
2012年9月4日更新:加上swift集成keystone和glance,修改了nova.conf 文件,由于文档现在支持目录,也调整一下文章标题的编号。
目前本文档不包括quantum。
机器名 | eth0 | eth1 | 说明 |
node17 | 10.1.199.17/24 | 没有IP bridge | 控制节点+计算节点+网络节点+volume+ntp 服务器, FlatDHCP和multi_host=T swift |
node18 | 10.1.199.18/24 | 没有IP Bridge | 计算节点+网络节点 |
文档改动
- Nova,Keystone,Glance,Horizon都采用mysql
- Keystone 的endpoint也导入到mysql里
Contents [hide]
基本介绍
Openstack的网络比较复杂,也很难理解。大家可以直接看http://www.mirantis.com/blog/openstack-networking-flatmanager-and-flatdhcpmanager/
上图的例子:10.0.0.0/24, 是fix IP的网络。这是multihost=true的设置。这个图是可以很好帮助大家理解Openstack的网络。
准备系统
安装ubuntu 12.04
最小化安装,只需要安装ssh server就可以。
设置网络
Eth0: 10.1.199.17
Eth1: 不需要设置IP
编辑 /etc/network/interfaces,需要注意一点是对于ubuntu 12.04,dns的设置,推荐在网卡设置。
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.1.199.17 hwaddress ether 00:25:90:67:ce:64 netmask 255.255.255.0 network 10.1.199.0 gateway 10.1.199.1 dns-search chenshake.com dns-nameservers 8.8.8.8 auto eth1 iface eth1 inet manual up ifconfig eth1 up
查看当前网卡情况
# mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok eth1: negotiated 1000baseT-FD flow-control, link ok
设置hostname (可选)
这是我的习惯,Openstack基本是不需要使用hostname。大家可以忽略。
# cat /etc/hostname node17 # cat /etc/hosts 127.0.0.1 localhost 10.1.199.17 node17.chenshake.com node17 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters # hostname node17 # hostname -f node17.chenshake.com
NTP服务器
对于单节点来说,NTP服务器,并不是必须的。如果是多台机器的环境。就需要设置所有的节点,都吧ntp服务指向相同的一个ntp服务器上。
apt-get -y install ntp
设置NTP
编辑 /etc/ntp.conf ,在 server ntp.ubuntu.com 下添加两行
server ntp.ubuntu.com server 127.127.1.0 fudge 127.127.1.0 stratum 10
或者直接运行下面命令
sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.comnserver 127.127.1.0nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf
重启NTP服务
service ntp restart
上面设置 server 127.127.1.0 的含义,大家可以参考文档
设置ISCSI (可选)
这是为Nova-volume服务使用的。不过目前nova-volume并不稳定,大家测试一下就可以。未来的Folsom版本,将会有新的组件来替代Nova-volume。
如果你不测试nova volume,可以不安装
apt-get -y install tgt
nova-compute节点,需要安装ISCSI客户端
apt-get install -y open-iscsi open-iscsi-utils
Nova-volume (可选)
如果你没有单独的分区,那么就不建议你测试,采用文件模拟的方式,基本是不可行。
我安装系统的时候,创建了一个nova-volume的分区,我先umount,再创建一个volume,名字为nova-volumes。nova的默认使用的volume的名字就是叫 nova-volumes. 如果你希望改变,就需要指定在nova.conf 文件里。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda8 728G 12G 680G 2% / udev 3.9G 4.0K 3.9G 1% /dev tmpfs 1.6G 260K 1.6G 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.9G 0 3.9G 0% /run/shm /dev/sda1 140M 33M 101M 25% /boot /dev/sda7 98G 1.6G 92G 2% /nova-volume /dev/sda6 98G 1.6G 92G 2% /swift # 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/^http://21nw.com/cms/2012/09/20/ubuntu-12-04-openstack-essex-%e5%ae%89%e8%a3%85%ef%bc%88%e5%8d%95%e8%8a%82%e7%82%b9%ef%bc%89/#/' /etc/fstab
Bridge
目前Openstack的网络是通过linux的bridge和iptables来实现的。
apt-get -y install bridge-utils
重启网络
/etc/init.d/networking restart
RabbitMQ和Memcache 等
RabbitMQ是用来做调度使用。Memcache是给Dashboard使用。
apt-get install -y rabbitmq-server memcached python-memcache kvm libvirt-bin
MYSQL
在Openstack组件里,Nova,Keystone, Glance, Horizon, 都需要用到数据库。所以我们需要创建相关的数据库和用户。
默认Dashboard (horizon)是使用sqlite,文档大部分都是没有修改。生产环境建议改成mysql。参考
应用数据库 | 数据库用户 | 密码 |
mysql | root | password |
nova | nova | password |
glance | glance | password |
keystone | keystone | password |
horizon | horizon | password |
安装
Openstack都是Python写的,所以你需要python-mysqldb,安装过程,会提示你输入mysql的root的密码。
apt-get install -y mysql-server python-mysqldb
配置
编辑/etc/mysql/my.cnf, 允许网络访问mysql
#bind-address = 127.0.0.1 bind-address = 0.0.0.0
或者直接运行下面命令
sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
重启mysql服务
service mysql restart
创建相关数据库
mysql -uroot -ppassword CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'password'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'password'; CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'IDENTIFIED BY 'password'; CREATE DATABASE horizon; GRANT ALL PRIVILEGES ON horizon.* TO 'horizon'@'%'IDENTIFIED BY 'password'; quit
Keystone
Keystone是Openstack的核心,所有的组件,都需要通过keystone进行认证和授权。
租户(tenant) | 用户 | 密码 | |
admin | admin | chenshake | |
service | nova | chenshake | |
glance | chenshake | ||
swift | chenshake | ||
安装
apt-get install -y keystone python-keystone python-mysqldb python-keystoneclient
配置
编辑/etc/keystone/keystone.conf,需要修改
- keystone的默认token是ADMIN,我这里修改chenshake
- 默认是采用sqlite连接,我们需要改成mysql
[DEFAULT] #bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 #admin_token = ADMIN admin_token = chenshake [sql] #connection = sqlite:////var/lib/keystone/keystone.db connection = mysql://keystone:password@10.1.199.17/keystone
或者运行下面命令
sed -i 's/ADMIN/chenshake/g' /etc/keystone/keystone.conf sed -i '/sqlite/s/^http://21nw.com/cms/2012/09/20/ubuntu-12-04-openstack-essex-%e5%ae%89%e8%a3%85%ef%bc%88%e5%8d%95%e8%8a%82%e7%82%b9%ef%bc%89/#/' /etc/keystone/keystone.conf sed -i '/sqlite/aconnection = mysql://keystone:password@10.1.199.17/keystone' /etc/keystone/keystone.conf
重启服务
service keystone restart
同步keystone数据库
keystone-manage db_sync
keystone的数据库,需要导入数据和endpoint,你可以一步一步用命令行导入,可以参考keystone白皮书
为了方便,你可以直接使用下面2个脚本来进行全部的设置
- keystone_data.sh导入用户信息
- endpoints.sh 设置endpoint
Keystone Data
wget http://www.chenshake.com/wp-content/uploads/2012/07/keystone_data.sh_.txt mv keystone_data.sh_.txt keystone_data.sh chmod +x keystone_data.sh
对于keystone_data.sh 脚本,默认的登陆dashboard的密码是:chenshake,Token是chenshake。你可以根据你的情况进行调整。
第一行是登陆dashboard的密码。
第三行是上面设置的Keystone的Token
ADMIN_PASSWORD=${ADMIN_PASSWORD:-chenshake} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} export SERVICE_TOKEN="chenshake" export SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} ENABLED_SERVICES="swift"
运行脚本
./keystone_data.sh
没任何输出,就表示正确,可以通过下面命令检查
echo $?
显示0,就表示脚本正确运行,千万不要重复运行脚本。
Endpoint 导入
wget http://www.chenshake.com/wp-content/uploads/2012/07/endpoints.sh_.txt mv endpoints.sh_.txt endpoints.sh chmod +x endpoints.sh
这个脚本运行,需要使用不少参数
./endpoints.sh -m 10.1.199.17 -u keystone -D keystone -p password -T chenshake -K 10.1.199.17 -R RegionOne -E "http://localhost:35357/v2.0" -S 10.1.199.17
-m mysql_hostname
-u mysql_username
-D mysql_database
-p mysql_password
-K keystone 服务器IP
-R keystone_region
-E keystone_endpoint_url
-S swift proxy节点IP
-T keystone_token
正常运行,会输出一堆内容。
设置环境变量
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=chenshake export OS_AUTH_URL=http://localhost:5000/v2.0/
检查当前的环境变量
root@node12:~# export | grep OS_ declare -x OS_AUTH_URL="http://localhost:5000/v2.0/" declare -x OS_PASSWORD="chenshake" declare -x OS_TENANT_NAME="admin" declare -x OS_USERNAME="admin"
测试
通过下面命令,可以检查keystone的设置是否正确。需要确保你的环境变量设置正确。另外需要注意的是环境变量的设置,如果你退出ssh后再登陆,需要重新设置。
root@node17:~# keystone user-list +----------------------------------+---------+----------------------+--------+ | id | enabled | email | name | +----------------------------------+---------+----------------------+--------+ | 1189d15892d24e00827e707bd2b7ab07 | True | admin@chenshake.com | admin | | cca4a4ed1e8842db99239dc98fb1617f | True | glance@chenshake.com | glance | | daccc34eacc7493989cd13df93e7f6bc | True | swift@chenshake.com | swift | | ee57b02c535d44f48943de13831da232 | True | nova@chenshake.com | nova | +----------------------------------+---------+----------------------+--------+
root@node17:~# keystone endpoint-list +----------------------------------+-----------+-----------------------------------------------+-----------------------------------------------+------------------------------------------+ | id | region | publicurl | internalurl | adminurl | +----------------------------------+-----------+-----------------------------------------------+-----------------------------------------------+------------------------------------------+ | 0b04e1baac1a4c9fb07490e0911192cf | RegionOne | http://10.1.199.17:5000/v2.0 | http://10.1.199.17:5000/v2.0 | http://10.1.199.17:35357/v2.0 | | 0d3315627d52419fa08095f9def5d7e4 | RegionOne | http://10.1.199.17:8776/v1/%(tenant_id)s | http://10.1.199.17:8776/v1/%(tenant_id)s | http://10.1.199.17:8776/v1/%(tenant_id)s | | 1c92290cba9f4a278b42dbdf2802096c | RegionOne | http://10.1.199.17:9292/v1 | http://10.1.199.17:9292/v1 | http://10.1.199.17:9292/v1 | | 56fe83ce20f341d99fc576770c275586 | RegionOne | http://10.1.199.17:8774/v2/%(tenant_id)s | http://10.1.199.17:8774/v2/%(tenant_id)s | http://10.1.199.17:8774/v2/%(tenant_id)s | | 5fb51aae00684e56818869918f86b564 | RegionOne | http://10.1.199.17:8080/v1/AUTH_%(tenant_id)s | http://10.1.199.17:8080/v1/AUTH_%(tenant_id)s | http://10.1.199.17:8080/v1 | | aaac7663872d493b85d9e583329be9ed | RegionOne | http://10.1.199.17:8773/services/Cloud | http://10.1.199.17:8773/services/Cloud | http://10.1.199.17:8773/services/Admin | +----------------------------------+-----------+-----------------------------------------------+-----------------------------------------------+------------------------------------------+
可以使用下面命令来查看结果
keystone tenant-list keystone user-list keystone role-list
Glance
Glance是提供镜像管理服务,可以理解成一个中间件,后面的存储可以是本地存储,也可以使用swift存储。
安装
apt-get install -y glance glance-api glance-client glance-common glance-registry python-glance
配置
编辑 /etc/glance/glance-api-paste.ini,/etc/glance/glance-registry-paste.ini,两个文件,都是修改文档最后3行
#admin_tenant_name = %SERVICE_TENANT_NAME% #admin_user = %SERVICE_USER% #admin_password = %SERVICE_PASSWORD% admin_tenant_name = service admin_user = glance admin_password = chenshake
也可以直接运行下面两条命令,实现修改
sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/glance/g; s/%SERVICE_PASSWORD%/chenshake/g; " /etc/glance/glance-api-paste.ini
sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/glance/g; s/%SERVICE_PASSWORD%/chenshake/g; " /etc/glance/glance-registry-paste.ini
编辑/etc/glance/glance-registry.conf,改成使用mysql验证
#sql_connection = sqlite:////var/lib/glance/glance.sqlite sql_connection = mysql://glance:password@10.1.199.17/glance
或者运行下面命令实现修改
sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"glance"':'"password"'@'"10.1.199.17"'/glance|g}' /etc/glance/glance-registry.conf
编辑/etc/glance/glance-registry.conf 和 /etc/glance/glance-api.conf,都在文件末尾添加两行
[paste_deploy] flavor = keystone
或者运行下面命令,完成修改
cat <<EOF >>/etc/glance/glance-api.conf [paste_deploy] flavor = keystone EOF cat <<EOF >>/etc/glance/glance-registry.conf [paste_deploy] flavor = keystone EOF
重启glance服务
service glance-api restart && service glance-registry restart
同步glance数据库
# glance-manage version_control 0 # glance-manage db_sync /usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47: SADeprecationWarning: useexisting is deprecated. Use extend_existing. useexisting=True)
看到下面的输出,表示正常的。
重启glance服务
service glance-api restart && service glance-registry restart
设置永久生效环境变量
为了简化日后的操作,这里设置永久的环境变量
修改 /etc/profile , 在末尾添加下面内容
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=chenshake export OS_AUTH_URL=http://localhost:5000/v2.0/
测试
glance index
没有输出,表示正常,因为目前还没有镜像。
下载Image
我们下载CirrOS的image作为测试使用,只有10M。如果是ubuntu官方的image,220M,并且ubuntu官方的image,都是需要使用密钥登陆。
CirrOS
下载image
wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img
上传image
glance add name=cirros-0.3.0-x86_64 is_public=true container_format=bare disk_format=qcow2 < /root/cirros-0.3.0-x86_64-disk.img
Cirros,是可以使用用户名和密码登陆,也可以使用密钥登陆
user:cirros
password:cubswin:)
Ubuntu官方image
下载image
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
上传image
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img
user:ubuntu
只能使用密钥登陆。
查看image
# glance index ID Name Disk Format Container Format Size ------------------------------------ ------------------------------ -------------------- -------------------- -------------- 5dcf84a0-b491-4710-8d7a-5531bce0dedc cirros-0.3.0-x86_64 qcow2 bare 9761280 f4f62d8a-3e5b-4136-8547-ce3cb79771aa Ubuntu 12.04 cloudimg amd64 qcow2 ovf 230817792
Nova
安装
apt-get install -y nova-api nova-cert nova-common nova-objectstore nova-scheduler nova-volume nova-consoleauth novnc python-nova python-novaclient nova-compute nova-compute-kvm nova-network
如果你希望控制节点,不安装计算服务,那么 nova-compute nova-compute-kvm nova-network 这3个包不安装就可以。
配置
编辑 /etc/nova/api-paste.ini , 修改末尾3行
#admin_tenant_name = %SERVICE_TENANT_NAME% #admin_user = %SERVICE_USER% #admin_password = %SERVICE_PASSWORD% admin_tenant_name = service admin_user = nova admin_password = chenshake
或者运行下面命令进行修改
sed -i -e " s/%SERVICE_TENANT_NAME%/service/g; s/%SERVICE_USER%/nova/g; s/%SERVICE_PASSWORD%/chenshake/g; " /etc/nova/api-paste.ini
编辑/etc/nova/nova.conf 文件,
下面是我的nova.conf 文件的配置。需要注意的一点是Essex版本的nova,配置文件不需要前面加上 — 。日后我会逐步调整nova.conf 文件,让他更加可读和方便大家理解。
[DEFAULT] ###### LOGS/STATE #verbose=True verbose=False ###### AUTHENTICATION auth_strategy=keystone ###### SCHEDULER #--compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler scheduler_driver=nova.scheduler.simple.SimpleScheduler ###### VOLUMES volume_group=nova-volumes volume_name_template=volume-%08x iscsi_helper=tgtadm ###### DATABASE sql_connection=mysql://nova:password@10.1.199.17/nova ###### COMPUTE libvirt_type=kvm #libvirt_type=qemu connection_type=libvirt instance_name_template=instance-%08x api_paste_config=/etc/nova/api-paste.ini allow_resize_to_same_host=True libvirt_use_virtio_for_bridges=true start_guests_on_host_boot=true resume_guests_state_on_host_boot=true ###### APIS osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions allow_admin_api=true s3_host=10.1.199.17 cc_host=10.1.199.17 ###### RABBITMQ rabbit_host=10.1.199.17 ###### GLANCE image_service=nova.image.glance.GlanceImageService glance_api_servers=10.1.199.17:9292 ###### NETWORK network_manager=nova.network.manager.FlatDHCPManager force_dhcp_release=True dhcpbridge_flagfile=/etc/nova/nova.conf dhcpbridge=/usr/bin/nova-dhcpbridge firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver public_interface=eth0 flat_interface=eth1 flat_network_bridge=br100 fixed_range=192.168.22.0/24 multi_host=true ###### NOVNC CONSOLE novnc_enabled=true novncproxy_base_url= http://10.1.199.17:6080/vnc_auto.html vncserver_proxyclient_address=10.1.199.17 vncserver_listen=10.1.199.17 ########Nova logdir=/var/log/nova state_path=/var/lib/nova lock_path=/var/lock/nova #####MISC use_deprecated_auth=false root_helper=sudo nova-rootwrap
设置目录权限
chown -R nova:nova /etc/nova
重启所有服务
由于服务数量比较多,创建一个脚本 restart.sh 来重启所有服务。
#!/bin/bash for a in rabbitmq-server libvirt-bin nova-network nova-cert nova-compute nova-api nova-objectstore nova-scheduler nova-volume novnc nova-consoleauth; do service "$a" stop; done for a in rabbitmq-server libvirt-bin nova-network nova-cert nova-compute nova-api nova-objectstore nova-scheduler nova-volume novnc nova-consoleauth; do service "$a" start; done
运行脚本
chmod +x restart.sh root@node17:~# ./restart.sh Stopping rabbitmq-server: rabbitmq-server. libvirt-bin stop/waiting nova-network stop/waiting nova-cert stop/waiting nova-compute stop/waiting nova-api stop/waiting nova-objectstore stop/waiting nova-scheduler stop/waiting nova-volume stop/waiting * Stopping OpenStack NoVNC proxy nova-novncproxy [ OK ] nova-consoleauth stop/waiting Starting rabbitmq-server: SUCCESS rabbitmq-server. libvirt-bin start/running, process 9683 nova-network start/running, process 9703 nova-cert start/running, process 9713 nova-compute start/running, process 9724 nova-api start/running, process 9734 nova-objectstore start/running, process 9744 nova-scheduler start/running, process 9759 nova-volume start/running, process 9775 * Starting OpenStack NoVNC proxy nova-novncproxy [ OK ] nova-consoleauth start/running, process 9839
同步数据库
nova-manage db sync
会有一堆的输出,不过应该是没问题的。nova数据库里已经有相应的表,就表示正确。
root@node17:~# nova-manage db sync 2012-07-19 18:43:34 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:639: SADeprecationWarning: The 'listeners' argument to Pool (and create_engine()) is deprecated. Use event.listen(). Pool.__init__(self, creator, **kw) 2012-07-19 18:43:34 WARNING nova.utils [-] /usr/lib/python2.7/dist-packages/sqlalchemy/pool.py:145: SADeprecationWarning: Pool.add_listener is deprecated. Use event.listen() self.add_listener(l) 2012-07-19 18:43:34 AUDIT nova.db.sqlalchemy.fix_dns_domains [-] Applying database fix for Essex dns_domains table.
创建Fix IP
FIX IP,就是分配给虚拟机的实际IP地址。这些数据都会写入数据库
nova-manage network create private --fixed_range_v4=192.168.22.0/24 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=256 --multi_host=T
创建floating IP
所谓Floating IP,是亚马逊EC2的定义。简单说,就是公网的IP。他其实是通过类似防火墙类似,做一个映射。实际上是通过iptables来实现映射.
nova-manage floating create --ip_range=10.1.199.32/27
重启nova服务
root@node17:~# ./restart.sh libvirt-bin stop/waiting nova-network stop/waiting nova-cert stop/waiting nova-compute stop/waiting nova-api stop/waiting nova-objectstore stop/waiting nova-scheduler stop/waiting nova-volume stop/waiting * Stopping OpenStack NoVNC proxy nova-novncproxy [ OK ] nova-consoleauth stop/waiting libvirt-bin start/running, process 23232 nova-network start/running, process 23252 nova-cert start/running, process 23262 nova-compute start/running, process 23273 nova-api start/running, process 23285 nova-objectstore start/running, process 23303 nova-scheduler start/running, process 23321 nova-volume start/running, process 23336 * Starting OpenStack NoVNC proxy nova-novncproxy [ OK ] nova-consoleauth start/running, process 23386
测试
可以尝试用下面命令去检查nova的状况
nova-manage service list
下面命令可以参考
nova list nova image-list nova floating-ip-create nova flavor-list 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
Dashobard
安装
apt-get install -y apache2 libapache2-mod-wsgi openstack-dashboard
配置(可选)
默认是采用sqlite来存储,你直接访问就可以。如果希望改成mysql存储,才需要做下面的配置。
编辑 /etc/openstack-dashboard/local_settings.py ,添加下面内容
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'horizon', 'USER': 'horizon', 'PASSWORD': 'password', 'HOST': '10.1.199.17', 'default-character-set': 'utf8' }, }
同步数据库
/usr/share/openstack-dashboard/manage.py syncdb Creating tables ... Creating table django_session Installing custom SQL ... Installing indexes ... No fixtures found.
重启nova api
restart nova-api
这个时候,就可以访问dashboard。
测试
登陆dashobard
http://10.1.199.17
user:admin
pass:chenshake
Swift
由于swift的文档比较长,所以单独一个文档
http://www.chenshake.com/swift-single-version/
附录
理解project和user关系
上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。
你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。
创建虚拟机
下面的流程,是复制我以前的文档,内容是没问题的。
1:设置安全组 Security group
安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。
2:创建密钥
为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。
这个时候,你如果有私钥,就可以直接登录。
下载私钥
点击create keypair,就会提示你下载私钥。私钥是pem后缀。
3:创建vm
创建vm的时候,你会选择keypair,安全组。
创建完成后,得到其实是一个内网IP
4:floating IP
给虚拟机分配一个 floating IP,可以理解成是公网的IP
关联vm
需要等待大概1分钟,才能看到关联后的结果
5:ssh 访问vm
这个看你的客户端是什么,linux,SecureCRT,putty,都有所不同。
对于ubuntu提供的image,ssh的用户名是:ubuntu,
SecureCRT 6.x版本
对于6.x版本,已经可以直接使用pem后缀的密钥
putty登录
对于putty,需要对密钥进行转换。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
到官方网站下载:PuTTYgen这个工具
PUTTYGEN,通过load,找到刚才下载的私钥,注意,要选择全部文件,才可以找到。通过转换,选择保存私钥就可以
存放到本地。
设置putty使用密钥
linux客户端ssh登录vm
如果你是linux服务器上,你可以上传密钥到服务器上
ssh -i key_for_openstack.pem ubuntu@192.168.22.34
就可以直接登录虚拟机。