您的位置:首页 > 运维架构

VirtualBox中双虚拟机安装部署OpenStack指南

2012-08-30 19:22 671 查看
原文:http://blog.sina.com.cn/s/blog_8c38246401010wv4.html

VirtualBox中双虚拟机安装部署OpenStack指南(2012-01-13 20:06:59)

环境篇
  本方案是用VirtualBox虚拟两台服务器,在上面进行安装,其中一台做为主控服务器,安装glance,nova等主要功能,同时也充当一个计算节点node提供nova-compute服务,我们称之为Server1,另外一台做为计算服务器,只安装nova-compute服务,称为Server2。网络方面,本机位于局域网192.168.1.0中,通过192.168.1.1网关共享上网。

  先用VirtualBox生成两台服务器,分别命令为"OpenStack_Server1"和"OpenStack_Server2",配置选默认即可,操作系统选"Linux",版本选"Ubuntu (64bit)",内存建议选1G,硬盘建议32G。虚拟机创建后,还需要为每台服务器设置一下网络配置。首先,将网卡1"Adapter 1"的连接方式改为"Bridged Adapter"模式,接着再启动网卡2"Adapter 2",并将连接方式改为"Internal"模式。双网卡是为了更高效的传输数据,同时能够有效的分流内部控制数据,与外部网络数据。网卡1是用来连接外网的(在本例中将192.168.1.0当成外网),网卡2是用来连接内网的(本例中内网为
192.168.3.0)。因为内网只需要在各个虚拟服务器之间传输数据,所以将连接模式选为"Internal"。



  创建并配置好虚拟机后,直接在两台服务器上分别安装"ubuntu-11.10-server-amd64"版本。安装时统一指定登录用户名"localadmin",密码自定,设置eth0为主网卡,并且确保能够连接到互联网,在可选组件中,所以的组件都可以不选,最多只安装"Open SSH"即可。在安装Server1特别需要注意的是,官方建议不要用默认分区的办法,使用手动分区,并且为nova-volume服务专门创建一块LVM类型分区。

Server1
  本服务器,作为OpenStack的主控服务器,需要安装很多的组件,并且官方文档中也存在不少错误之处,我会一一为大家指出。
  在安装完成基本的Ubuntu操作系统后,更新组件到最新版本。运行如下命令:
  sudo apt-get update
  sudo apt-get upgrade
  安装bridge-utils:
  sudo apt-get install -y bridge-utils
  重启服务器,并登录系统。

网络设置
  修改/etc/network/interfaces文件如下:
  auto lo

  iface lo inet loopback

  auto eth0

  iface eth0 inet static

   address 192.168.1.102

   netmask 255.255.255.0

   broadcast 10.10.10.255

   gateway 192.168.1.1

   dns-nameservers 192.168.1.1

  auto eth1

  iface eth1 inet static

   address 192.168.3.1

   netmask 255.255.255.0

   network 192.168.3.0

   broadcast 192.168.3.255
  重启metwork
  sudo /etc/init.d/networking restart
NTP Server 设置
  NTP主要是为了在openstack系统内部各个服务器之间同步时间的一个服务。主控机跟网络时间服务器同步,其他机器跟主控机同步。安装命令如下:
  sudo apt-get install -y ntp
  安装后,修改配置文件/etc/ntp.conf如下:
  server ntp.ubuntu.com

  server 127.127.1.0

  fudge 127.127.1.0 stratum 10
  修改完成后,重启服务
  sudo /etc/init.d/ntp restart
数据库设置
  OpenStack支持3种数据库,Mysql,PostgreSql,SQLite,测试环境一般用SQLite,不过本文采用MySql方式。
  首先安装mysql
  sudo apt-get install -y mysql-server
  为mysql的root用户创建一个密码"mygreatsecret",此处与官方文档保持一致
  打开配置文件 /etc/mysql/my.cnf ,修改绑定地址,并添加一个参数如下:
  bind-address = 0.0.0.0
  skip-name-resolve
  skip-name-resolve参数非常重要,如果不添加的话,当使用ip地址连接mysql时,会导致验证时间较长,超过15秒,而这会导致nova-manage的某些操作报"ConnectTimeOut"错误。  官方遗漏
  安装python-mysqldb组件,命令如下
  sudo apt-get install -y python-mysqldb
  python-mysqldb这个组件是必须要安装的,否则启动glance服务会报错。官方遗漏
  重启服务
  sudo restart mysql
