OpenStack NOVA 安装手册


NOVA 安装手册 目录 chapter1 System Requirements chapter2 NOVA 手动安装步骤 2.1 安装 nova 相关软件包 2.2 安装 MySQL 数据库 2.3 进行网络环境配置 2.4 创建工程并配置环境 2.5 上传镜像并运行一个实例 chapter3 配置Glance镜像服务器 chapter4 安装 Dashboard 远程操作界面 chapter5 使用Puppet部署OpenStack环境 chapter6 FAQ 常见问题及解决办法 chapter1 System Requirements y 硬件: x86 系列机器,AMD 处理器 y 操作系统:: 安装 Ubuntu 10.04(LTS)版本 y 网络: 官网推荐 1000 Mbps,提供 nova-network 服务的节点需要配置两块网卡。 OpenStack 支持以下三种网络架构:flat,DHCP,VLAN&DHCP y 数据库: 采用 MySQL 数据库 y 权限: 需要使用 root 权限进行安装 chapter2 NOVA 手动安装步骤 2.1 安装 nova 相关软件包 y 下载 python 软件包,完成后需要 run update: sudo apt-get install python-software-properties sudo add-apt-repository ppa:nova-core/release sudo apt-get update y 安装 Message Queue Server,Rabbit MQ 及 python dependencies: sudo apt-get install -y rabbitmq-server sudo apt-get install –y python-greenlet python-mysqldb y 根据节点的不同类型,选择安装所需要的 nova-packages 和 dependencies: sudo apt-get install -y nova-common nova-doc python-nova nova-api nova- network nova-objectstore nova-scheduler nova-compute y 安装 euca2ools 工具包: sudo apt-get install –y euca2ools unzip 2.2 安装 MySQL 数据库 OpenStack Nova 的数据库有多种选择如 MySQL 和 PostgreSQL,参照官方 手册这里选用 MySQL。另外,数据库需要安装在 controller 节点上。 y 安装 mysql-server : bash MYSQL_PASS=nova NOVA_PASS=notnova cat <select id, cidr from networks; >exit #mkdir vlan #cd vlan #vi update_networks.sh 将下面的内容添加进去: if [ -z $1 ]; then echo "You need to specify the vlan to modify" fi if [ -z $2 ]; then echo "You need to specify a network id number (check the DB for the network you want to update)" fi VLAN=$1 ID=$2 cat > vlan.sql << __EOF_ update networks set vlan = '$VLAN' where id = $ID; update networks set bridge = 'br_$VLAN' where id = $ID; update networks set gateway = '10.1.$VLAN.7' where id = $ID; update networks set dhcp_start = '10.1.$VLAN.8' where id = $ID; update fixed_ips set reserved = 1 where address in ('10.1.$VLAN.1','10.1.$ VLAN.2','10.1.$VLAN.3','10.1.$VLAN.4','10.1.$VLAN.5','10.1.$VLAN.6','10.1.$ VLAN.7'); __EOF_ 然后执行这个脚本文件: #bash update_networks.sh 2.4 创建工程并配置环境 y 查看各项服务是否成功启动: nova-manage service list y 创建群组并授权: sudo addgroup nova chown -R root:nova /etc/nova chmod 640 /etc/nova/ nova.conf y nova运行环境配置: /usr/bin/nova-manage db sync /usr/bin/nova-manage user admin 创建一个cloud管理员用户 /usr/bin/nova-manage project create 创建一个工程 /usr/bin/nova-manage network create 参考配置如下: /usr/bin/nova-manage db sync /usr/bin/nova-manage user admin bch 此时会产生密钥: export EC2_ACCESS_KEY=6aa51bfd-6bfb-4a94-bf55-3c4bacc4d59a export EC2_SECRET_KEY=aba78372-8a22-460c-af7e-d6da1ebf2eef /usr/bin/nova-manage project create bchproject bch 为工程创建网络(如果之前有的话最好先删除): /usr/bin/nova-manage network create 172.16.0.0/25 1 128 100 注意: (1)这里的网络参数要和 nova.conf 文件保持一致。 (2)172.16.0.0/25[CIDR网络号(fixed range)] 各参数解释: 1[子网个数] 128[每个子网IP数(network size)] 100[起始vlan号](若为DHCP模式,则不设置) 几点说明: CIDR网络号是指所有可能使用到的网段,最终创建出来的网段的子网掩码 是根据network size来确定的,子网个数表示创建出来的网段有多少个,起始vlan 号是指创建出来的第一个网段使用的vlan号,之后的网段会顺次累加。 示例: 执行nova-manage network create 172.16.0.0/16 3 256 100命令就会创建出: 172.16.0.0/24vlan100 172.16.1.0/24vlan101 172.16.2.0/24vlan102 y 创建用户授权文件: mkdir –p /root/creds /usr/bin/python /usr/bin/nova-manage project zipfile $NOVA_PROJECT $NOVA_ PROJECT_USER /root/creds/novacreds.zip (为工程、用户创建授权文件并保存为novacreds.zip) 参考配置如下: mkdir –p /root/creds /usr/bin/python /usr/bin/nova-manage project zipfile bchproject bchproject _bch /root/creds/novacreds.zip 在home directory下进行解压,并source unzip /root/creds/novacreds.zip -d /root/creds/ 将novarc中变量写入.bashrc cat /root/creds/novarc >> ~/.bashrc 将.bashrc中环境变量写入当前环境变量 source .bashrc y 配置相关网络权限: 允许ping实例(instance) : euca-authorize -P icmp -t -1:-1 default 允许ssh实例: euca-authorize -P tcp -p 22 default 注意: 不能ping或ssh时候,可以使用以下命令: killall dnsmasq service nova-network restart 允许 dhcp 包通过: euca-authorize -P tcp -p 67-68default euca-authorize -P udp-p 67-68default 2.5 上传镜像并运行一个实例 y 下载一个镜像模板: image="ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz" wget http://smoser.brickies.net/ubuntu/ttylinux-uec/$image y 发布镜像: uec-publish-tarball $image mybucket y 为ssh创建安全认证 : euca-add-keypair mykey > mykey.priv chmod 600 mykey.priv y 查看镜像 : euca-describe-images y 运行instance euca-run-instances $emi -k mykey -t m1.tiny 上述命令表示启动一个密钥为 test、类型为 m1.tiny(由-t 参数指定)的实例,类 型默认有 5 种,m1.tiny 类型拥有 1 个 CPU 和 512MB 内存,类型可以用命令 nova-manage instance_type list 来查看 注意:$emi 用实际的代替,如:ami-40e9c745 y 查看我们虚拟机的ip地址 : euca-describe-instances ssh登录: (输入查询到的ip地址): ssh -i mykey.priv root@10.50.5.131 y 关闭instance: euca-terminate-instances i-00000001 chapter3 配置Glance镜像服务器 y 安装Glance节点: #sudo apt-get update #sudoapt-get install python-software-properties -y #sudo add-apt-repository ppa:nova-core/release #sudo apt-get update #apt-get install euca2ools unzip 添加Glance ppa源: #sudo add-apt-repository ppa:glance-core/release #apt-get update 安装Glance server : #apt-get install glance y 配置 glance 服务器的镜像存储位置: vi /etc/glance/glance.conf 更改其中 filesystem_store_datadir=这一项的内容即可指定镜像文件的存储位置 y 确认镜像文件存储的目录存在并且权限正确: glance服务安装之后,会在ubuntu系统中创建一个名为glance的用户,glance 服务会以用户glance的身份启动,所以一切glance服务需要操作的文件和目录的 权限都要设给glance用户,否则会出问题。 mkdir -p /mnt/raid/images/ 创建目录/mnt/raid/images/ cd /mnt/raid 进入目录/mnt/raid/ chown glance:root images 将images的owner改为glance y 重启 glance-api 服务使修改生效: service glance-apirestart chapter4 Dashboard 远程操作界面安装 参照官网目前发布的 Dashboard 版本的安装文档,适用于 Cactus release 版本。 y Requirements: 1. Dashboard 需要安装在提供 nova-api 服务的节点上。 2. 创建好 project,得到相关认证信息如 EC2 Access Key,EC2 Secret Key 等。 3. 安装 Python 2.6 y Dashboard 安装步骤: 1. 安装 bazaar 用于下载 Launchpad 上的所需软件包 sudo apt-get install -y bzr sudo easy_install virtualenv 2. 从 bzr 库中下载 Dashboard 的安装文件 sudo bzr init-repo sudo bzr branch lp:openstack-dashboard -r 46 /opt/osdb 运行脚本文件 run_tests.sh ,进行测试安装 cd /opt/osdb sudo sh run_tests.sh cd openstack-dashboard 3. 改写配置文件 sudo vi /opt/osdb/openstack-dashboard/local/local_settings.py 参考配置如下: 注意: a. 相关参数可以在 novarc 文件中找到。 b. NOVA_ACCESS_KEY 后面是 project 的名称而不是用户名。 4. 创建数据库,设置 Dashboard 登录界面时所用的用户和密码 sudo tools/with_venv.sh dashboard/manage.py syncdb 5. 安装成功的话,就可以登录到 Dashboard 上了 cd /opt/osdb/ openstack-dashboard sudo tools/with_venv.sh dashboard/manage.py runserver 10.50.4.22:8000 在 chrome 浏览器下,输入 http://10.50.4.22:8000 即可登录到 Dashboard 操作界面 了。 y VNC 安装步骤: 1. 进入 Dashboard 安装的目录下 cd /opt/osdb 2. 从 github 中下载 noVNC 版本的安装文件 git clone https://github.com/openstack/noVNC.git 3. 配置 nova.conf 文件参数 sudo vi /etc/nova/nova.conf 参考配置如下: 4. 运行 vncproxy sudo /usr/bin/python /usr/bin/nova-vncproxy --flagfile=/etc/nova/nova.conf --logfile=/var/log/nova/nova-vncproxy.log Dashboard 操作界面中,选择需要操作的 instance,点击 VNC 按钮,即可进入页 面操作 chapter5 使用Puppet部署OpenStack环境 y 部署环境介绍: omni-volume 10.50.4.9 omni-controller 10.50.4.22 omni-rabbitmq 10.50.4.23 omni-network 10.50.4.24 omni-compute1 10.50.4.25 omni-compute2 10.50.4.28 omni-compute3 10.50.4.29 omni-compute4 10.50.4.30 omni-glance 10.50.7.2 nat-server&gateway 10.50.7.254 y 设置域名解析 安装域名解析服务dnsmasq: sudo apt-get install dnsmasq 设置域名解析: 在/etc/hosts文件中添加解析条目 10.50.4.9 Omni-Volume 10.50.4.22 Omni-Controller 10.50.4.24 Omni-Network 10.50.4.25 Omni-Compute1 10.50.4.28 Omni-Compute2 10.50.4.29 Omni-Compute3 10.50.4.30 Omni-Compute4 10.50.7.2 Omni-Glance 重启dnsmasq服务使解析生效: sudo service dnsmasq restart y 给每个节点进行相关配置 1. 设置主机名: 编辑/etc/hosts文件,修改为(以Omni-Controller节点为例): 127.0.0.1 localhost 10.50.4.22 Omni-Controller 编辑/etc/hostname文件,修改为(以Omni-Controller节点为例): Omni-Controller 修改/etc/resolv.conf文件,若其中有search=****字段,则说明该主机曾设置过域 名,将该字段删去,仅保留域名解析服务器相关字段。 示例: Omni-Controller节点上的/etc/resolv.conf文件改为:nameserver 10.50.7.254 (PS.事实上每个节点的resolv.conf都一样) 2. 设置sudo命令的无密码(nopasswd)使用权限: 使用puppet来批量部署nova时,脚本会使用某一用户ssh登陆需要部署的主机 进行相关操作,需要给该用户设定为不需要输入密码就能执行sudo命令才能顺利 完成部署,否则脚本将无法执行。 此部署过程中使用nova这个用户来进行部署,所以要给nova设置sudo的 nopassword权限。编辑/etc/sudoers文件(警告:谨慎操作,对该文件编辑不当可能 会造成用户权限紊乱,导致系统无法使用),在文件结尾加上: nova ALL=(ALL) NOPASSWD:ALL 注意: 一定要在文件结尾处加,sudoers文件的语句规则是后面定义的规则可以覆盖前面 定义的规则,若不在文件结尾处加会导致规则不生效。 使用vi编辑时,还需注意到,保存文件的时候应该使用:wq!命令,因为/etc/sudoers 是一个只读文件,需要强制写入。 y 配置SSH无密码登录 配置SSH,使puppet服务器能不要密码登陆所有待安装节点以及puppet server本 身。 方法: 创建公钥私钥对(public and private key pair),并将其注册到所有待安装节点和 puppet服务器上。 注意: 注册公钥私钥对的时候(ssh-copy-id命令),需要注意执行该命令的用户,若是在 root用户权限下注册key的话,需要在运行脚本时也使用root用户;即之后执行安 装脚本的用户和注册公钥私钥对的用户要一致。 创建公钥私钥对: ssh-keygen -t rsa -N’’ -f ~/.ssh/id_rsa(此处也可以不将key保存为id_rsa,可以命 名为其他的名称,但下一步的操作也将相应变化) 注册公钥私钥对: root@Omni-Glance:~# ssh-copy-id nova@Omni-Controller root@Omni-Glance:~# ssh-copy-id nova@Omni-Network root@Omni-Glance:~# ssh-copy-id nova@Omni-Compute1 root@Omni-Glance:~# ssh-copy-id nova@Omni-Compute2 root@Omni-Glance:~# ssh-copy-id nova@Omni-Compute3 root@Omni-Glance:~# ssh-copy-id nova@Omni-Compute4 root@Omni-Glance:~# ssh-copy-id nova@Omni-Volume root@Omni-Glance:~# ssh-copy-id nova@Omni-Glance 这里nova是指ubuntu的用户名,要与之前设置nopasswd权限的用户名一致 (以上操作在puppet服务器上执行) y 设置nova的ppa源: (在所有要安装的节点上执行) sudo apt-get install python-software-properties 安装python-software-properties,否则不能执行下一条命令 sudo add-apt-repository ppa:nova-core/release 添加nova的ppa源 sudo apt-get update 更新软件列表 y deploy前特殊操作 说明: deploy的脚本在安装network节点的时候,会先终止network节点上的dnsmasq服 务,但一般刚装好的ubuntu系统是没有这个服务的,所以脚本会在这里报错,我 们需要预先给network节点安装dnsmasq服务 在要安装network节点的机器上执行:sudo apt-get install dnsmasq y 下载deployment tool并配置 在用来做puppet server(这里我用的是Omni-Glance)的机器上执行: wgethttp://launchpad.net/nova-deployment-tool/cactus/cactus1.1/+download/nov a-deployment-tool-cactus.tgz tar xzvf nova-deployment-tool-cactus.tgz 将deployment tool下载下来并解压缩 : cd DeploymentTool 进入DeploymentTool目录 编辑DeploymentTool目录中的/conf/deploy.conf文件来配置DeploymentTool deploy.conf。 文件参考配置如下: [default] puppet_server=Omni-Glance//用来做puppet服务器的机器的域名 ssh_user=nova//DeploymentTool部署过程中使用的ssh用户名 [nova]//安装nova的相关设置 nova_api=Omni-Controller//nova-api安装的地点 nova_objectstore=Omni-Controller//nova-objectstore安装的地点 nova_compute=Omni-Compute1,Omni-Compute2,Omni-Compute3,Omni-Compute4 nova_scheduler=Omni-Controller//nova-schedule安装的地点 nova_network=Omni-Network//nova-network安装的地点 nova_volume=Omni-Volume//nova-volume安装的地点 euca2ools=Omni-Controller//euca工具安装的地点 (以下设置将会影响到/etc/nova/nova.conf) mysql=Omni-Controller//设置mysql数据库的地址 glance_host=Omni-Glance//设置glance服务器的地址 libvirt_type=kvm//设置hypervisor的类型 network_manager=nova.network.manager.VlanManager//设置网络类型 image_service=nova.image.glance.GlanceImageService//这只镜像服务类型 network_interface=eth0//设置将要使用网卡(会影响到nova.conf中--flat_interface 和--vlan_interface的内容) network_ip_range=172.16.0.0/24//设置网络(单个工程) volume_group=omni-volume//这个涉及到之后Volume节点配置,volume节点上使 用lvm将配置一个volume group,要与这里的设置相符合 fixed_range=172.16.0.0/16//设置网络(所有工程) network_size=256 [glance]//安装glance的相关设置 glance=Omni-Glance//glance的安装地点 default_store=file//配置glance所使用的存储方式 { [swift]//安装swift的相关设置,我的节点机群不用swift,所以我这一段整段删除 了 swift_proxy=ubuntu7 swift_auth=ubuntu7 swift_storage=ubuntu7 account=system username=root password=testpass storage_path=/srv/node storage_dev=sdb1 ring_builder_replicas=1 super_admin_key=swauth } y 部署 在DeploymentTool目录下执行: python deploy.py install y 一些Tips: 1. 脚本的其他一些操作: 1) 卸载云计算体系: pythondeploy.py uninstall 2) 先卸载、再安装、最后测试云计算体系: pythondeploy.py all 3) 先卸载、再安装、最后测试单个服务: python deploy.py all nova python deploy.py all glance python deploy.py all swift 2. Network节点部署完毕后,需要配置其上的dnsmasq服务开机不自动启动,否则 会造成nova-network服务自动启动失败,可用以下命令关闭dnsmasq的自动启动: sudo update-rc.d -f dnsmasq remove chapter5 FAQ 常见问题及解决办法 y RabbitMQ 安装后无法正常启动: 解决办法: 方法一: cd /var/lib/rabbitmq/mnesia/rabbit rm rabbit_persister.LOG persister.LOG是在RabbitMQ启动后自动生成的较大的一个文件,由于未安装 mysql-server,因此这会产生如上错误,只要把这个文件手动删除就可以了。 方法二: 先安装 mysql-server,后进行配置。 y MySQL的初始密码问题 : ERROR 1045 (28000): Access denied for user'root'@'localhost'(using password: YES) 解决办法: 重新设定MYSQL密码 # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & #mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root'; mysql> FLUSH PRIVILEGES; mysql> quit # /etc/init.d/mysql restart # mysql -uroot -p Enter password: <输入新设的密码 newpassword> y 查看nova-manage service list时,服务状态enabled,但显示XXX: 表明当前用户权限不对,应改为root权限下执行。 解决办法: 修改network节点配置文件: sudo vi /etc/nova/nova.conf 将执行用户由nova改为root,修改后reboot,再次查看nova-manage service list y 查看nova-manage service list时,network仍显示XXX: 解决办法: 情况一: 查看nova-manage network list ,检查网段设置是否正确。 情况二: 查看log日志,错误信息如下: 执行 update-rc.d -f dnsmasq remove ,并重启 y 执行euca-****相关命令时提示错误: 情况一: 错误提示为: EC2_ACCESS_KEY environment variable must be set. Connection failed 解决办法: 这种情况是典型的没有设置euca认证的相关环境变量所制,重新source一次 novarc即可解决。 情况二: 错误提示为: Warning: failed to parse error message from AWS: :1:0: syntax error EC2ResponseError: 403 Forbidden 403 Forbidden Access was denied to this resource. 解决办法: 这种情况是由于souce错了novarc,导致访问被euca2ools拒绝,找到正确的novarc 和证书,重新source即可解决 y 运行instance后instance无法获取metadata数据: 问题现象: 在controller节点上执行euca-get-console-output i-********命令来查看,无法获取 metadata数据时可以看到: wget: can't connect to remote host (169.254.169.254): Connection refused (metadata获取的机理详细参照范鸿博写的文档,这里仅列出解决办法) 解决办法: step1 :确保metadata request包能顺利传给nova-api 使用DNAT将metadata request包的目的IP(dst ip)和目的端口(dst port)改为10.50. 4.22(nova-api所在的IP)和8773(nova-api监听的端口),我们用iptables规则来 实现这个转换: # iptables -t nat -A nova-network-PREROUTING -d 169.254.169.254/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.50.4.22:8773 注意: 该命令需要在nova-network服务启动之后再执行,否则会提示chain nova-network- PREROUTING不存在(这个chain会在nova-network服务启动后自动创建)。 step2 :确保metadata reply包能顺利传回给instance 在nova-api所在的节点(controller)上增加一条路由ip route add 172.16.0.0/16 via 10.50.4.24来使metadata reply包能顺利发送到instance上,同时network节点必须打 开IPv4 packet forward功能(怎么开请自己google)。 y 关于instance无法启动的相关问题: 这一类问题一般比较复杂,一般解决思路如下: 在controller节点上使用euca-describe-instance命令来查看instance的状态: 1. networking 情况一: instance还未分到IP 解决办法: 这种情况说明network节点上的networking过程没有完成,导致instance没有分到 IP,请查看network节点是否运行正常、nova-network服务是否启动、网桥是否建 立,必要时查询/var/log/nova/nova-network.log文件 情况二: instance已分到IP 解决办法: 既然IP已经分到,说明network节点上的networking过程已经结束,此时仍卡在 networking阶段说明运行instance的compute节点上网桥未创建成功,请查询 /var/log/nova/nova-compute.log文件确定故障原因(可能没有安装vlan的package 导致vlan interface无法创建) 2. fail to spawn 出现该问题时应查询compute节点上的/var/log/nova/nova-compute.log文件,这种 情况的成因很多,罗列如下: 情况一: CPU不支持VT技术导致kvm启动失败 解决方法:nova.conf中libvirt_type改为qemu 。 情况二: nova-compute服务的权限不够,导致创建iptables规则时失败 解决方法:改变nova-compute启动的用户为root,或者开通当前nova-compute服务 的宿主用户的sudo命令nopassword权限。 情况三: get image时出现问题,找不到镜像文件 解决方法:检查glance服务器,同时确保compute节点能正常地访问到glance节点。 y 网桥创建相关问题: 情况一:网桥没有自动创建 解决办法: step1 : 出现这种情况是因为flat_interface和vlan_interface当前处于down的状态,需要使 用 ip link set eth2 up 命令来激活网卡,再重启相关服务来解决问题。 step2 : 另外,eth2在开机之后默认是处于down的状态的,这同样会造成nova-network服 务和nova-compute服务在开机自动启动的过程中不能顺利创建网桥。因此需要在 /etc/network/interface 进行相关配置:把ip link set eth2 up语句加入 /etc/init/nova-network.conf文件中的pre-start script脚本中。 情况二:执行了上述的一些操作时网桥仍不能自动创建: 解决办法: 这时可以尝试着先run一个instance,因为一般情况下,nova-network服务和nova- compute是在run了instance之后才会启用ensure bridge脚本来自动创建网桥的。 y 发布镜像时报错: 现象: 解决办法: 重新source一下 source /root/creds/novarc y 安装好Dashboard后,远程登录时页面出现乱码: 解决办法: sudo vi /opt/osdb/openstack-dashboard/local/local_settings.py DEBUG这里默认是True,需要自己手动修改为False,否则登录界面会报错。
还剩26页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

499809608

贡献于2012-07-17

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf