nova的安装与配置

#安装openstack计算服务
登录到之前创建的controller节点,在上面安装所需软件包

vagrant@controller:/$ sudo apt-get -y install rabbitmq-server nova-api nova-conductor nova-scheduler nova-objectstore dnsmasq

对于多节点来说,必须依赖ntp来同步服务器之间的时间,下面来安装和配置ntp

sudo apt-get -y install ntp

编辑/etc/ntp.conf内容如下

server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 stratum 10

其中127.127.1.0是一个特殊的地址,表示ntp主服务器是与自身的系统时钟同步,fudge 127.127.1.0 stratum 10的作用是当联网时,将使用那些stratum值低于10的网络服务器,断网时使用10(这个值越高,优先级越低?)
然后重启sudo service ntp restart

接下来回到我们的物理机,用virtual box和vagrant创建一个虚拟机作为compute节点。编辑Vagrantfile文件如下:

#_*_ mode: ruby _*_
#vi:set ft=ruby :
nodes={
        'controller' =>[1,200],
        'compute' => [1,201],
}
Vagrant.configure("2") do |config|
        config.vm.box="/root/vagrant/box/precise64.box"
        #Forescout NAC workaround
        config.vm.usable_port_range=2800..2900
        nodes.each do |prefix, (count, ip_start)|
                count.times do |i|
                        hostname="%s" % [prefix,(i+1)]
                        config.vm.define "#{hostname}" do |box|
                                box.vm.hostname="#{hostname}.book"
                                box.vm.network:"private_network",ip:
                                        "172.16.0.#{ip_start+i}",:netmask=>"255.255.0.0"
                                box.vm.network:"private_network",ip:
                                        "10.10.0.#{ip_start+i}",:netmask=>"255.255.0.0"
                                #Otherwise using VirtualBox
                                box.vm.provider :virtualbox do |vbox|
                                        #Defaults
                                        vbox.customize ["modifyvm",:id,"--memory",1024]
                                        if prefix == "compute"
                                                vbox.customize ["modifyvm",:id,"--memory",3172]
                                                vbox.customize ["modifyvm",:id,"--cpus",2]
                                        end
                                end
                        end
                end
        end
end

使用vagrnat up compute启动这个虚拟机,并且使用vagrant ssh compute登录到此虚拟机,参考这里设置该服务器上的Ubuntu Cloud Archive,然后安装必要的软件包:

sudo apt-get -y install nova-compute nova-network nova-api-metadata nova-compute-qemu

在controller中进行下面的操作
新建一个nova数据库,为其创建用户并分配必要的权限

vagrant@controller:~$ MYSQL_ROOT_PASS=openstack
vagrant@controller:~$ mysql -uroot -p$MYSQL_ROOT_PASS -e 'create database nova;' 
vagrant@controller:~$ MYSQL_NOVA_PASS=openstack
vagrant@controller:~$ mysql -uroot -p$MYSQL_ROOT_PASS -e "grant all privileges on nova.* to 'nova'@'%' IDENTIFIED BY '${MYSQL_NOVA_PASS}';"
vagrant@controller:~$ mysql -uroot -p$MYSQL_ROOT_PASS -e "grant all privileges on nova.* to 'nova'@'localhost' IDENTIFIED BY '${MYSQL_NOVA_PASS}';"

在配置文件/etc/nova/nova.conf中添加如下配置

sql_connection=mysql://nova:openstack@172.16.0.200/nova

进一步编辑controller中/etc/nova/nova.conf文件如下

[DEFAULT]
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
root_helper=sudo nova-rootwrap /etc/nova/rootwrap.conf
verbose=True

api_paste_config=/etc/nova/api-paste.ini
keystone_ec2_url=http://172.16.0.200:5000/v2.0/ec2tokens
#volumes_path=/var/lib/nova/volumes
enabled_apis=ec2,osapi_compute,metadata

#Libvirt and Virtualization
libvirt_use_virtio_for_bridges=True
connection_type=libvirt
libvirt_type=qemu

#Database
sql_connection=mysql://nova:openstack@172.16.0.200/nova

#Messaging
rabbit_host=172.16.0.200

#EC2 API Flags
ec2_host=172.16.0.200
ec2_dmz_host=172.16.0.200
ec2_private_dns_show_ip=True

#Networking
public_interface=eth1
force_dhcp_release=True
auto_assign_floating_ip=True

#Images
image_service=nova.image.glance.GlanceImageService
glance_api_servers=172.16.0.200:9292

#Scheduler
scheduler_default_filters=AllHostsFilter

#Object Storage
iscsi_helper=tgtadm

#Auth
auth_strategy=keystone

然后在计算节点上同样的配置/etc/nova/nova.conf

root@paradise:~/cookbook# vagrant ssh compute

然后将文件中配置为和controller中的内容一样。

然后在任意一个客户端中执行命令sudo nova-manage db sync来确保数据库拥有正确的表结构,并且填入正确的初始数据信息。

继续创建openstack计算服务实例内部的私有网络

sudo nova-manage network create privateNet --fixed_range_v4=10.0.10.0/24 --network_size=64 --bridge_interface=eth2

由于在nova.conf文件中通过定义auto_assign_floating_ip=True使得实例启动时可以自动分配到一个浮动ip地址,因此需要设置一个共有网络地址空间供给openstack计算实例

sudo nova-manage floating create --ip_range=172.16.10.0/24

在controller和compute中修改/etc/nova/api-paste.ini文件中的[filter:authtoken]部分如下

[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
service_protocol=http
service_host=172.16.0.200
service_port=5000
auth_host = 172.16.0.200
auth_port = 35357
auth_protocol = http
auth_uri= http://172.16.0.200:5000/
admin_tenant_name = service
admin_user = nova
admin_password = nova
# signing_dir is configurable, but the default behavior of the authtoken
# middleware should be sufficient.  It will create a temporary directory
# in the home directory for the user the nova process is running as.
#signing_dir = /var/lib/nova/keystone-signing
# Workaround for https://bugs.launchpad.net/nova/+bug/1154809
auth_version = v2.0

在compute和controller节点上通过ls /etc/init/nova-*|cut -d '/' -f4|cut -d '.' -f1 |while read S;do sudo stop $S;sudo start $S;done重启openstack计算服务。
或者使用以下命令来重启这些服务

vagrant@controller:~$ sudo stop nova-api
vagrant@controller:~$ sudo stop nova-scheduler
vagrant@controller:~$ sudo stop nova-objectstore
vagrant@controller:~$ sudo stop nova-conductor
vagrant@compute:~$ sudo stop nova-compute
vagrant@compute:~$ sudo stop nova-network
vagrant@compute:~$ sudo stop libvirt-bin
vagrant@controller:~$ sudo start nova-api
vagrant@controller:~$ sudo start nova-scheduler
vagrant@controller:~$ sudo start nova-objectstore
vagrant@controller:~$ sudo start nova-conductor
vagrant@compute:~$ sudo start nova-compute
vagrant@compute:~$ sudo start nova-network
vagrant@compute:~$ sudo start libvirt-bin

使用命令root@paradise:~# apt-get -y install python-novaclient安装nova客户端。

检查openstack计算服务
使用vagrant@controller:~$ sudo nova-manage service list命令来检查openstack计算主机是否运行正常。
使用下面的命令检查glance

vagrant@controller:~$ ps -ef|grep glance
vagrant@controller:~$ netstat -ant |grep 9292.*LISTEN

使用vagrant@controller:~$ sudo rabbitmqctl status检查rabbitmq的状态,使用vagrant@controller:~$ ntpq -p检查ntp的状态,使用vagrant@controller:~$ mysqladmin -uroot -popenstack status检查mysql的状态。

#使用openstack计算服务

##管理安全组

在客户机上进行下面的配置

root@paradise:~# export OS_TENANT_NAME=cookbook
root@paradise:~# export OS_USERNAME=admin
root@paradise:~# export OS_PASSWORD=openstack
root@paradise:~# export OS_AUTH_URL=http://172.16.0.200:5000/v2.0/
root@paradise:~# export OS_NO_CACHE=1

###向安全组中添加规则
下面的命令将80和443端口的tcp权限开放给名为webserver的安全组

root@paradise:~# nova secgroup-create webserver "Web Server Access"
root@paradise:~# nova secgroup-add-rule webserver tcp 80 80 0.0.0.0/0
root@paradise:~# nova secgroup-add-rule webserver tcp 443 443 0.0.0.0/0

###从安全组中删除规则

root@paradise:~# nova secgroup-delete-rule webserver tcp 443 443 0.0.0.0/0

###删除安全组

root@paradise:~# nova secgroup-delete webserver

##管理密钥对
###创建密钥对

root@paradise:~# nova keypair-add myKey > myKey.pem
root@paradise:~# chmod 0600 myKey.pem

###列出和删除密钥

root@paradise:~# nova keypair-list
root@paradise:~# nova keypair-delete myKey

##启动一个云实例

在客户机上进行下面的配置

root@paradise:~# export OS_TENANT_NAME=cookbook
root@paradise:~# export OS_USERNAME=demo
root@paradise:~# export OS_PASSWORD=openstack
root@paradise:~# export OS_AUTH_URL=http://172.16.0.200:5000/v2.0/
root@paradise:~# export OS_NO_CACHE=1
root@paradise:~# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
root@paradise:~# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

使用下面的命令创建用于ssh登陆的密钥对

root@paradise:~# nova keypair-add demo>demo.pem
root@paradise:~# chmod 0600 *.pem

使用下面的命令检查密钥对是否创建成功

root@paradise:~# nova list
root@paradise:~# nova credentials

使用root@paradise:~# glance image-list列出可用的镜像。
创建一个新的镜像

root@paradise:~/cookbook# glance image-create --name='Ubuntu 12.04 x86_64 Server' --disk-format=qcow2 --container-format=bare --public<precise-server-cloudimg-amd64-disk1.img

它的uuid是2af8c219-c147-4337-931e-d756c78e0299,使用下面的命令启动虚拟机实例:

root@paradise:~# nova boot myInstance --image 2af8c219-c147-4337-931e-d756c78e0299 --flavor 2 --key_name demo

可以使用nova listnova show 0d668a73-6e2b-437a-901d-bd966edaa84b来查看实例的当前状态。

但实例状态为active的时候可以通过root@paradise:~# ssh -i demo.pem ubuntu@172.16.10.1登录到新的实例,这时候可能会报错:

ssh: connect to host 172.16.10.1 port 22: No route to host

解决的方法非常奇特:我只是把floating地址删掉然后从重新做了一遍之后的步骤,竟然就可以了。(openstack应该有管理子网的功能,所以这里不用关心网段的问题,之前在网段问题上纠结了好长时间,但最后问题还是按照原来的做法,问题却莫名其妙的解决了,猜想是哪个服务未正常运行。)

如果想删除一个实例,可以使用nova delete 0d668a73-6e2b-437a-901d-bd966edaa84bnova delete myInstance命令。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值