转自:http://bbs.chinaunix.net/thread-3729514-1-1.html
这是我参考老外写的英文版本,整理一个中文的版本。也希望随着我的理解深入,不断完善。原文我下面的步骤,也就全部参考原文。 3月27日更新:基本完成文档内容 4月5日更新:重新安装第三次,修改了文档一下小错误。 4月6日更新:完成的nova volume的内容。所有英文文档的内容,已经全部覆盖 4月16号:对文档进行测试,发现当前的glance包有问题,这会导致大家无法使用glance。当你重启glance-registry,glance日志会报错。导致glance index会报错误。已经提交bug :https://bugs.launchpad.net/ubuntu/+source/glance/+bug/982787 这个不是bug,官方为了日后升级,改成手工创建数据库的表。改变了创建数据库的方式。修复方法看glance 部分。 4月17日:修改了dashborad的配置,以前有错误配置。导致虚拟机管理下拉菜单无法工作。 4月23日:修改vnc。不安装vncproxy,安装nova-consoleauth novnc python-novnc 三个包,并且调整nova.conf vnc的设置。等待明天回去验证。 4月24日:解决vnc的问题,重新安装了一遍。vnc已经正常工作。唯一遗憾就是Dashboard还是缺少js,需要手工copy一下。就只能等这个包更新才行。 硬件要求很简单,双网卡的机器就可以。服务器可以上网。本文档是全部组件安装在一台机器上:nova,glance,keystone,dashboard。不包括swift。 下面的文档,基本是照抄原文档,不过这是经过我验证过。后续我会附上图。 为了简单和减少失误,你最好全部参考我的文档的设置,等你装成功后,再去变更相关的设置,包括账号的密码。 目前Essex版本已经发布正式版本。源里的包,也基本更新到正式版本。 一:准备系统 1:下载ubuntu 12.04. 服务器版本 ubuntu12.04正式版本,需要4月26号发布,目前是beta2 http://releases.ubuntu.com//precise/ubuntu-12.04-beta2-server-amd64.iso 2:安装OS 安装系统倒是简单。由于我的服务器是两块硬盘,显得比较简单。因为我们需要一个单独的分区专门给nova-volume使用。这个也可以通过变通的办法实现。 IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。 装完系统后。 apt-get update apt-get upgrade 更新源里的包,更新系统。确保你装的是最新版本的包。 3:设置root权限 为了简单,全部都是用root来运行。 sudo passwd 就可以给root设置一个密码。直接用root运行。 4:设置网络 我的网络设置和文档是完全一样。这样也减少错误的几率。 # cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 10.42.0.6 netmask 255.255.255.0 network 10.42.0.0 broadcast 10.42.0.255 gateway 10.42.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-search test.com auto eth1 iface eth1 inet static address 192.168.22.1 network 192.168.22.0 netmask 255.255.255.0 broadcast 192.168.22.255 重启网络,让修改生效 /etc/init.d/networking restart 5:安装bridge apt-get install bridge-utils 重启网络或者重启一下机器都可以 /etc/init.d/networking restart 6:设置NTP apt-get install ntp 编辑 /etc/ntp.conf 在末尾添加下面3行 server ntp.ubuntu.com iburst server 127.127.1.0 fudge 127.127.1.0 stratum 10 重启服务 service ntp restart 7:设置Iscsi apt-get install tgt 重启服务 service tgt start 安装iscsi客户端 apt-get install open-iscsi open-iscsi-utils 8:安装rabbitmq apt-get install rabbitmq-server memcached python-memcache apt-get install kvm libvirt-bin 二:安装mysql和创建相关数据库 Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。 1:安装mysql 过程中,会提示你输入root密码。 apt-get install -y mysql-server python-mysqldb 让mysql支持外部访问 sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf 重启服务 service mysql restart 2:安装phpmyadmin (可选) 为了方便,可以把phpmyadmin装上,可以比较方便管理数据库 apt-get install phpmyadmin 安装的时候,第一个提示是让你输入root的密码。 3:创建数据库 nova数据库, 管理员:novadbadmin,密码是:dieD9Mie glance数据库,管理员:glancedbadmin,密码是:ohC3teiv 如果你修改密码,后面很多配置都需要相应更改。 mysql -uroot -p CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'dieD9Mie'; quit mysql -uroot -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'ohC3teiv'; quit 三:安装和配置keystone Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。 1:安装keystone apt-get install keystone python-keystone python-keystoneclient 2:配置keystone 需要修改 /etc/keystone/keystone.conf 两个地方 默认定义的token就是ADMIN,我使用hastexo作为token [DEFAULT] bind_host = 0.0.0.0 public_port = 5000 admin_port = 35357 #admin_token = ADMIN admin_token =hastexo 另外一个地方是 [catalog] #driver = keystone.catalog.backends.sql.Catalog driver = keystone.catalog.backends.templated.TemplatedCatalog template_file = /etc/keystone/default_catalog.templates 重启服务 service keystone restart 3: 导入数据 这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。 http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt 下载脚本 wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt mv keystone_data.sh_.txt keystone_data.sh 让脚本可运行 chmod +x keystone_data.sh 运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方 第一个是登录dashboard的admin的密码 第二个就是keystone的token #ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo} ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} #export SERVICE_TOKEN="hastexo" export SERVICE_TOKEN="Centrin" export SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} ./keystone_data.sh 顺利运行,会什么都没有输出 #echo $? 下面会输出0 ,表示正常。你就别再运行脚本 keystone --tenant=admin --username=admin --password=hastexo --auth_url=http://127.0.0.1:5000/v2.0 user-list 看到这些,就说明keystone安装正常。 四:安装和配置glance 1:安装软件 apt-get install glance glance-api glance-client glance-common glance-registry python-glance 2:配置/etc/glance/glance-api-paste.ini 修改文件最后3行,这些设置都是keystone导入数据的时候设置的。 admin_tenant_name = %SERVICE_TENANT_NAME% admin_user = %SERVICE_USER% admin_password = %SERVICE_PASSWORD% 改成 admin_tenant_name = admin admin_user = admin admin_password = hastexo 3:设置 /etc/glance/glance-registry-paste.ini 也是修改文件最后3行,和上面是一样的。 admin_tenant_name = %SERVICE_TENANT_NAME% admin_user = %SERVICE_USER% admin_password = %SERVICE_PASSWORD% 改成 admin_tenant_name = admin admin_user = admin admin_password = hastexo 4:配置/etc/glance/glance-registry.conf 修改 #sql_connection = sqlite:var/lib/glance/glance.sqlite sql_connection = mysql://glancedbadminhC3teiv@10.42.0.6/glance 在末尾添加两行 [paste_deploy] flavor = keystone 5:配置/etc/glance/glance-api.conf 在末尾添加两行 [paste_deploy] flavor = keystone 6:同步数据库 目前glance 需要手工同步数据库。你装一个phpmyadmin,先确认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) 重启服务 # service glance-api restart && service glance-registry restart glance-api stop/waiting glance-api start/running, process 13321 stop: Unknown instance: glance-registry start/running, process 13327 7:验证glance服务是否正常 下面的步骤照做就可以,具体原理可以看英文 export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=hastexo export OS_AUTH_URL="http://localhost:5000/v2.0/" 检查检查 # export | grep OS_ declare -x OS_AUTH_URL="http://localhost:5000/v2.0/" declare -x OS_PASSWORD="hastexo" declare -x OS_TENANT_NAME="admin" declare -x OS_USERNAME="admin" 运行 glance index 没有任何的输出。表示正常。 #echo $? 下面会输出0 ,表示正常。 # glance --version glance 2012.1 8:下载镜像并上传 ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意 这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。 下载镜像 wget http://uec-images.ubuntu.com/releases/11.10/release/ubuntu-11.10-server-cloudimg-amd64-disk1.img 上传镜像 glance add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 五:安装配置nova 1:安装nova相关组件 apt-get install nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler nova-volume python-nova python-novaclient nova-consoleauth python-novnc novnc 2:配置 /etc/nova/nova.conf 把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是, 如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。 root@node6:~# cat /etc/nova/nova.conf --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 --allow_admin_api=true --use_deprecated_auth=false --auth_strategy=keystone --scheduler_driver=nova.scheduler.simple.SimpleScheduler --s3_host=10.42.0.6 --ec2_host=10.42.0.6 --rabbit_host=10.42.0.6 --cc_host=10.42.0.6 --nova_url=http://10.42.0.6:8774/v1.1/ --routing_source_ip=10.42.0.6 --glance_api_servers=10.42.0.6:9292 --image_service=nova.image.glance.GlanceImageService --iscsi_ip_prefix=192.168.22 --sql_connection=mysql://novadbadmin:dieD9Mie@10.42.0.6/nova --ec2_url=http://10.42.0.6:8773/services/Cloud --keystone_ec2_url=http://10.42.0.6:5000/v2.0/ec2tokens --api_paste_config=/etc/nova/api-paste.ini --libvirt_type=kvm #--libvirt_type=qemu --libvirt_use_virtio_for_bridges=true --start_guests_on_host_boot=true --resume_guests_state_on_host_boot=true #novnc --novnc_enabled=true --novncproxy_base_url= http://10.42.0.6:6080/vnc_auto.html --vncserver_proxyclient_address=127.0.0.1 --vncserver_listen=127.0.0.1 # network specific settings --network_manager=nova.network.manager.FlatDHCPManager --public_interface=eth0 --flat_interface=eth1 --flat_network_bridge=br100 --fixed_range=192.168.22.32/27 --floating_range=10.42.0.32/27 --network_size=32 --flat_network_dhcp_start=192.168.22.33 --flat_injected=False --force_dhcp_release --iscsi_helper=tgtadm --connection_type=libvirt --root_helper=sudo nova-rootwrap #--verbose --verbose=False 3:配置/etc/nova/api-paste.ini 也是修改文件最后3行, admin_tenant_name = %SERVICE_TENANT_NAME% admin_user = %SERVICE_USER% admin_password = %SERVICE_PASSWORD% 改成 admin_tenant_name = admin admin_user = admin admin_password = hastexo 4:停止和重启nova相关服务 for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done 5:同步数据库 以前我运行同步数据库,如果正确, 当nova.conf --verbose=False 是没有任何的输出,否则有一堆是输出。 nova-manage db sync 创建网络 nova-manage network create private --fixed_range_v4=192.168.22.32/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32 设定floating IP nova-manage floating create --ip_range=10.42.0.32/27 设置权限 chown -R nova:nova /etc/nova 再重启相关服务 for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done 6:检查nova服务 nova list nova image-list nova floating-ip-create 六:创建第一个VM 这是用命令行创建vm,这个步骤可以跳过。我没做。不影响后面的安装。 1: 创建密钥 # ssh-keygen 一路回车,就可以了。 2:上传密钥到数据库 # # nova keypair-add --pub_key .ssh/id_rsa.pub key1 这个时候,就可以查看到上传的key root@node6:~# nova keypair-list +------+-------------------------------------------------+ | Name | Fingerprint | +------+-------------------------------------------------+ | key1 | 00:7e:41:a2:95:68:3d:03:a6:5b:df:84:a5:b9:06:32 | +------+-------------------------------------------------+ 4:开始创建虚拟机 查看image list nova image-list 查看flavor-list nova flavor-list 创建虚拟机 ~# nova boot --flavor 1 --image 1437c858-dec7-41d3-a97b-d6b7d5714ac9 --key_name key1 superfrobnicator 看图有真相 查看一下创建的虚拟机 nova show superfrobnicator ssh 访问VM 打开防火墙 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 这个时候,就可以直接ssh到虚拟机上。 ssh -i .ssh/id_rsa ubuntu@192.168.22.35 这样就可以登录服务器。 Floating IP访问 如果希望访问floating IP 申请floating IP nova floating-ip-create 关联vm # nova add-floating-ip superfrobnicator 10.42.0.36 查看虚拟机 nova show superfrobnicator ssh访问虚拟机 ssh -i .ssh/id_rsa ubuntu@10.42.0.36 查看安全组和规则 # nova secgroup-list # nova secgroup-list-rules default 看图 看看结果 ssh访问vm 有用的命令 查看keypair nova keypair-list 删除keypair nova keypair-delete 查看vm nova list 删除vm,vm的ID nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343 七:安装和配置Dashbaord 1:安装dashbaord apt-get install libapache2-mod-wsgi openstack-dashboard 2:配置/etc/openstack-dashboard/local_settings.py 把CACHE_BACKEND修改成下面 #CACHE_BACKEND = 'locmem://' CACHE_BACKEND = 'memcached://127.0.0.1:11211/' 小bug 目前我装的dashboard,会出现下拉菜单无法工作,是因为缺少js导致。 cp -r /usr/share/pyshared/horizon/static/horizon /usr/share/openstack-dashboard/openstack_dashboard/static/ 3重启服务 service apache2 restart 这个时候,你就可以登录dashboard http://10.42.0.6 user:admin pass:hastexo 5:理解project和user关系 上面需要注意的一个地方,就是 project的含义。以前的版本是tenant,租户意思,基本可以理解成企业。 你可以创建用户,用户属于一个project。创建用户的时候,就需要设置密码。 我创建了一个project :招商银行,创建了一个用户 chenshake,属于project 招商银行 八:euca2ools 工作 euca2ools这套工具,其实以前是管理亚马逊aws,只要你兼容aws接口,都可以使用。应该Eucalyptus的一套管理工具。这套管理工具也是可以管理Openstack,和Openstack内置的命令,很多是相同的效果。 1:安装euca2ools工具 apt-get install -y euca2ools 2:设置环境变量 export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }') export CREDS=$(keystone ec2-credentials-create) export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }') export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }') 3:运行命令 大家可以比较一下列出所有镜像的命令,可以使用euca-describe-images,或者nova image-list 现在Essex对Euca的工具支持应该比Diablo好很多。 列出运行的虚拟机,可以用 nova list 或者 euca-describe-instances Appendix A: 使用nova-volume Essex Dashboard可以管理nova-volume。有两种办法来实现 默认nova是直接使用vg名字为nova-volume的卷。这个是可以在nova.conf 定义,你是可以修改的。 1:如果系统上没有多余的分区做 LVM 的话可以用一个文件来充当硬盘, 新建一个文件来做 LVM: DD一个设备 # dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0 加载一个设备 # losetup -f nova-volumes.img 查看加载情况 # losetup -a /dev/loop0: [0801]:35127298 (/opt/nova-volumes.img) 创建一个nova-volume的卷 # vgcreate nova-volumes /dev/loop0 No physical volume label read from /dev/loop0 Physical volume "/dev/loop0" successfully created Volume group "nova-volumes" successfully created 查看卷 #vgdisplay 就可以看到创建好的nova-volume。 创建一个5G的卷,名字为volume1 nova volume-create --display_name "volume1" 5 创建完后,可以 nova volume-list 创建的过程非常慢,看status完成后,才能attach。 如果希望删除创建的volume,目前我知道的就只能通过 euca-describe-volumes euca-delete-volume vol-00000001 把卷添加给虚拟机,1,表示ID号 nova volume-attach superfrobnicator 1 /dev/vdb 2:单独一块盘 # pvcreate /dev/sdb1 # pvdisplay #vgcreate nova-volumes /dev/sdb1 # vgdisplay 这个时候,就把sdb变成了一个nova-volume。这个时候,在dashboard里,就可以直接管理,使用。 参考下面文档 http://www.vpsee.com/2011/09/openstack-nova-storage-management/ http://hi.baidu.com/chenshake/blog/item/581824db78607378d1164eeb.html lvm 相关资料http://hi.baidu.com/chenshake/blog/item/6fd327f35595eb4e342acc60.html Appendix C: Dashboard 创建vm,允许ping,ssh登录 对于没有用过aws的用户,其实会比较困惑。不知道如何在dashbaord里设置,可以ssh访问虚拟机。无法ping虚拟机。 不能ping,是因为关闭icmp包响应,不能ssh,是因为防护墙关闭的22端口。 从ubuntu下载的image,只能用密钥登录,不能用密码登录。 1:设置安全组 Security group 安全组,其实就是虚拟机前面的防护墙。默认是关闭所有的包。需要打开防护墙。 为了简单,我们把default的防护墙,端口全部打开。生产环境就不要这样操作。 默认是default规则,直接修改default就可以。默认default,是阻止所有的访问。 2:创建密钥 为了安全考虑,ubuntu提供的模板,都是采用密钥登录。简单点说,你创建一对公钥和私钥。私钥下载到本地保存,公钥存放在服务器上,创建虚拟机的时候,会把公钥注入到虚拟机里。 这个时候,你如果有私钥,就可以直接登录。 下载私钥 点击create keypair,就会提示你下载私钥。私钥是pem后缀。 那么你就参考这个文档,就可以。 3:创建vm 创建vm的时候,你会选择keypair,安全组。 创建完成后,得到其实是一个内网规定IP 4:floating IP 给虚拟机分配一个 floating IP,可以理解成是公网的IP 分配完 关联vm 看看结果 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 就可以直接登录虚拟机。 Appendix D:FAQ 1:我登录服务器后,命令都无法运行 ~# nova image-list ERROR: You must provide a username via either --os_username or env[OS_USERNAME] 如何解决。 这个问题,其实还是你的环境变量导致的。 export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=hastexo export OS_AUTH_URL="http://localhost:5000/v2.0/" export EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }') export CREDS=$(keystone ec2-credentials-create) export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }') export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }') 这样就可以了。ecua 和nova的命令都可以使用。 如果不希望每次ssh登录,都需要运行这个。可以直接修改 /etc/profile, 在最后面加上上面几行。这样运行命令就不会再出错。 http://bbs.chinaunix.net/thread-1958386-1-1.html root@node6:~# nova image-list +--------------------------------------+-----------------------------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+-----------------------------+--------+--------+ | 7491016e-bcf4-4357-90d2-ec228ce81cb8 | Ubuntu 11.10 cloudimg amd64 | ACTIVE | | +--------------------------------------+-----------------------------+--------+--------+ 2:如何用curl去测试keystone 替换红色部分,就可以了 # curl -d '{"auth": {"tenantName": "admin", "passwordCredentials":{"username": "admin", "password": "hastexo"}}}' -H "Content-type: application/json" http://10.42.0.6:35357/v2.0/tokens | python -mjson.tool 3:Dashboard的虚拟机下拉菜单无法工作? 这个其实不是Essex的bug,是ubuntu打包的问题,缺少js, :/usr/share/openstack-dashboard/openstack_dashboard/static/horizon/js 估计这个bug,很快就会修复。着急就找我要这个js包。这是一位朋友帮忙解决的。 4:vnc无法使用? 这个问题,应该是打包的问题。 装上nova-consoleauth包 另外还需要安装另外两个包 http://dl.dropbox.com/u/1400487/novnc_2012.1~e3%2Bdfsg-1_amd64.deb http://dl.dropbox.com/u/1400487/python-novnc_2012.1~e3%2Bdfsg-1_all.deb 装完,重启服务,就可以了。 |
----------------------------------------------
我也出现这个问题,自己解决了。楼主的命令少写了一点:
- glance add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < ubuntu-11.10-server-cloudimg-amd64-disk1.img
原文链接:http://glance.openstack.org/glance.html