Glance安装设置
  Glance用来管理运行实例所需要的操作系统镜像。安装命令如下:
  sudo apt-get install -y glance
  Glance默认使用SQLite做为数据库管理系统,如果用的是这种数据库,则不需要设置,因为本例中使用Mysql,所以需要做如下操作:  
  sudo mysql -uroot -pmygreatsecret -e 'CREATE DATABASE glance;'
  sudo mysql -uroot -pmygreatsecret -e 'CREATE USER glancedbadmin;'
  sudo mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON glance.* TO'glancedbadmin'@'%' ;"
  sudo mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'glancedbadmin'@'%' =

PASSWORD('glancesecret');"
  上面的操作,主要是创建了一个数据库glance,一个操作员glancedbadmin,对操作员授权及设置密码,操作完成后,还需要修改glance的配置文件 /etc/glance/glance-registry.conf 如下:
  sql_connection = mysql://glancedbadmin:glancesecret@192.168.1.102/glance
  修改完成后,重启服务
  sudo restart glance-registry
  如果服务启动不成功,很大可能是因为数据库连接没有设置正确,或者操作员没有创建或者没有授权,此时可以直接在命令行连接mysql测试一下操作员是否能正常登录。还有一种可能是没有安装python-sqldb组件,参见前面"数据库设置"部分。
Nova安装配置
  首先,安装所需组件:
  sudo apt-get install -y rabbitmq-server nova-common nova-doc python-nova nova-api nova-network nova-volume nova-objectstore nova-scheduler nova-compute
  安装euca2ools组件包:
  sudo apt-get install -y euca2ools
  安装unzip:
  sudo apt-get install -y unzip
  设置数据库,以便nova使用,需要运行以下命令:
  sudo mysql -uroot -pmygreatsecret -e 'CREATE DATABASE nova;'
  sudo mysql -uroot -pmygreatsecret -e 'CREATE USER novadbadmin;'
  sudo mysql -uroot -pmygreatsecret -e "GRANT ALL PRIVILEGES ON nova.* TO'novadbadmin'@'%' ;"
  sudo mysql -uroot -pmygreatsecret -e "SET PASSWORD FOR 'novadbadmin'@'%' =PASSWORD('novasecret');"
  上述命令主要是创建了一个数据库nova,一个操作员novadbadmin,对操作员授权及设置密码,操作完成后,还需要修改nova的配置文件 /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

  --verbose

  --s3_host=192.168.1.102

  --rabbit_host=192.168.1.102

  --cc_host=192.168.1.102

  --nova_url=http://192.168.1.102:8774/v1.1/

  --fixed_range=192.168.0.0/16

  --network_size=8

  --routing_source_ip=192.168.1.102

  --sql_connection=mysql://novadbadmin:novasecret@192.168.1.102/nova

  --glance_api_servers=192.168.3.1:9292

  --image_service=nova.image.glance.GlanceImageService

  --iscsi_ip_prefix=192.168.

  --vlan_interface=br100
  --public_interface=eth0
  上面的红色代码需要注意,在官方文档中glance_api_servers地址是错误
  修改完成后,再安装iscsitarget,并设置为启用状态,并重启服务,命令如下:
  sudo apt-get -y install iscsitarget iscsitarget-dkms
  sudo sed -i 's/false/true/g' /etc/default/iscsitarget
  sudo service iscsitarget restart
  如果启动服务失败,可以尝试 sudo restart iscsitarget方式。
  创建物理分卷:
  sudo pvcreate /dev/sda5
  此处可能每个人的情况不同,一般都是 /dev/sda5 or /dev/sda6
  创建分卷组:
  sudo vgcreate nova-volumes /dev/sda5
  修改nova配置目录及文件权限和所有者:
  sudo chown -R root:nova /etc/nova

  sudo chmod 644 /etc/nova/nova.conf
  重启所有相关服务:
  sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restartnova-scheduler; sudo restart nova-volume; sudo restart glance-api; sudo
restart glance-registry
  在数据库中创建nova数据库结构:
  sudo nova-manage db sync
  分配私有网络IP池:
  sudo nova-manage network create private 192.168.4.0/24 1 256




  如果没有在前面mysql配置文件中添加skip-name-resolve参数,这里就会报上图的错,这个错误害我浪费了不少时间,才找到原因。就是因为mysql连接时,不加参数,导致连接时间需要15秒以上,而nova-manage的连接超时时间是10秒,所以导致一直报错。
  分配公网IP池:
  sudo nova-manage floating create --ip_range=192.168.1.224/27
  创建nova管理用户及项目:
  sudo nova-manage user admin novaadmin
  sudo nova-manage project create proj novaadmin
  重启所有相关服务:
  sudo restart libvirt-bin; sudo restart nova-network; sudo restart nova-compute; sudo restart nova-api; sudo restart nova-objectstore; sudo restart nova-scheduler; sudo restart nova-volume; sudo restart glance-api; sudo restart
glance-registry
  创建证书,并做相应配置:
  mkdir /home/localadmin/creds
  sudo nova-manage project zipfile proj novaadmin /home/localadmin/creds/novacreds.zip
  cd /home/localadmin/creds

  unzip novacreds.zip

  sudo chown localadmin:localadmin /home/localadmin/creds/ -R
  查看相关密钥:
  sudo nova-manage user exports novaadmin
  将输出的密钥与novarc文件中的密钥进行对比,如果不同,则修改novarc文件,并重新生成:
  export EC2_ACCESS_KEY=c043916c-9a0c-4f91-ad6c-4b30908b6c77

  export EC2_SECRET_KEY=d0ac688e-02f3-48f3-b758-96d886461ace
  是否等于 novarc文件中
  export EC2_ACCESS_KEY="c043916c-9a0c-4f91-ad6c-4b30908b6c77:proj"
  不同时,修改novarc并重新生成:
  source /home/localadmin/creds/novarc
  
  至此,Server1安装配置全部完成,你可以使用如下命令,查看是否运行正常:
  euca-describe-availability-zones verbose




  如果系统运行正常的话,则如上图显示类似,共有4个功能模块(network,compute,scheduler,volume),运行在Server1上。
  Swift部分将在以后进行安装测试,并给大家分享,它并非OpenStack云计算的必要组件,所以本文不涉及。

Server2
  Server2只是用来做为计算节点的,所以安装时非常简单。
  在安装完成基本的Ubuntu操作系统后,更新组件到最新版本。运行如下命令:
  sudo apt-get update
  sudo apt-get upgrade
  安装bridge-utils:
  sudo apt-get install -y bridge-utils
  重启服务器,并登录系统。
网络设置
  修改/etc/network/interfaces文件如下:
  auto lo

  iface lo inet loopback

  auto eth0

  iface eth0 inet static

   address 192.168.1.103

   netmask 255.255.255.0

   broadcast 10.10.10.255

   gateway 192.168.1.1

   dns-nameservers 192.168.1.1

  auto eth1

  iface eth1 inet static

   address 192.168.3.2

   netmask 255.255.255.0

   network 192.168.3.0

   broadcast 192.168.3.255
  重启metwork
  sudo /etc/init.d/networking restart
NTP Client 设置
  安装命令如下:
  sudo apt-get install -y ntp
  Server2的NTP 是用来跟Server1同步的,设置上稍有不同,修改配置文件/etc/ntp.conf如下:
  server 192.168.1.102

  修改完成后,重启服务
  sudo /etc/init.d/ntp restart
Nova安装配置
  首先,安装所需组件:
  sudo apt-get install -y nova-common python-nova nova-compute vlan
  安装euca2ools组件包:
  sudo apt-get install -y euca2ools
  安装unzip:
  sudo apt-get install -y unzip
  修改nova的配置文件 /etc/nova/nova.conf 如下(和Server1上的文件基本类似):
  --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

  --verbose

  --s3_host=192.168.1.102

  --rabbit_host=192.168.1.102

  --cc_host=192.168.1.102

  --network_size=8

  --routing_source_ip=192.168.1.102

  --sql_connection=mysql://novadbadmin:novasecret@192.168.1.102/nova

  --glance_api_servers=192.168.3.1:9292

  --image_service=nova.image.glance.GlanceImageService

  --iscsi_ip_prefix=192.168.

  --vlan_interface=br100
  重启相关服务:
  sudo service restart nova-compute

  至此Server2的配置也已经全部完成。此时我们再在Server1上检查一下openstack运行状态,输入命令
  euca-describe-availability-zones verbose




  你会发现,Server2已经加入到云里了,因为Server2是计算节点,所以他上面只运行了一个compute服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: