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

OpenStack 计算服务Nova [四]

2016-11-28 15:44 537 查看

OpenStack 计算服务Nova [四]

标签(空格分隔): openstack

时间:2016年11月28日


博客地址:
www.abcdocker.com

公众号:
abcdocker

Nova简介:

  Nova是openstack最早的两块模块之一,另一个是对象存储
swift
。在openstack体系中一个叫做
计算节点
,一个叫做
控制节点
。这个主要和nova相关,我们把安装为计算节点
nova-compute
,把除了nova-compute叫做控制节点。nova-compute是创建虚拟机的,只是创建虚拟机,所有的控制都在另一台上。

nova有非常多的组件(服务)

**Nova服务介绍

API:
负责接受和响应外部请求。支持OpenStack API,EC2 API

Cert:
负责身份认证EC 2

Scheduler:
用于云主机调度

Conductor:
计算节点访问数据的中间件

Consoleauth:
用于控制台的授权验证

Novncproxy:
VNC代理**

提示:
EC 2
是亚马逊云主机的意思

Nova scheduler

  
Nova scheduler
模块在openstack中的作用就是决策虚拟机创建在那个主机(计算节点)上

决策一个虚拟机应该调度到那个物理节点,需要分两个步骤:

**1、过滤(Fliter)

2、计算权值(Weight)**

提示:我们经常会出现找不到有效的主机?为什么?

 因为
nova scheduler
认为没有资源创建虚拟机,即使你有
100G
内存,如果
nova scheduler
认为你没有资格照样无法进行创建。
scheduler
作用就是决策虚拟机创建在那个主机上



经过主机过滤后,需要对主机进行权值的计算,根据策略选择相应的某一台主机(对于每一个要创建的虚拟机而言)



控制节点设置:

数据库以及keystone修改我们在前面已经完成,所以在此跳过

安装软件包

[root@linux-node1 ~]# yum install openstack-nova-api openstack-nova-conductor \
>   openstack-nova-console openstack-nova-novncproxy \
>   openstack-nova-scheduler


在配置文件中修改数据库的连接地址

[root@linux-node1 ~]# vim /etc/nova/nova.conf
…
[database]
connection=mysql+pymysql://nova:nova@192.168.56.11/nova
…
[api_database]
connection=mysql+pymysql://nova:nova@192.168.56.11/nova_api


提示:不要修改错了,每个都在在相对应的模块下面进行修改

同步数据库

[root@linux-node1 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
[root@linux-node1 ~]# su -s /bin/sh -c "nova-manage db sync" nova


提示:db的有警告可以忽略

检查是否有表结构

[root@linux-node1 ~]# mysql -h 192.168.56.11 -unova -pnova -e "use nova;show tables;"
[root@linux-node1 ~]# mysql -h 192.168.56.11 -unova_api -pnova_api -e "use nova_api;show tables;"


配置keystone

[root@linux-node1 ~]# vim /etc/nova/nova.conf
…
[keystone_authtoken]
auth_uri = http://192.168.56.11:5000 auth_url = http://192.168.56.11:35357 memcached_servers = 192.168.56.11:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
…
[DEFAULT]
auth_strategy=keystone
#打开注释,此行代表使用keystone进行认证


RabbitMq(消息队列配置)

因为
nova
服务之间使用消息队列进行沟通,所以我们需要配置
rabbitmq


[root@linux-node1 ~]# vim /etc/nova/nova.conf
[DEFAULT]
rpc_backend=rabbit
#搜索rpc_backend打开注释

rabbit_host=192.168.56.11
将localhost修改为IP地址

rabbit_port=5672
端口我们可以开启也可以不开启默认就好

rabbit_userid=openstack
rabbit_password=openstack
这个是我们在rabbitmq上配置的用户


配置nova自己的一些功能

设置启用的元数据API
[root@linux-node1 ~]# vim /etc/nova/nova.conf
[DEFAULT]
enabled_apis=osapi_compute,metadata

启动网络服务支持
use_neutron=true

关闭防火墙
firewall_driver=nova.virt.firewall.NoopFirewallDriver


提示:默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用
nova.virt.firewall.NoopFirewallDriver
防火墙服务来禁用掉计算服务内置的防火墙服务

我们不配置
my IP
,因为My IP是一个大坑

配置
VNC
代理使用控制节点的管理接口IP地址

[root@linux-node1 ~]# vim /etc/nova/nova.conf
vncserver_listen=192.168.56.11
vncserver_proxyclient_address=192.168.56.11


配置glance镜像服务API

[root@linux-node1 ~]# vim /etc/nova/nova.conf
[glance]
api_servers=http://192.168.56.11:9292


配置锁路径

[oslo_concurrency]
…
lock_path=/var/lib/nova/tmp


nova配置说明

[root@linux-node1 ~]# grep '^[a-z]' /etc/nova/nova.conf
enabled_apis=osapi_compute,metadata             #启动api
auth_strategy=keystone                          #设置keystone
firewall_driver=nova.virt.firewall.NoopFirewallDriver       #关闭防火墙
use_neutron=true                                    #使用neutron
rpc_backend=rabbit                              #使用rabbitmq
connection = mysql+pymysql://nova:nova@192.168.56.11/nova_api  #数据库地址
connection = mysql+pymysql://nova:nova@192.168.56.11/nova       #数据库地址
api_servers=http://192.168.56.11:9292               #glance api地址
auth_uri = http://192.168.56.11:5000              #keystone
auth_url = http://192.168.56.11:35357              #keystone
memcached_servers = 192.168.56.11:11211              #keystone
auth_type = password                           #keystone
project_domain_name = default               #keystone
user_domain_name = default                #keystone
project_name = service                    #keystone
username = nova                       #keystone
password = nova                       #keystone
lock_path=/var/lib/nova/tmp             #锁路径
rabbit_host=192.168.56.11                #rabbitmq
rabbit_port=5672                         #rabbitmq
rabbit_userid=openstack              #rabbitmq
rabbit_password=openstack            #rabbitmq
vncserver_listen=192.168.56.11           #VNC
vncserver_proxyclient_address=192.168.56.11 #VNC


设置开机启动,并启动服务

# systemctl enable openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service
# systemctl start openstack-nova-api.service \
openstack-nova-consoleauth.service openstack-nova-scheduler.service \
openstack-nova-conductor.service openstack-nova-novncproxy.service


nova启动成功之后还需要去
keystone
上进行注册,否则别人无法进行连接

创建nova服务

[root@linux-node1 ~]# source  admin-openstack.sh
[root@linux-node1 ~]# openstack service create --name nova --description "Openstack Compute " compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Openstack Compute                |
| enabled     | True                             |
| id          | c9aca55493924f2ba9cb5b304cb1322f |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+


创建Compute服务api端点

[root@linux-node1 ~]# openstack endpoint create --region RegionOne \
>   compute public http://192.168.56.11:8774/v2.1/%\(tenant_id\)s +--------------+----------------------------------------------+
| Field        | Value                                        |
+--------------+----------------------------------------------+
| enabled      | True                                         |
| id           | 71414f00b2834e8190ee25c219e3d3c4             |
| interface    | public                                       |
| region       | RegionOne                                    |
| region_id    | RegionOne                                    |
| service_id   | c9aca55493924f2ba9cb5b304cb1322f             |
| service_name | nova                                         |
| service_type | compute                                      |
| url          | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+

[root@linux-node1 ~]# openstack endpoint create --region RegionOne   compute admin http://192.168.56.11:8774/v2.1/%\(tenant_id\)s +--------------+----------------------------------------------+
| Field        | Value                                        |
+--------------+----------------------------------------------+
| enabled      | True                                         |
| id           | 9162f57b72e244f799086eeca3b7df6c             |
| interface    | admin                                        |
| region       | RegionOne                                    |
| region_id    | RegionOne                                    |
| service_id   | c9aca55493924f2ba9cb5b304cb1322f             |
| service_name | nova                                         |
| service_type | compute                                      |
| url          | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+

[root@linux-node1 ~]# openstack endpoint create --region RegionOne   compute internal http://192.168.56.11:8774/v2.1/%\(tenant_id\)s +--------------+----------------------------------------------+
| Field        | Value                                        |
+--------------+----------------------------------------------+
| enabled      | True                                         |
| id           | 8fb3d0da5ee64ed693b7b4608844d5ff             |
| interface    | internal                                     |
| region       | RegionOne                                    |
| region_id    | RegionOne                                    |
| service_id   | c9aca55493924f2ba9cb5b304cb1322f             |
| service_name | nova                                         |
| service_type | compute                                      |
| url          | http://192.168.56.11:8774/v2.1/%(tenant_id)s |
+--------------+----------------------------------------------+


检查控制节点是否成功

[root@linux-node1 ~]# openstack host list
+---------------------------+-------------+----------+
| Host Name                 | Service     | Zone     |
+---------------------------+-------------+----------+
| linux-node1.abcdocker.com | consoleauth | internal |
| linux-node1.abcdocker.com | conductor   | internal |
| linux-node1.abcdocker.com | scheduler   | internal |
+---------------------------+-------------+----------+


nova计算节点配置

 我们在架构中想构建几个虚拟机就要看计算节点的配置,虚拟化工具我们只能使用VMware,因为VMware支持嵌套虚拟化,其他的虚拟化软件不支持



我们nova计算节点IP是
192.168.56.12


需要开启虚拟化技术

因为需要使用kvm来创建虚拟机,所以我们需要开启虚拟化。如果是服务器需要在bios上开启



环境准备

[root@linux-node2 ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@linux-node2 ~]# uname -r
3.10.0-327.36.2.el7.x86_64


时间同步

[root@linux-node1 ~]# yum install ntpdate -y
[root@linux-node1 ~]# ntpdate time1.aliyun.com
[root@linux-node1 ~]# timedatectl set-timezone Asia/Shanghai  #设置时区
[root@linux-node1 ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm[/code] 
安装openstack仓库

[root@linux-node2 ~]# yum install -y centos-release-openstack-mitaka


安装openstack客户端

[root@linux-node1 ~]# yum install -y python-openstackclient


因为控制节点的nova和计算节点的配置除了没有数据库其他的都是相同的,这里我们采取
scp
的形式进行修改

安装openstack SELinux管理包

[root@linux-node2 ~]# yum install -y openstack-selinux


安装nova

[root@linux-node2 ~]# yum install -y openstack-nova-compute


步骤:

1、从控制节点scp nova.conf

2、 删除数据库的配置

3、 vnc的配置进行变更

4、 设置一个虚拟化的选项

提示:要注意
nova.conf
文件的权限

时间必须同步!!!!

1.将控制节点的
nova.conf
复制到计算节点上

[root@linux-node1 ~]# scp /etc/nova/nova.conf 192.168.56.12:/etc/nova/
The authenticity of host '192.168.56.12 (192.168.56.12)' can't be established.
ECDSA key fingerprint is 43:50:3c:fa:03:29:7c:3c:5f:aa:d2:76:b5:8e:d9:54.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.56.12' (ECDSA) to the list of known hosts.
root@192.168.56.12's password:
nova.conf                                                                                                 100%  180KB 180.0KB/s   00:00


2.进入计算节点进行修改

首先保证权限一致
[root@linux-node2 nova]# ll /etc/nova/nova.conf
-rw-r----- 1 root nova 184332 Nov 18 17:02 /etc/nova/nova.conf


3.修改配置文件

[root@linux-node2 nova]# vim /etc/nova/nova.conf
#connection =
#connection =
搜索mysql将mysql路径注释掉


配置vnc

novncproxy_base_url=http://192.168.56.11:6080/vnc_auto.html
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.56.12

5384行enabled=true


提示:服务器组件监听所有的 IP 地址,而代理组件仅仅监听计算节点管理网络接口的 IP 地址。基本的 URL 指示您可以使用 web 浏览器访问位于该计算节点上实例的远程控制台的位置。

选择虚拟化类型

确定您的计算节点是否支持
虚拟化
的硬件加速。

egrep -c '(vmx|svm)' /proc/cpuinfo


如果这个命令返回了
1
或不等于
0
的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了
0
值,那么你的计算节点不支持硬件加速。你必须配置
libvirt
来使用
QEMU
去代替
KVM


KVM文章:http://www.abcdocker.com/abcdocker/1627

/etc/nova/nova.conf
文件的
[libvirt]
区域做出如下的编辑:

[libvirt]
…
virt_type=kvm

#配置虚拟化类型


总结

nova.conf
修改了如下五行

[root@linux-node2 nova]# grep '^[a-z]' /etc/nova/nova.conf
…
enabled=true
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.56.12
novncproxy_base_url=http://192.168.56.11:6080/vnc_auto.html
virt_type=kvm


设置开机启动

[root@linux-node2 ~]# systemctl enable libvirtd openstack-nova-compute
[root@linux-node2 ~]# systemctl start libvirtd openstack-nova-compute


列出服务组件,以验证是否成功启动并注册了每个进程:

[root@linux-node1 ~]# source admin-openstack.sh
[root@linux-node1 ~]# openstack host list
+---------------------------+-------------+----------+
| Host Name                 | Service     | Zone     |
+---------------------------+-------------+----------+
| linux-node1.abcdocker.com | consoleauth | internal |
| linux-node1.abcdocker.com | conductor   | internal |
| linux-node1.abcdocker.com | scheduler   | internal |
| linux-node2.abcdocker.com | compute     | nova     |
+---------------------------+-------------+----------+
该输出应该显示三个服务组件在控制节点上启用,一个服务组件在计算节点上启用。


查看
nova
keystone
是否正常

[root@linux-node1 ~]# nova service-list
+----+------------------+---------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host                      | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+---------------------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-consoleauth | linux-node1.abcdocker.com | internal | enabled | up    | 2016-11-18T09:24:23.000000 | -               |
| 2  | nova-conductor   | linux-node1.abcdocker.com | internal | enabled | up    | 2016-11-18T09:24:22.000000 | -               |
| 3  | nova-scheduler   | linux-node1.abcdocker.com | internal | enabled | up    | 2016-11-18T09:24:23.000000 | -               |
| 6  | nova-compute     | linux-node2.abcdocker.com | nova     | enabled | up    | 2016-11-18T09:24:23.000000 | -               |
+----+------------------+---------------------------+----------+---------+-------+----------------------------+-----------------+


查看nova和glance服务相互是否正常

[root@linux-node1 ~]# nova image-list
+--------------------------------------+--------+--------+--------+
| ID                                   | Name   | Status | Server |
+--------------------------------------+--------+--------+--------+
| fc67361d-ad30-40b2-9d96-941e50fc17f5 | cirros | ACTIVE |        |
+--------------------------------------+--------+--------+--------+


再次提示:时间必须同步!!!

nova
安装到此截止!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: