openstack安装部署之Nova

下面的安装步骤承接上一篇博文
一、准备工作
1、启用网络接口的PROMISC功能
本示例将基于FlatDHCP网络模型,因此其所有工作可以仅通过一个网络接口完成。在所有的节点上,需要为此接口开启“promisc”标志,这可通过如下命令实现。
这里写图片描述
2、创建桥接接口br100
这里写图片描述
这里写图片描述
3、使用桥接管理工具查看桥接接口的信息
这里写图片描述
4、启动messagbus服务 ,有些功能需要依赖此服务
openstack安装部署之Nova_第1张图片
二、安装消息队列服务
1、安装rabbit所需软件包并启动服务

[root@controller ~]# yum -y install rabbitmq-server
[root@controller ~]# systemctl enable rabbitmq-server.service
[root@controller ~]# systemctl start rabbitmq-server.service

2、设置rabbit服务密码
这里写图片描述
三、安装配置Nova
1、安装nova

[root@controller ~]#  yum -y install openstack-nova-compute sysfsutils
[root@controller ~]# yum -y install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient 

2、为nova创建数据库及相关的用户

MariaDB [(none)]> create database nova;
MariaDB [mysql]> grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
MariaDB [mysql]> grant all privileges on nova.* on 'nova'@'localhost' identified by 'nova';

也可以使用下面的命令初始化nova数据库,同时创建其服务同名的用户,并为其指定密码

# openstack-db --init --service nova --password nova

3、在keystone中注册nova,加入到admin组、service服务

# keystone user-create --name nova --pass nova --email nova@DQ.com
# keystone user-role-add --user nova --tenant service --role admin

4、编辑配置文件/etc/nova/nova.conf,修改其内容如下所示:

[DEFAULT]
# AUTHENTICATION
auth_strategy=keystone
rpc_backend=rabbit
rabbit_host=controller
rabbit_userid=guest
rabbit_password=rabbit
my_ip=10.33.100.177
api_paste_config=/etc/nova/api-paste.ini
# DATABASE
sql_connection=mysql://nova:nova@controller/nova
#NETWORK
network_manager=nova.network.manager.FlatDHCPManager
force_dhcp_release=True
# Location of flagfiles for dhcpbridge (multi valued)
dhcpbridge_flagfile=/etc/nova/nova.conf
# Interface for public IP addresses (string value)
public_interface=eno16777736
# Location of nova-dhcpbridge (string value)
dhcpbridge=/usr/bin/nova-dhcpbridge
# Bridge for simple network instances (string value)
flat_network_bridge=br100
# FlatDhcp will bridge into this interface if set (string value)
flat_interface=eno16777736
# Firewall driver (defaults to hypervisor specific iptables driver)(string value)
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

[glance]
glance_api_servers=172.16.200.6:9292

[keystone_authtoken]
identity_uri=http://controller:35357
admin_user=nova
admin_password=nova
admin_tenant_name=service

说明:KVM虚拟化要求CPU支持svm或vmx,因此,这里的Openstack所在的系统RHEL6.4必须直接运行于支持这两种特性之一的CPU平台上。如果整个过程是在虚拟机上进行测试的话,比如Openstack所安装的系统RHEL6.4本身就运行于虚拟上,那么,虚拟化技术只能使用qemu而不能使用KVM。此种情形下,需要执行如下步骤,在CentOS 7中启动对qemu的支持。
安装libguestfs-tools

[root@controller ~]# yum install libguestfs-tools

设定libvirt类型为qemu

[root@controller ~]# openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_type qemu

为qemu-kvm创建所需要链接

[root@controller ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qem

重启libvirtd服务

[root@controller ~]# systemctl restart libvirtd.service 

5、添加认证方式和密码到文件/etc/nova/api-paste.ini
openstack安装部署之Nova_第2张图片
6、同步计算服务数据表

[root@controller ~]# nova-manage db sync

7、启动服务
首先创建nova服务的锁文件目录,并将其权限赋予nova用户。

# mkdir /var/lock/nova
# chown -R nova.nova /var/lock/nova/

而后启动nova相关的服务,并将其设置为开机自动启动。
这里写图片描述
查看服务启动状况
openstack安装部署之Nova_第3张图片
检验服务启动时是否有错误产生
这里写图片描述
8、创建nova网络
创建nova网络要通过“nova-manager network create”命令进行,其可以接受许多选项,获取使用帮助的方式如下所示:

[root@controller ~]# nova-manage network create --help

下面创建一个名为“private”的网络,桥接设备的名称为br100。
这里写图片描述
查看创建的网络
这里写图片描述
9、在KeyStone中注册Nova compute API
接下来需要将Nova Compute API在KeyStone中注册,dashboard需要基于此与Nova交互。下面的部分要以keystone的管理员admin身份执行,如果当前未为连接KeyStone设置环境变量,可以使用“source ~/.ksrcadmin.sh ”进行。
openstack安装部署之Nova_第4张图片
至此nova配置完成,nova已经可以与keystone,glance联系,而且可以获取各映像文件的相关信息了
openstack安装部署之Nova_第5张图片
四、运行VM实例
1、安全组(security group)
Compute服务通过安全组(security group)控制通过哪些网络协议(TCP,UDP,ICMP)、端口及IP地址允许对实例进行访问。安全组是tenant级别的概念,每个tenant都有其自己的安全组,且都有一个默认的“default”组。在某VM实例启动时,如果没有为其指定特定的安全组,其将使用默认的安全组。使用“nova secgroup-list”命令可以查看安全组。
这里写图片描述
“nova secgroup-add-rule”可用于为安全组定义访问规则,如下面的命令就实现了允许所有IP地址通过TCP协议的22端口访问关联的VM实例。
这里写图片描述
如果要允许对VM实例发起ping请求,还要开放其ICMP协议。不过,ICMP协议的相关规则需要指定ICMP报文类型(号码)而非类似TCP或UDP协议的端口。如果要开放所有的报文类型,则使用“-1”这个号码。例如,允许所有主机对VM实例发起任意类型的ICMP请求,则可以使用下面的命令来定义规则。
这里写图片描述
2、SSH公钥注入
只要对应的VM实例支持使用SSH服务,Compute服务可以注入SSH公钥信息至此实例的某帐号中。“nova keypair-add”命令能够生成一对密钥(不保存至文件中),并将其公钥添加至Compute服务;当然,也可以只用于将现有的某密钥对儿的公钥添加至Compute服务中。为了使用上的方便,这里先使用ssh-keygen命令生成一对密钥文件,而后将其公钥上传至Compute服务中。

[root@controller ~]# ssh-keygen -t rsa -P ''
[root@controller ~]# nova keypair-add --pub-key .ssh/id_rsa.pub testkey

显示添加的密钥信息,并确保其与本地密钥文件的Fingerprint信息完全匹配。
openstack安装部署之Nova_第6张图片
3、确保Compute节点的每个服务都已正常运行
在启动任何VM实例前,要确认Compute节点上的如下服务都已经正常运行。

  • libvirtd:所有的nova服务均依赖于此服务;
  • nova-api:用于响应请求以启动VM实例,及提供VM实例的元数据信息等;
  • nova-compute:与hypervisor进行交互以管理VM实例;
  • nova-scheduler:响应用户请求将用户请求启动的VM实例调度至某Compute节点运行;
  • nova-network:执行Openstack的网络任务,如将IP地址分配给某VM实例,以及启用安全组规则等;
# nova-manage service list

如果有某服务没有启动,在此处启动其即可。
5、启动一个实例
在启动一个VM实例时,需要为其指定一个flavor,即实例类型,用于指定此实例的规格,如内存大小、磁盘数量及空间大小、VCPU的个数等。“nova flavor-list”可以查看所有的flavor。
openstack安装部署之Nova_第7张图片
“nova flavor-create”可用于创建一个新的flavor,其使用格式请自行获取命令的使用帮助。

[root@controller ~]# nova help flavor-create
usage: nova flavor-create [--ephemeral ] [--swap ]
                          [--rxtx-factor ] [--is-public <is-public>]
                              

Create a new flavor

Positional arguments:
                     Name of the new flavor
                       Unique ID (integer or UUID) for the new flavor. If
                           specifying 'auto', a UUID will be generated as id
                      Memory size in MB
                     Disk size in GB
                    Number of vcpus


[root@controller ~]# nova help flavor-delete
usage: nova flavor-delete 

Delete a specific flavor

Positional arguments:
    Name or ID of the flavor to delete

下面创建一个名为“flavor.cirros”的flavor
这里写图片描述
具备上述条件后,即可用nova boot命令来创建并启动一个实例了。启动实例依赖于可用的映像文件的ID,可以使用nova image-list获取在前文演示中已经添加的两个示例性映像文件的相关信息
openstack安装部署之Nova_第8张图片
查看创建的VM实例vm1:显示状态错误
这里写图片描述
删除实例vm1,在nova boot命令前添加–debug选项,以诊断创建实例过程中的问题,目前还没有找到解决办法

[root@controller ~]# nova delete vm1
[root@controller ~]# nova --debug boot --flavor 6 --image  2901debc-7cbf-4108-b563-3929efe601be --key_name testkey --security_group default vm1

这里写图片描述
如果实例启动成功,可以基于nova控制台连接至实例vm1:

# nova console-log vm1

另外,也可以通过ssh连接至VM实例cirros1,而且由于控制节点已经直接向cirrors中注入了ssh公钥,连接至VM实例时不再需要提供密码即可建立SSH会话。

# ssh -l cirros  10.33.100.177

五、安装配置其它Compute节点
类似前面的Nova的安装配置过程,首先要配置好网络属性,而后安装Nova,并为nova提供配置文件。其配置信息中,以下几项要按需修改为当前节点的IP地址。配置完成后,启动相关的服务(openstack-nova-compute、openstack-nove-network和libvirtd)即可。
• my_ip
• vncserver_listen
• vncserver_proxyclient_address
需要注意的是,控制节点一般不应该运行VM实例,因此,当专用的Compute节点配置完成后,即可禁止控制节点上的服务。如下面的命令即禁用了控制节点node1.DQ.com上的nova-compute服务,这样一来,在启动VM实例时就不再会将其调度至控制节点。

# nova-manage service disable --host=node1.DQ.com --service=nova-compute

你可能感兴趣的:(Cloud)