载入中。。。 'S bLog
 
载入中。。。
 
载入中。。。
载入中。。。
载入中。。。
载入中。。。
载入中。。。
 
填写您的邮件地址,订阅我们的精彩内容:


 
OneStack:Ubuntu 12.04 (或11.10) 一键部署安装OpenStack云计算平
[ 2013/4/25 22:38:00 | By: 梦翔儿 ]
 

OneStack:在Ubuntu12.04(precise)上一键安装部署Opentack Essex

提醒:如果你喜欢折腾,喜欢自己一步一步安装各个功能组件和配置conf文件,你可以略过此文。本文工具可以在裸机和虚拟机一键部署真实的OpenStack云计算平台,主要步骤是配置网络、数据库、keystone、glance、nova、dashboard、创建镜像和启动实例等,代码内有详细注释。这只是学习Opentack的入门的一步,深入研究可以参考附录3给出的部分资料和社区。

2012.07.14更新:

收到很多邮件和提问,精力有限没法一一回复,在此致歉。随手把记录的一些问题和解决方法整理了,供大家参考。

详见《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》。


2012.07.09更新:

很多人来信问我单网卡怎么设置,以及其它网络问题,我后面写了一篇介绍OpenStack网络的,详见《OpenStack云平台的网络模式及其工作机制》。


2012.07.02更新:

1、受邀在vpsee上对这个项目进行了较为详细的介绍(OneStack:Ubuntu 12.04 上一键自动部署 OpenStack),对于项目来源、相关考虑、项目结构、具体安装步骤(参数设置和前期工作)和预期等做了说明,可以参考。

2、希望增加高可用性的云计算部署,构建OpenStack的高可用性(HA,High Availability) 对高可用性进行了初步介绍,欢迎提出意见和建议。



一、项目(OneStack)地址:

http://onestack.googlecode.com

喜欢git或者github的请去 https://github.com/Kayven/OneStack

不希望同行们把过多精力花在OpenStack的安装部署上(以后应该会改进),而是对其机制原理、工程实践、性能调优、应用服务等深入研究探讨。 所以提供这个一键部署的工具,帮助大家快速建立环境实验生产实践。项目结构如下:

  • oneStack.sh(一键部署 all-in-one 的 OneStack,简单安装的主要文件);
  • setup_base.sh(安装基本系统);
  • setup_test.sh(添加镜像和实例);
  • addComputeNode.sh(增加计算节点);
  • delStack.sh(只卸载nova、glance、keystone等);
  • delAll.sh(卸载所有安装的组件和工具);
  • resetStack.sh(清空数据库,镜像、网络和实例等,重新上传镜像、创建实例);
  • addClient.sh(添加客户端,nova管理等);
  • HAStack 目录(OneStack 的高可用性,希望更多人可以提出自己的解决方案)。


二、部署(OneStack)步骤

简单部署OneStack:

wget http://onestack.googlecode.com/files/oneStack.sh && chmod +x oneStack.sh && ./oneStack.sh


完整部署OneStack:

Just checkout and run it!

1. Setup a fresh Ubuntu Precise(12.04) Sever OS.

2. checkout

svn checkout http://onestack.googlecode.com/svn/trunk/ onestack-read-only

3. run it!

cd onestack-read-only/ && ./oneStack.sh

(如何简单配置参数见留言说明,或者见http://onestack.googlecode.com,或者见脚本注释)

(多节点的部署类似,只需要在计算节点设置并执行addComputeNode.sh)


三、项目(OneStack)说明:

  • 在Ubuntu12.04(precise)上安装部署Opentack Essex
  • 只需要一个文件即可完成全部功能组件的部署:http://onestack.googlecode.com/files/oneStack.sh

  • 里面含有详细的注释说明,看完整个脚本相当于看完了安装文档;

  • svn整个项目只是多一些辅助工具,包括重置、重新安装、卸载等;

  • 也欢迎同道人补充和完善更多的功能,适用于更多的操作系统和应用场景。


四、项目(OneStack)来源:

  • 类似项目有DevStack,但是DevStack是使用screen安装OpenStack,重启服务器会出现一些问题,没有提供重启、重置等有用功能;

  • 由于组件独立分散,安装过程过于繁琐,可以抽象成通用的项目供大家方便使用;

  • 官方提供了一个比较完善的入门文档,但是,这一步一步下来得做很多无用功,容易漏错而引起很多莫名和头疼的问题;

  • 本项目不像devstack只是提供实验环境,而是可以实际部署使用,可以自己修改配置,按需增加组件和功能,实现一键部署,可扩展使用。


五、项目(OneStack)描述:
  1. 一键完整部署OpenStack,可以自定义配置、方便地扩展功能组件,无交互地自动部署;

  2. 安装过程不需要等待配置:

  • 功能齐全,附带了卸载、重置、添加计算节点等工具
    1. 可以卸载主要的opentack组件,包括nova、glance、keystone等;
    2. 可以重置数据库和配置,重新安装openstack组件;
    3. 可以根据需要自行更改脚本,方便部署自己的云计算平台。
  • 经过多次测试,完整在VMware虚拟机上部署OpenStack
      测试环境:VMware ESXi 5.0虚拟Dell R210服务器,其中一个虚拟机上部署Opentack,启动多个实例,正常运行;远程访问和web管理正常;重启、重置、重新安装都正常。
      系统要求:双网卡,64位机器,支持VT技术
  • 脚本运行过程会做如下工作:
    1. 配置网络相关;
    2. 安装和配置数据库;
    3. 安装和部署身份管理组件keystone;
    4. 安装和部署镜像管理组件glance;
    5. 安装和部署控制与计算组件nova;
    6. 安装和部署web管理组件dashboard;
    7. 上传和添加ubuntu12.04镜像;
    8. 设置项目安全规则和密钥;
    9. 启动实例,并正常运行。
  • 欢迎反馈,谢谢.
    1. 本人尽力做到不出差错,但是限于学识和眼界,难免有考虑不周、冗余、没有最优化或者表达不好之处;
    2. 希望大家有任何意见建议随时联系我。
附录1:
为了方便大家查阅、讨论、交流、review和完善,在此贴出主要代码。
[plain] view plaincopy
  1. #!/usr/bin/env bash  
  2. # **oneStack.sh** is a tool to deploy complete and real OpenStack cloud computing service.  
  3.   
  4. # This script installs and configures various combinations of *Glance*,  
  5. # *Horizon*, *Keystone*, *Nova*, *Mysql* and others.  
  6.   
  7. # Hily.Hoo@gmail.com (Kayven)  
  8. # Learn more and get the most recent version at http://code.google.com/p/onestack/  
  9.   
  10. set -o xtrace  
  11. ## 请使用root执行本脚本!  
  12. ## Ubuntu 12.04 ("Precise") 部署 OpenStack Essex(或者ubuntu11.10版本)  
  13.   
  14.   
  15. ## 一:准备系统  
  16. ## 1:下载ubuntu 12.04. 服务器版本  
  17. ## http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso  
  18. ## 2:安装OS  
  19. ## 最小化安装,只需要安装ssh server就可以。  
  20. ## 装完系统后 更新源里的包,更新系统。确保你装的是最新版本的包。  
  21.   
  22. ## 3:设置root权限  
  23. ## 为了简单,全部都是用root来运行。  
  24. if [ `whoami` != "root" ]; then  
  25.         sudo passwd  
  26.         exec su -c 'sh ./oneStack.sh'  
  27. fi  
  28.   
  29. ## 4:设置参数和环境配置,直到两行#号结束  
  30. ## 这个配置以后就不需要更改了,比如看到192.168.139.50等ip,不用更改,脚本会自动替换这些初始值。  
  31. ## 可以变动的是,第500行的image的下载;或者去掉第七步开始的部分(上传镜像,创建实例)  
  32. ##########################################################################  
  33. ##########################################################################  
  34. ## 如果原来安装过OpenStack,请先执行 ./delStack.sh  
  35. ## 1)配置参数  
  36. ## 数据库相关  
  37. MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  
  38. NOVA_DB_USERNAME=${NOVA_DB_USERNAME:-"novadbadmin"}  
  39. NOVA_DB_PASSWD=${NOVA_DB_PASSWD:-"cloud1234"}  
  40. GLANCE_DB_USERNAME=${GLANCE_DB_USERNAME:-"glancedbadmin"}  
  41. GLANCE_DB_PASSWD=${GLANCE_DB_PASSWD:-"cloud1234"}  
  42.   
  43. ## 注意:单网卡的去掉interfaces的eth1,并把nova.conf里面eth1改完eth0即可!  
  44. ## 自行检查下面network/interfaces的两个网卡设置  
  45. ## 本机器外网ip (包括局域网的内网ip,相对于OpenStack内网而言的)  
  46. OUT_IP="192.168.139.50"  
  47. OUT_IP_PRE="192.168.139"  
  48. ## nova-network内网ip  
  49. IN_IP="10.0.0.1"  
  50. IN_IP_PRE="10.0.0"  
  51. ## flat的起始ip  
  52. FLAT_IP="10.0.0.40"  
  53. ## 浮动ip的起始值  
  54. FLOAT_IP="192.168.139.225"  
  55.   
  56. ## 选择虚拟技术,裸机使用kvm,虚拟机里面使用qemu  
  57. VIRT_TYPE="qemu"  
  58. ## token, 登录dashboard密码(用户名admin)  
  59. ADMIN_TOKEN="admin"  
  60. ##########################################################################  
  61. ## 2)检查系统是否ubuntu12.04,据反映11.10也可以正常安装,可以去掉这一段检查  
  62. # Determine what system we are running on.  This provides ``os_VENDOR``...  
  63. # Determine OS Vendor, Release and Update   
  64. #if [[ -x "`which lsb_release 2>/dev/null`" ]]; then  
  65.     os_VENDOR=$(lsb_release -i -s)  
  66.     os_RELEASE=$(lsb_release -r -s)  
  67.     os_UPDATE=""  
  68.     os_CODENAME=$(lsb_release -c -s)  
  69. #fi  
  70. if [ "Ubuntu" = "$os_VENDOR" ]; then  
  71.     DISTRO=$os_CODENAME  
  72. else  
  73.     echo "The os didn't seems to be Ubuntu."  
  74.     exit 1  
  75. fi  
  76. echo $DISTRO  
  77. if [ "precise" != ${DISTRO} -a "oneiric" != ${DISTRO} ]; then  
  78.     echo "WARNING: this script has been tested on oneiric or precise"  
  79.     exit 1  
  80. fi  
  81.   
  82. ############################################################################  
  83. ## 3)以下系统配置,语言中文支持、国内APT源、网络设置(两个网卡),可以自行配置,注释掉这些步骤。  
  84. ## locale  
  85.   
  86. ############################################################################  
  87. ## 4:设置网络  
  88. SOURCE_FILE=${SOURCE_FILE:-"/etc/apt/sources.list"}  
  89. cp $SOURCE_FILE $SOURCE_FILE.bak  
  90. cat <<APT >$SOURCE_FILE  
  91. deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  
  92. deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse  
  93. deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  
  94. deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  
  95. deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  
  96. deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  
  97. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse  
  98. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  
  99. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  
  100. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  
  101. APT  
  102. #sed -i 's/debian.ustc.edu.cn/mirrors.163.com/g' $SOURCE_FILE  
  103.   
  104. # network configure  
  105. NETWORK_CONF=${NETWORK_CONF:-"/etc/network/interfaces"}  
  106. if ! grep -q eth1 $NETWORK_CONF; then  
  107.         cat <<INTERFACES >$NETWORK_CONF  
  108. auto lo  
  109. iface lo inet loopback  
  110.   
  111. # The primary network interface  
  112. auto eth0  
  113. iface eth0 inet static  
  114. pre-up ifconfig eth0 hw ether b8:ac:6f:9a:ee:e4  
  115.         address 192.168.139.50  
  116.         netmask 255.255.255.0  
  117.         network 192.168.139.0  
  118.         broadcast 192.168.139.255  
  119.         gateway 192.168.139.253  
  120.         dns-nameservers 210.72.128.8  
  121.   
  122. auto eth1  
  123. iface eth1 inet static  
  124. pre-up ifconfig eth1 hw ether b8:ac:6f:9a:ee:e4  
  125.         address 10.0.0.1  
  126.         netmask 255.255.255.0  
  127.         network 10.0.0.0  
  128.         broadcast 10.0.0.255  
  129. INTERFACES  
  130.         /etc/init.d/networking restart  
  131. fi  
  132. ## 以上系统配置,可以自行配置,注释掉这些步骤。  
  133. ############################################################################  
  134. ############################################################################  
  135.   
  136. apt-get update  
  137.   
  138.   
  139.   
  140. ## 5:安装bridge  
  141. apt-get install -y bridge-utils  
  142. ## 6:设置NTP  
  143. apt-get install -y ntp  
  144. if ! grep -q fudge "/etc/ntp.conf"; then  
  145.         cat <<NTPconf > /etc/ntp.conf  
  146. server ntp.ubuntu.com iburst  
  147. server 127.127.1.0  
  148. fudge 127.127.1.0 stratum 10  
  149. NTPconf  
  150. fi  
  151. service ntp restart  
  152. ## 7:设置Iscsi  
  153. apt-get install -y tgt ssh w3m unzip wget curl expect  
  154. ## 安装iscsi客户端、安装rabbitmq  
  155. apt-get install -y open-iscsi open-iscsi-utils  
  156. apt-get install -y rabbitmq-server memcached python-memcache  
  157. apt-get install -y kvm libvirt-bin qemu qemu-kvm  
  158.   
  159. ## 二:安装mysql和创建相关数据库  
  160. ## Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。  
  161. ## 1:安装mysql  
  162. ## 过程中,会提示你输入root密码。通过debconf-set-selections读取跳过这一步.  
  163. #MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  
  164. ## apt-get install debconf debconf-utils  
  165. cat <<MYSQL_PRESEED | debconf-set-selections  
  166. mysql-server-5.1 mysql-server/root_password password $MYSQL_PASSWD  
  167. mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASSWD  
  168. mysql-server-5.1 mysql-server/start_on_boot boolean true  
  169. MYSQL_PRESEED  
  170.   
  171. apt-get install --no-install-recommends -y mysql-server python-mysqldb  
  172. ## chkconfig mysql on  
  173. ## 让mysql支持外部访问  
  174. sed -i '/^bind-address/s/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf    
  175. service mysql restart  
  176. if [ ! -s /etc/apache2/httpd.conf ]; then  
  177.         echo "ServerName localhost" >> /etc/apache2/httpd.conf  
  178.         /etc/init.d/apache2 restart  
  179. fi  
  180.   
  181. ## 2:安装phpmyadmin (可选)  
  182. cat <<PHPmyadmin | debconf-set-selections  
  183. phpmyadmin phpmyadmin/reconfigure-webserver  text     apache2  
  184. phpmyadmin phpmyadmin/dbconfig-install       boolean  true  
  185. phpmyadmin phpmyadmin/app-password-confirm   password $MYSQL_PASSWD  
  186. phpmyadmin phpmyadmin/mysql/admin-pass       password $MYSQL_PASSWD  
  187. phpmyadmin phpmyadmin/password-confirm       password $MYSQL_PASSWD  
  188. phpmyadmin phpmyadmin/setup-password         password $MYSQL_PASSWD  
  189. phpmyadmin phpmyadmin/mysql/app-pass         password $MYSQL_PASSWD  
  190. PHPmyadmin  
  191. apt-get --no-install-recommends -yq install phpmyadmin  
  192.   
  193. ## 3:创建数据库  
  194. ## nova数据库,   管理员:novadbadmin,密码是:cloud1234  
  195. ## glance数据库,管理员:glancedbadmin,密码是:cloud1234  
  196. ## 如果你修改密码,后面很多配置都需要相应更改。  
  197. ##   mysql -uroot -p  
  198. ##   CREATE DATABASE nova;  
  199. ##   GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'cloud1234';  
  200. ##   CREATE DATABASE glance;  
  201. ##   GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'cloud1234';  
  202. ##   quit  
  203. mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS nova;"  
  204. mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE nova;"  
  205. mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON nova.* TO '$NOVA_DB_USERNAME'@'%' IDENTIFIED BY '$NOVA_DB_PASSWD';"  
  206. mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS glance;"  
  207. mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE glance;"  
  208. mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON glance.* TO '$GLANCE_DB_USERNAME'@'%' IDENTIFIED BY '$GLANCE_DB_PASSWD';"  
  209. if [ -e /var/lib/keystone/keystone.db ]; then  
  210. rm -rf /var/lib/keystone/keystone.db  
  211. fi  
  212.   
  213. ## 三:安装和配置keystone  
  214. ## Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。  
  215. ## 1:安装keystone  
  216. apt-get install -y keystone python-keystone python-keystoneclient  
  217. ## 2:配置keystone  
  218. ## 如果更改token,需要修改 /etc/keystone/keystone.conf 两个地方  
  219. ##    默认定义的token就是ADMIN,web登录admin就是这个密码  
  220. ##    [DEFAULT]  
  221. ##    bind_host = 0.0.0.0  
  222. ##    public_port = 5000  
  223. ##    admin_port = 35357  
  224. ##    admin_token = ADMIN  
  225. ##    另外一个地方是  
  226. ##    [catalog]  
  227. ##    #driver = keystone.catalog.backends.sql.Catalog  
  228. ##    driver = keystone.catalog.backends.templated.TemplatedCatalog  
  229. ##    template_file = /etc/keystone/default_catalog.templates  
  230. ##       
  231. sed -i -e 's/keystone.catalog.backends.sql.Catalog/keystone.catalog.backends.templated.TemplatedCatalog\ntemplate_file = \/etc\/keystone\/default_catalog.templates/g' /etc/keystone/keystone.conf  
  232. sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/keystone/keystone.conf  
  233. service keystone restart  
  234.   
  235. ## 3: 导入数据  
  236. ## 这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。  
  237. ## wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt -O keystone_data.sh  
  238. wget http://onestack.googlecode.com/files/gen_keystone_data.sh -O gen_keystone_data.sh  
  239. chmod +x gen_keystone_data.sh  
  240. ## 运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方  
  241. ## 第一个是登录dashboard的admin的密码  
  242. ## 第二个就是keystone的token  
  243. ## #ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}  
  244. ## ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}  
  245. ## SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}  
  246. ## #export SERVICE_TOKEN="hastexo"  
  247. ## export SERVICE_TOKEN="Centrin"  
  248. ## export SERVICE_ENDPOINT="http://localhost:35357/v2.0"  
  249. ## SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}  
  250. sed -i -e "s/hastexo/$ADMIN_TOKEN/g" gen_keystone_data.sh   
  251.    
  252. ./gen_keystone_data.sh  
  253. ##  顺利运行,会什么都没有输出  
  254. ##  #e cho $?  
  255. ##  下面会输出0 ,表示正常。你就别再运行脚本  
  256. ##  keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list  
  257. ##  看到这些,就说明keystone安装正常。  
  258.   
  259. cat <<ENV_AUTH >> /etc/profile  
  260. export OS_TENANT_NAME=admin  
  261. export OS_USERNAME=admin  
  262. export OS_PASSWORD=ADMIN  
  263. export OS_AUTH_URL="http://localhost:5000/v2.0/"  
  264. ENV_AUTH  
  265. sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/profile  
  266. export OS_TENANT_NAME=admin  
  267. export OS_USERNAME=admin  
  268. export OS_PASSWORD=$ADMIN_TOKEN  
  269. export OS_AUTH_URL="http://localhost:5000/v2.0/"  
  270. #source /etc/profile  
  271. ## 检查检查  
  272. ## # export | grep OS_  
  273. ## declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"  
  274. ## declare -x OS_PASSWORD="hastexo"  
  275. ## declare -x OS_TENANT_NAME="admin"  
  276. ## declare -x OS_USERNAME="admin"  
  277. ## 这个时候,直接运行  
  278. ## root@node6:~# keystone user-list  
  279.   
  280.   
  281. ## 四:安装和配置glance  
  282. ## 1:安装软件  
  283. apt-get install -y glance glance-api glance-client glance-common glance-registry python-glance  
  284. ## 2:配置/etc/glance/glance-api-paste.ini   
  285. ## 修改文件最后3行,这些设置都是keystone导入数据的时候设置的。  
  286. sed -i -e "  
  287.        s/%SERVICE_TENANT_NAME%/admin/g;  
  288.        s/%SERVICE_USER%/admin/g;  
  289.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  290.     " /etc/glance/glance-api-paste.ini  
  291.    
  292. ## 3:设置 /etc/glance/glance-registry-paste.ini  
  293. sed -i -e "  
  294.        s/%SERVICE_TENANT_NAME%/admin/g;  
  295.        s/%SERVICE_USER%/admin/g;  
  296.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  297.     " /etc/glance/glance-registry-paste.ini  
  298. ## 4:配置/etc/glance/glance-registry.conf  
  299. ## 修改  
  300. ## #sql_connection = sqlite:////var/lib/glance/glance.sqlite  
  301. ## sql_connection = mysql://glancedbadmin:ohC3teiv@10.42.0.6/glance  
  302. ## 在末尾添加两行  
  303. ## [paste_deploy]  
  304. ## flavor = keystone  
  305. GLANCE_API_CONF=${GLANCE_API_CONF:-"/etc/glance/glance-api.conf"}  
  306. GLANCE_REGISTRY_CONF=${GLANCE_REGISTRY_CONF:-"/etc/glance/glance-registry.conf"}  
  307. PUBLIC_IP=${PUBLIC_IP:-"192.168.139.50"}  
  308. sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_API_CONF  
  309. cat <<EOF >>$GLANCE_API_CONF  
  310. [paste_deploy]  
  311. flavor = keystone  
  312. EOF  
  313. sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_REGISTRY_CONF  
  314. cat <<EOF >>$GLANCE_REGISTRY_CONF  
  315. [paste_deploy]  
  316. flavor = keystone  
  317. EOF  
  318.   
  319. ## 5:配置/etc/glance/glance-api.conf  
  320. ## 6:同步数据库  
  321. glance-manage version_control 0  
  322. glance-manage db_sync            
  323. service glance-api restart && service glance-registry restart  
  324.   
  325. ## 7:验证glance服务是否正常  
  326. # glance index  
  327. ## 没有任何的输出。表示正常。  
  328. ## #e cho $?  
  329. ## 下面会输出0 ,表示正常。  
  330. ## # glance --version  
  331. ## glance 2012.1  
  332.   
  333. ## 8:下载镜像并上传  
  334. ## ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意  
  335. ## 这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。  
  336. ## 下载镜像  
  337. ## http://cloud-images.ubuntu.com/precise/current/  
  338. ## 这应该是ubuntu提供的最新的稳定的镜像。  
  339. #wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img  
  340. ##  expect -c "spawn /usr/bin/scp  yuan@192.168.139.84:/home/yuan/precise-server-cloudimg-amd64-disk1.img .; expect {  
  341. ##     \"password:\"; {  
  342. ##    send \"yyhu\r\n\";  
  343. ##    }; \"Are you sure you want to continue connecting (yes/no)?\" {  
  344. ##    send \"yes\r\n\" ;  
  345. ##    expect \"password:\";  
  346. ##    send \"yyhu\r\n\";  
  347. ##    }  
  348. ##  } ; set timeout -1; expect -re \"100%\";"  
  349. ##^^####sleep 5; expect -re \"password\"; send \"yyhu\r\n\";  
  350.   
  351.   
  352. # glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  
  353. ## 这里还有一种方法上传,如果你没用环境变量。  
  354. ## glance --tenant=admin--username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img  
  355. ## 上传完镜像后。在运行  
  356. ## glance index  
  357.   
  358.   
  359. ## 五:安装配置nova  
  360. ## 1:安装nova相关组件  
  361. apt-get install -y 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  
  362. ## 2:配置 /etc/nova/nova.conf  
  363. ## 如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。  
  364. cat <<NOVAconf > /etc/nova/nova.conf  
  365. --dhcpbridge_flagfile=/etc/nova/nova.conf  
  366. --dhcpbridge=/usr/bin/nova-dhcpbridge  
  367. --logdir=/var/log/nova  
  368. --state_path=/var/lib/nova  
  369. --lock_path=/var/lock/nova  
  370. --allow_admin_api=true  
  371. --use_deprecated_auth=false  
  372. --auth_strategy=keystone  
  373. --scheduler_driver=nova.scheduler.simple.SimpleScheduler  
  374. --s3_host=192.168.139.50  
  375. --ec2_host=192.168.139.50  
  376. --rabbit_host=192.168.139.50  
  377. --cc_host=192.168.139.50  
  378. --nova_url=http://192.168.139.50:8774/v1.1/  
  379. --routing_source_ip=192.168.139.50  
  380. --glance_api_servers=192.168.139.50:9292  
  381. --image_service=nova.image.glance.GlanceImageService  
  382. --iscsi_ip_prefix=10.0.0  
  383. --sql_connection=mysql://novadbadmin:cloud1234@192.168.139.50/nova  
  384. --ec2_url=http://192.168.139.50:8773/services/Cloud  
  385. --keystone_ec2_url=http://192.168.139.50:5000/v2.0/ec2tokens  
  386. --api_paste_config=/etc/nova/api-paste.ini  
  387. --libvirt_type=kvm  
  388. --libvirt_use_virtio_for_bridges=true  
  389. --start_guests_on_host_boot=true  
  390. --resume_guests_state_on_host_boot=true  
  391.    
  392. #novnc  
  393. --novnc_enabled=true  
  394. --novncproxy_base_url= http://192.168.139.50:6080/vnc_auto.html  
  395. --vncserver_proxyclient_address=127.0.0.1  
  396. --vncserver_listen=127.0.0.1  
  397.   
  398. # network specific settings  
  399. --network_manager=nova.network.manager.FlatDHCPManager  
  400. --public_interface=eth0  
  401. --flat_interface=eth1  
  402. --flat_network_bridge=br100  
  403. --fixed_range=10.0.0.1/27  
  404. --floating_range=192.168.139.225/27   
  405. --network_size=32  
  406. --flat_network_dhcp_start=10.0.0.40  
  407. --flat_injected=False  
  408. --force_dhcp_release  
  409. --iscsi_helper=tgtadm  
  410. --connection_type=libvirt  
  411. --root_helper=sudo nova-rootwrap  
  412. #--verbose  
  413. --verbose=False  
  414. NOVAconf  
  415. ## if ! kvm-ok 1>/dev/null 2>&1; then  
  416. ##      sed -i -e "s/kvm/qemu/" /etc/nova/nova-compute.conf  
  417. ## fi  
  418.   
  419. sed -i -e "s/novadbadmin/$NOVA_DB_USERNAME/g;s/cloud1234/$NOVA_DB_PASSWD/g" /etc/nova/nova.conf  
  420. sed -i -e "s/192.168.139.50/$OUT_IP/g;s/192.168.139.225/$FLOAT_IP/g;" /etc/nova/nova.conf  
  421. sed -i -e "s/10.0.0.1/$IN_IP/g;s/10.0.0.40/$FLAT_IP/g;s/10.0.0/$IN_IP_PRE/g;" /etc/nova/nova.conf  
  422. ## kvm or qemu?  
  423. sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova.conf  
  424. sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova-compute.conf  
  425.   
  426. ## 3:配置/etc/nova/api-paste.ini  
  427. sed -i -e "  
  428.        s/%SERVICE_TENANT_NAME%/admin/g;  
  429.        s/%SERVICE_USER%/admin/g;  
  430.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  431.     " /etc/nova/api-paste.ini  
  432. # 4:停止和重启nova相关服务  
  433. 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  
  434.   
  435.   
  436. ## 六:安装和配置Dashbaord  
  437. ## 1:安装dashbaord  
  438. apt-get install -y libapache2-mod-wsgi openstack-dashboard  
  439. /etc/init.d/apache2 restart  
  440.   
  441. ## 这个时候,你就可以登录dashboard  
  442. ## http://192.168.139.50  
  443. ## user:admin  
  444. ## pass:ADMIN  
  445. ## 之后通过前端web管理  
  446.   
  447.   
  448. ## 七:创建第一个VM,可以通过上面安装的web管理系统创建。  
  449.   
  450. # 0:同步数据库  
  451. ## 以前我运行同步数据库,如果正确, 当nova.conf  
  452. ## --verbose=False  
  453. ## 是没有任何的输出,否则有一堆是输出。  
  454. nova-manage db sync  
  455.   
  456. # 创建网络  
  457. nova-manage network create private --fixed_range_v4=10.0.0.1/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32  
  458.   
  459. ## 设定floating IP  
  460. nova-manage floating create --ip_range=192.168.139.225/27  
  461.   
  462. ## 设置权限  
  463. chown -R nova:nova /etc/nova  
  464. ## 再重启相关服务  
  465. 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  
  466. sleep 10  
  467.    
  468. ## 1:检查nova服务  
  469. ## 一路回车,就可以了。通过expect可以不用输入。  
  470. if [ ! -e ~/.ssh/id_rsa ]; then  
  471. expect -c "spawn ssh-keygen ; set timeout 5; expect \":\"; send \"\r\n\"; set timeout 3; expect  \":\"; send \"\r\n\";set timeout 3; expect \":\"; send \"\r\n\"; expect eof;"  
  472. fi  
  473. ## 2:上传密钥到数据库  
  474. nova keypair-add --pub_key ~/.ssh/id_rsa.pub key1  
  475. ## nova keypair-list  
  476.   
  477.   
  478. ## 打开防火墙  
  479. nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0  
  480. nova secgroup-add-rule default udp 1 65535 0.0.0.0/0  
  481. nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0  
  482.   
  483.   
  484. ## 4:开始创建虚拟机  
  485. ## nova image-list  
  486. ## nova flavor-list  
  487. ## 创建虚拟机  
  488. # nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1  
  489.   
  490. ## 上面的下载镜像移到这一步,可以去掉以下的步骤  
  491. wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img  
  492. glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  
  493. nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01  
  494. # nova show cloud01  
  495. # nova console-log cloud01  
  496.   
  497. ##关联vm  
  498. sleep 10  
  499. ## nova floating-ip-create  
  500. ## nova add-floating-ip cloud01 192.168.139.226  
  501. nova show cloud01  
  502. nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`  
  503. nova list  
  504. nova show cloud01  
  505. # ssh instance  
  506. # ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2  
  507. # ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2  
  508.   
  509.   
  510. ## 八、完成安装部署  
  511. cat <<EOF >&1  
  512.  1. login the dashboard  
  513.    http://192.168.139.50  
  514.    user:admin  
  515.    pass:admin or $ADMIN_TOKEN  
  516.  2. login a instance("cloud01")  
  517.    ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2  
  518.  3. view & manage  
  519.    nova list  
  520.    nova show cloud01  
  521.    ...  
  522.  4. enjoy yourself! (Contact Hily.Hoo@gmail.com)  
  523. EOF  



附录2:安装后web登录(dashboard)截图


附录3:云计算平台OpenStack资料
官方OpenStack www.openstack.org
国内OpenStack社区 www.openstack.org.cn

国内技术博客-陈沙克 http://hi.baidu.com/chenshake
Ubuntu12.04安装OpenStack文档(入门指南) http://docs.openstack.org/essex/openstack-compute/starter/content/

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文) http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin 
“OpenStack Documentation”team(文档、bug报告) https://launchpad.net/~openstack-doc
Quora上关于openstack的话题 http://www.quora.com/OpenStack
stackoverflow上关于openstack资源的讨论 http://stackoverflow.com/questions/5882333/good-tutorials-and-resources-for-openstack

Kayven( Hily.Hoo@gmail.com )
 
 

说明:由于本人的OneStack项目和博客上分享的几篇技术文章,收到很多邮件。有些问题�**餐ǖ模行┦强梢韵薅ǚ段Ы械魇缘摹O旅娼恍┗辜堑玫膖ips记录下来,供大家参考,希望少把时间浪费在安装和部署上。还有很多问题没有一一记录,就不再去探究了,读者如有问题请指出或者下面跟帖补充,希望对入门者有帮助。由于只是涵盖了部分问题,起名为OpenStack-Lite-FAQ。本人精力有限,如果有知道问题解决方法的,希望一起分享出来,我可以补充进去。

为方便管理,集中阅读,请访问本文原始出处:《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》。如有OpenStack问题和解决,请直接下面回复,这样也方便后来人。如有其它问题反馈,Kayven微博留言(E-mail)。


一、网络问题-network

更多网络原理机制可以参考《OpenStack云平台的网络模式及其工作机制》。

1.1、控制节点与网络控制器区别

OpenStack平台中有两种类型的物理节点,控制节点和计算节点。控制节点包括网络控制、调度管理、api服务、存储卷管理、数据库管理、身份管理和镜像管理等,计算节点主要提供nova-compute服务。

控制节点的服务可以分开在多个节点,我们把提供nova-network服务的节点称为网络控制器。

1.2、OpenStack中nova-network的作用

OpenStack的网络由nova-network(网络控制器)管理,它会创建虚拟网络,使主机之间以及与外部网络互相访问。

OpenStack的API服务器通过消息队列分发nova-network提供的命令,这些命令之后会被nova-network处理,主要的操作有:分配ip地址、配置虚拟网络和通信。

1.3、OpenStack中Flat与FlatDHCP区别

Flat(扁平): 所有实例桥接到同一个虚拟网络,需要手动设置网桥。

FlatDHCP: 与Flat(扁平)管理模式类似,这种网络所有实例桥接到同一个虚拟网络,扁平拓扑。不同的是,正如名字的区别,实例的ip提供dhcp获取(nova-network节点提供dhcp服务),而且可以自动帮助建立网桥。

1.4、OpenStack中Flat与vLAN区别

在两种Flat模式里,网络控制器扮演默认网关的角色,实例都被分配了公共的IP地址(扁平式结构,都在一个桥接网络里)。

vLAN模式功能丰富,很适合提供给企业内部部署使用。但是,需要支持vLAN的switches来连接,而且相对比较复杂,在小范围实验中常采用FlatDHCP模式。

1.5、OpenStack中网络流向是怎样的,都经过网络控制器吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。


1.6、OpenStack单网卡怎么配置?

配置好服务器的网络(混杂模式);

/etc/nova/nova.conf那一块,public_interface和flat_interface都改成这个单网卡的名称即可,比如在脚本oneStack.sh 改动2处:
/etc/network/interfaces设置那一块,去掉第2个网卡的设置(eth1);
/etc/nova/nova.conf那一块,eth1修改为eht0(flat的网卡)。

这样,在这个网卡上,既有外网的网络,又有flat网络。详见《OpenStack云平台的网络模式及其工作机制》。


1.7、OpenStack中网络流向是怎样的,都经过网络控制器吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

1.8、OpenStack中网络nova.conf与nova-manage network create分别做什么

设定floating ip和fixed ip在配置文件nova.conf里面有提到,可是为什么还要nova manager create呢,系统最终调用的是哪个呢?

fixed_ip=10.0.0.1/27

nova-manage network create 是创建项目的网络,每个项目有自己的ip范围,它必须在nova.conf范围内。

这个create过程是填充数据库的过程,后面会根据数据库的状态分配ip。


1.9、OpenStack中网络注意问题

1)openstack中,nova-manage create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。

2)采用FlatDHCP方式部署openstack,在开放了icmp和ssh22端口的情况下,仍然无法通过控制节点连接到虚拟机实例。此时应该检查控制节点的ip配置信息ip addr。

3)FlatDHCP模式下,network_size是整个fixed_ip range中的所有ip数。例如在一个A类/12的网络中,有2^20个IP地址,所有的这些IP地址都要写入数据库fixed_ips表中,这将会花费很长时间,导致出现假死。


4)如果采用FlatManager的网络模式,则必须手动建立相关的网桥,以便虚拟机实例之间以及和主机之间通信。

而且,必须手动的将虚拟机实例的内部IP加入到nova数据库的fixed_ips表中。
此外,fiexed_ips表保着所有可供虚拟机实例使用的内部IP,每次发起一个新的虚拟机实例,openstack的网络服务部分,根据fixed_ips表中的内容分配给该实例IP。如果用户希望保留特定的IP地址,需要将数据库中该IP对应的reserved字段设置为1。


二、虚拟化问题-virtual

2.1、OpenStack中控制节点和计算节点配置nova.conf一样吗

多节点时,网络控制器与计算节点分别在不同主机,普通部署方式下(不是multi_host),只有nova-network控制网络,而它仅仅在控制节点运行。因此,所有计算节点的实例都需要通过控制节点来与外网通信。

可以通过multi_host等高可用性部署方式改变这个单点故障问题。

计算节点的nova.conf并不是与控制节点完全一样,主要是
--vncserver_proxyclient_address=
--vncserver_listen=

应该是计算节点的ip。

2.2、OpenStack执行 virsh -c qemu:///system list,一直挂起在那里(hang),怎么解决

killall -9 dmidecode

dmidecode是一个管理工具,在虚拟机装OpenStack中需要用到,用在libvirt中,但在有的机器中会出现hang up的情况,这时候需要kill掉它。

2.3、OpenStack中虚拟化技术在哪里配置

主要两个文件:nova.conf nova-compute.conf。

其中的虚拟技术应该一致,比如都为kvm,或者都为qemu。

2.4、OpenStack中虚拟机中nova-compute经常启动失败,virsh list显示空白,怎么解决

1. 在vmware workstation上的虚拟机需要修改 *.vmx文件

vcpu.hotadd = "TRUE"

变更为

vcpu.hotadd = "FALSE"

重新启动机器,如果执行命令: 

virsh

进入控制台就没有问题了。

2. 修改nova配置文件/etc/nova/nova.conf

#--libvirt_type=kvm

更改为qemu

--libvirt_type=qemu

3. 修改/etc/nova/nova-compute.conf

--libvirt_type=qemu

4. 重新启动nova-compute,如果libvirt报错

/var/log/libvirt/libvirtd.log

Cannot find 'pm-is-supported' in path: No such file or directory

报错后需要安装

apt-get install pm-utils

2.5、noVNC不能连接到实例,提示“Connection Refuesd”,什么原因
可能是控制节点在收到vnc请求的时候,无法解析计算节点的主机名,从而无法和计算节点上的实例建立连接。
另外可能是,当前浏览器不支持或者不能访问,将计算节点的ip和主机名的对应关系加入到控制节点的/etc/hosts文件中。


三、存储、卷问题-volume、lvm

3.1、OpenStack中创建volume一直在creating,什么原因

主要因为nova-volume没有正常启动,可以

nova-manage service list

看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。

3.2、OpenStack中nova-volume服务不能启动,什么原因

主要因为没有nova-volumes卷组,或者iscsitarget服务没有启动(或者没有安装)。

1、vgdisplay

没有nova-volumes卷组,可以创建卷组和磁盘

$ dd if=/dev/zero of=/opt/nova-volumes.img bs=1M seek=100000 count=0
$ losetup -f /opt/nova-volumes.img
$ losetup -a
$ vgcreate nova-volumes /dev/loop0


记着启动nova-volume然后创建volume,否则下面仍然不能创建

$ service nova-volume restart

$ nova volume-create --display_name "volume1" 10


2、service iscsitarget status

1)没有安装iscsitarget,可以apt安装;

然后执行以下命令安装和设置为可以启动

apt-get install -y iscsitarget iscsitarget-dkms lvm2
sed -i -e 's/false/true/' /etc/default/iscsitarget
service iscsitarget start
service nova-volume start


2)状态为stop,可以start

service iscsitarget start


3)如果既没有nova-volumes卷组,也没有安装iscsitarget,切忌保证这两者都存在,然后重启nova-volume,再创建volume

有人安装iscsitarget并启动后就create,结果nova-volume并没有启动,所以问题依然存在;

有人创建nova-volumes,也没有重启nova-volume,也不能正常工作。


3.3、OpenStack中创建volume一直在creating,怎么停掉(stop)
主要因为nova-volume没有正常启动,可以
nova-manage service list
看看后面的状态,不是笑脸:-)而是xx。如果没有启动,请看下一条。


3.4、OpenStack中nova-volume执行出现问题,检查什么地方
主要因为nova-volume没有正常启动或者计算节点没有能找到target,可以检查以下这些问题。
nova-volume是否正常;控制点,详见问题3.2
iscsitarget是否开启;服务端
open-iscsi是否安装和开启;客户端
客户端(计算节点)iscsiadm discovery看看能不能找到存储服务;
分析nova-volume.log。


3.5、OpenStack中nova-volume管理target
控制节点查看target
tgtadm --lld iscsi --op show --mode target
建立target
sudo tgtadm --op new --lld=iscsi --mode=target --tid=1 --targetname=iqn.2010-10.org.openstack:volume-00000001

3.6、OpenStack中计算节点管理volume
查看session
sudo iscsiadm -m session
手动发现target
sudo iscsiadm -m discovery -t sendtargets -p IP:port
登入登出
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --login
sudo iscsiadm -m node -T targetname(iqn.2010-10.org.openstack:volume-00000004) -p 10.200.200.4:3260 --logout
sudo iscsiadm -m node -o [delete|new|update] -T targetname


四、OneStack安装问题

4.1、OpenStack能在普通的PC机上跑吗?

普通pc没有试过,这也不是它需要支持的对象。但是普通pc一样可以工作的。
官网的配置,只是对于稍有一定规模的部署(配置并不算高,甚至是服务器最基本的要求)
现在服务器基本都64位,但是它也指出了,32位的可以工作的,只是不能运行64位的操作系统实例,自己改一下镜像就可以。还有不支持vt技术的,我没有试过。
双网卡也不是必须的,一个对内,一个对外。可以更改配置。详见1.6单网卡安装。
其它的基本就是自由的。


4.2、OneStack简单安装需要改哪些地方
?

1、切换到root,oneStack.sh删除设置root密码、设置locale、设置apt这3段(为了方便刚安装新系统的用户加入的可选的步骤,setup_base.sh没有这3段)
2、设置ip等参数 OUT_IP 外网ip(注意这是相对于OpenStack?内部网络的) OUT_IP_PRE 外网ip前缀(脚本后面出现ip不用管,会被这个参数替换) FLOAT_IP 浮动ip
3、裸机的话qemu改成kvm (对于xen之类的未加入支持) VIRT_YPE
4、网络设置,会替换掉你原来的,不想替换就删掉这一段 设置cat写入interfaces文件(注意,那里面pre-up手动设置了网卡mac,不需要的自行去掉;单网卡去掉eth1的设置即可)
5、执行oneStack.sh 或者setup_base.sh(基本系统,没有添加镜像和实例,可以setup_test.sh)
其它没有需要更改的(数据库密码等自行更改无影响)。 里面有个image是从ubuntu官网下载,可能需要一些时间 (svn checkout,里面还有一些删除之类的工具)


4.3、OneStack单网卡安装需要改哪些地方?

除了4.2所述部分外

1)在配置interfaces时,去掉eth1部分;

2)后面nova.conf设置里面,eth1改为eth0(public_interface)。


4.4、OneStack多节点安装需要改哪些地方?

控制节点使用oneStack.sh,如果不需要安装nova-compute去掉即可;

计算节点执行addComputeNode.sh

注意nova.conf配置其余一样,只是
--vncserver_proxyclient_address=
--vncserver_listen=
应该是计算节点的ip。

4.5、OneStack安装后怎么清空nova数据,包括实例和volume等?

控制节点执行resetStack.sh clear,清空数据库;

再执行resetStack.sh重新初始化数据库。


五、镜像问题-image

5.1、OpenStack中可以使用windows吗

虚拟出来的实例基本与普通的主机一样,所以基本上所有系统都可以使用,制作相应的镜像即可。

5.3、OpenStack怎么制作Windows镜像

建立镜像文件
kvm-img create -f raw windowsxp.img 10G
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-22.iso
启动安装到镜像
kvm -m 1024 -cdrom winxp.iso -drive file=windowsxp.img,if=virtio,boot=on -drive file=virtio-win-0.1-22.iso,media=cdrom -boot d -nographic -vnc :0

可以vnc查看以及操作安装过程

vncviewer 192.168.139.50:5900

(注意,5900最后一位与vnc :0对应,如果端口占用可以改为1、2、3等,vncviewer 5901等)
上传镜像
glance add name="WindowsXP" is_public=true container_format=ovf disk_format=raw < windowsxp.img


5.3、OpenStack怎么制作CentOS镜像

创建镜像

kvm-img create -f raw centos.img 5G

启动安装
kvm -m 2048 -cdrom CentOS-6.2-i386.iso -drive file=centos.img -boot d -net nic -nographic -vnc :1
操作安装过程
vncviewer 192.168.139.50:5901
再次启动安装好的镜像
kvm -m 2048 -drive file=centos.img -boot c -net nic -nographic -vnc :1

在虚拟机内部安装ssh,以便可以远程登录实例

yum install openssh-server

service sshd start (虚拟机内部)

chkconfig sshd on (不然,重启又不能ssh) 

上传镜像
glance add name="CentOS6.2" is_public=true container_format=ovf disk_format=raw < centos.img
要使虚拟机内部访问外网,需要在节点上执行

sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1 (vi /proc/sys/net/ipv4/ip_forward)

5.4、OpenStack怎么Linux登录ubuntu

官方提供的镜像需要使用密钥登录,也就是启动实例的时候使用的那个key(不用key启动ubuntu实例是没法ssh登录的)

ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2

在外网登录使用floating ip;

要访问外网注意设置节点上

sysctl -w net.ipv4.ip_forward=1

5.5、OpenStack怎么novnc浏览器访问登录ubuntu

在能使用vnc的地方,浏览器输入地址可以访问系统。

控制节点上

nova get-vnc-console 4 novnc

得到一个url,例如

+-------+-------------------------------------------------------------------------------------+
| Type | Url |
+-------+-------------------------------------------------------------------------------------+
| novnc | http://192.168.139.50:6080/vnc_auto.html?token=ca2455e8-fcc9-447f-92ee-853b92b37cdb |
+-------+-------------------------------------------------------------------------------------+

浏览器中使用这个url访问。


5.6、OpenStack怎么Windows登录ubuntu

下载启动实例的时候使用的那个key(不用key启动ubuntu实例是没法ssh登录的)

ssh登录工具里面选择key认证方式,auth里面上传这个private key

然后ssh登录,输入用户名ubuntu,直接登录。

5.7、OpenStack可以密码登录ubuntu而不是密钥吗

默认的镜像通过注入密钥的方式,ssh是需要密钥认证的方式登录,不允许密码登录的;

设置别的用户比如root密码后,在vnc里面可以通过密码登录;

可以自己制作镜像,参考制作CentOS镜像那样,使用密码登录。


六、实例问题-instance

6.1、OpenStack中实例是什么意思

简单的说,一个实例就是一个跑着操作系统的虚拟机。

6.2、OpenStack中实例怎么访问

在OpenStack内部,可以使用内网ip(fixed ip)访问。

外部,可以使用floating ip访问。

注意设置相应的访问规则,比如ssh端口,防火墙规则,ipv4_forward等。

可以vnc访问,vnc浏览器访问。

Linux系统可以ssh登录,桌面系统也可以安装xrdp实现远程桌面访问;

Windows系统可以远程桌面连接。

6.3、OpenStack中怎么管理实例

可以web端(dashboard)访问,图形化操作管理。也可以使用api,如下:

## 1:上传实例
wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img

查看镜像
nova image-list

## 2:创建flavor

nova flavor-list
nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1
## 3、创建虚拟机
nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01

查看实例
nova show cloud01

实例日志
nova console-log cloud01

##绑定浮动ip
nova floating-ip-create
nova add-floating-ip cloud01 192.168.139.226
nova show cloud01

或者直接
nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`
nova list
nova show cloud01
### 查看vm
nova list
### 删除vm,vm的ID或者名字
nova delete 10d1bc19-b2c4-4eee-a5c8-b256bda3f343

nova delete cloud01

## 4、默认实例登录
ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2
ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2


6.4、怎么新建密钥,怎么使用密钥

mkdir /root/ssh_clients/

创建密钥:ssh-keygen -t rsa -f /root/ssh_clients/key01

上传密钥:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

启动实例时分配密钥:nova keypair-add --pub_key /root/ssh_clients/key01.pub key01

使用密钥登录:ssh -i /root/ssh_clients/key01 ubuntu@192.168.139.225

删除keypair:nova keypair-delete

6.5、OpenStack中nova-compute启动失败什么原因

分析/var/log/nova/nova-compute.log日志。

容易出现的问题是,volume问题或者virt问题。

6.6、OpenStack中无法连接实例

无法连接到虚拟机实例的时候,应该检查如下的环节:
1) 公共IP是否已经绑定到了公共网卡接口上,ip addr
2) 查看iptable的设置,NAT规则是否设置正确,iptables-save
3) 检查安全组设置,euca-describe-groups

6.7、OpenStack中compute和实例需要注意的问题

1)虚拟机在build阶段时,不要进行重启操作,否则会出现kernel panic现象。

nova-manage create用来创建虚拟机运行时所需的内网,并且将相关的IP地址记录到fixed_ips数据表中。但是,当调用nova-manage delete 时,并不会自动的删除fixed_ips中的内容,需手动进行删除。


2)计算节点的操作系统为32位,因此,kvm上启动的虚拟机内存受到限制,比如无法创建内存大于4G的虚拟机。

3)虚拟机实例已经绑定了浮动IP,并且控制节点的对外网络接口上也发现了相关的浮动IP地址,但是通过ssh却无法进行连接。
解决:在dashboard中添加相关的安全规则。security group -> edit rules
添加:icmp -1 -1 0/0;tcp 22 22 0/0

在OneStack里面,已经把端口全部启动1~65535,可以更改为只开放ssh、imcp等部分。

4)nova的配置文件默认存放在/etc/nova/nova.conf中,其中涉及到nova各个参数的配置。
nova所有的参数可以通过nova-api --help进行查看。

七、系统及其它

7.1、查看日志

OpenStack的nova相关日志都在/vr/log/nova下面,一般多数是nova出现问题,包括网络、存储、compute、虚拟化等。

volume相关问题查看nova-volume.log

compute和libvirt相关问题查看nova-compute.log

查看实例日志,web里面有这样一个菜单,api里面使用nova console-log cloud01


7.2、怎么实现高可用性的部署

请参考文章《构建OpenStack的高可用性(HA,High Availability)》,里面给出了一些大概的方案。


7.3、OpenStack有哪些资料,新手去哪里学习

动手实践,阅读wiki、文档,参与社区,反馈问题,勤动脑。以下为部分网址:

国内技术资料较少,多为安装管理相关问题,或者媒体资料。对于swift有一些技术分析的资料,其它较少。

官方OpenStack www.openstack.org
国内OpenStack社区 www.openstack.org.cn

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文) http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin 
“OpenStack Documentation”team(文档、bug报告) https://launchpad.net/~openstack-doc
Quora上关于openstack的话题 http://www.quora.com/OpenStack
stackoverflow上关于openstack资源的讨论 http://stackoverflow.com/questions/5882333/good-tutorials-and-resources-for-openstack

高可用性
安装部署问题多Google,很多会链接到https://launchpad.net/别人的问答。以后可以把问题和解决方法抽象出来在《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》分享,希望少把时间浪费在安装和部署上。
 
from:http://blog.csdn.net/hilyoo/article/details/7746634
---------------
--------------------------------'
 
 
 
发表评论:
载入中。。。

 
 
 

梦翔儿网站 梦飞翔的地方 http://www.dreamflier.net
中华人民共和国信息产业部TCP/IP系统 备案序号:辽ICP备09000550号

Powered by Oblog.