【OpenStack(Train版)安装部署(五)】之Nova服务在Controller节点和Compute节点的部署

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

(一)Nova子服务节点分配

        计算服务nova较之前的服务稍显复杂(但没有网络服务neutron复杂),它需要在控制节点和计算节点都安装。

        控制节点主要安装nova-api(nova主服务)、nova-scheduler(nova调度服务)、nova-conductor(nova数据库服务,提供数据库访问)、nova-novncproxy(nova的vnc服务,提供实例的控制台)等服务。
计算节点主要安装nova-compute(nova计算服务)。

(二)Nova子服务Controller节点部署

1. 创建数据库并授权

        创建三个数据库nova, nova_api, nova_cell0,并授予nova用户对三个数据库的本地登录以及远程登录权限,并设定密码为NOVA_DBPASS:

MariaDB [(none)]> CREATE DATABASE nova_api; 
Query OK, 1 row affected (0.000 sec) 

MariaDB [(none)]> CREATE DATABASE nova; 
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> CREATE DATABASE nova_cell0; 
Query OK, 1 row affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.000 sec) 

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; 
Query OK, 0 rows affected (0.001 sec)

2. 创建nova用户

        创建OpenStack的用户nova,密码为NOVA_PASS:

[root@controller ~]# openstack user create --domain default --password NOVA_PASS nova

3. 向nova用户添加admin角色

        为nova用户添加admin角色,并且加入项目service中:

[root@controller ~]# openstack role add --project service --user nova admin

4. 创建nova服务实体

        创建nova服务service,类型是compute:

[root@controller ~]# openstack service create --name nova --description "OpenStack Compute" compute

        查看当前的service列表:

在这里插入图片描述

5. 给Nova服务关联endpoint(端点)

        创建三个endpoint端点,与之前一样:

[root@controller ~]# openstack endpoint create --region RegionOne compute public http://192.168.112.146:8774/v2.1

[root@controller ~]# openstack endpoint create --region RegionOne compute internal http://192.168.112.146:8774/v2.1

[root@controller ~]# openstack endpoint create --region RegionOne compute admin http://192.168.112.146:8774/v2.1

6.Controller节点需要安装的nova子服务

        nova-api, nova-conductor, nova-novncproxy, nova-scheduler四个组件:

[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler -y

7. 修改nova.conf配置文件

        精简nova.conf配置文件:

cp -a /etc/nova/nova.conf{,.bak} 
grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf

        指定支持的API类型

openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata 

        定义Controller节点的IP

openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.112.146

        通过neutron获取IP地址

openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true 

        防火墙驱动

openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver 

        指定连接的rabbitmq

openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@192.168.112.146 

        nova_api数据库的mysql连接

openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:NOVA_DBPASS@192.168.112.146/nova_api

        nova数据库的mysql连接

openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:NOVA_DBPASS@192.168.112.146/nova 

        placement数据库的mysql连接

openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:PLACEMENT_DBPASS@192.168.112.146/placement 

        nova的认证策略为keystone

openstack-config --set /etc/nova/nova.conf api auth_strategy keystone 

        keystone的认证url

openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://192.168.112.146:5000/v3

        memcached的服务地址

openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers 192.168.112.146:11211 

        keystone认证方式为password

openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password 

        keystone的项目Domain为Default

openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default 

        用户的Damain为Default

openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default 

        项目名为service

openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service 

        keystone的登录用户名为nova

openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova 

        nova用户在keystone的登录密码为NOVA_PASS

openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS 

        vnc如果配置不正确,则连接不上虚拟机的控制台

openstack-config --set /etc/nova/nova.conf vnc enabled true

        vnc监听地址

openstack-config --set /etc/nova/nova.conf vnc server_listen ' $my_ip' 

        server的客户端地址为本机地址;此地址是管理网的地址

openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip' 

        glance的地址

openstack-config --set /etc/nova/nova.conf glance api_servers http://192.168.112.146:9292 

        指定锁路径, 锁的作用是创建虚拟机时,在执行某个操作的时候,需要等此步骤执行完后才能执行下一个步骤,不能并行执行,保证操作是一步一步的执行

openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp 

        placement服务的region名称

openstack-config --set /etc/nova/nova.conf placement region_name RegionOne 

        placement服务的项目所属Domain为Default

openstack-config --set /etc/nova/nova.conf placement project_domain_name Default 

        placement服务的项目名为service

openstack-config --set /etc/nova/nova.conf placement project_name service 

        placement服务的认证方式为password

openstack-config --set /etc/nova/nova.conf placement auth_type password 

        placement服务的用户所属Domain为Default

openstack-config --set /etc/nova/nova.conf placement user_domain_name Default 

        placement服务的认证url

openstack-config --set /etc/nova/nova.conf placement auth_url http://192.168.112.146:5000/v3 

        placement服务的用户名为placement

openstack-config --set /etc/nova/nova.conf placement username placement 

        placement服务的密码为PLACEMENT_PASS

openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS

8. 填充nova-api数据库

        初始化nova_api数据库

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

9.注册cell0数据库

        nova服务内部把资源划分到不同的cell中,把计算节点划分到不同的cell中;openstack内部基于cell把计算节点进行逻辑上的分组

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova 

        创建cell1单元格

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

        初始化nova数据库,可以通过 /var/log/nova/nova-manage.log 日志判断是否初始化成功

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

        可使用以下命令验证cell0和cell1是否注册成功

su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova 

        验证cell0和cell1组件是否注册成功

在这里插入图片描述

10. 启动计算服务nova并将其配置为开机自启

        将Controller节点的4个nova子服务设置开机自启动

[root@controller ~]# systemctl enable openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 
[root@controller ~]# systemctl start openstack-nova-api.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service 

11.检测nova服务启动情况

        同样,使用netstat -tnlup查看端口情况,如出现8774和8775端口则表示nova服务正常启动。

在这里插入图片描述

        再通过访问Controller节点的8774端口,返回信息:

在这里插入图片描述

(三)Nova子服务Compute节点部署

1.安装OpenStack Train版本源

[root@compute01 ~]# yum install centos-release-openstack-train -y

2.安装nova-compute软件包

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

3.修改计算节点的nova配置文件

        精简nova.conf配置文件

[root@compute01 ~]# cp -a /etc/nova/nova.conf{,.bak} 
[root@compute01 ~]# grep -Ev '^$|#' /etc/nova/nova.conf.bak > /etc/nova/nova.conf

        安装openstack-utils工具

[root@controller ~]# yum install -y openstack-utils

        指定支持的API类型

openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata 

        定义Compute节点的IP

openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 192.168.112.145

        通过neutron获取IP地址

openstack-config --set /etc/nova/nova.conf DEFAULT use_neutron true 

        防火墙驱动

openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver 

        指定连接的rabbitmq,在Controller节点中

openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@192.168.112.146

        认证策略为keystone

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf api auth_strategy keystone 

        keystone认证URL(Controller中)

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://192.168.112.146:5000/v3 

        memcached服务地址(Controller中)

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers 192.168.112.146:11211 

        keystone的认证方式为password

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password 

        keystone的项目Damain名为Default

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name Default 

        keystone的用户Damain名为Default

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name Default 

        keystone的project为service

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service 

        keystone的用户名为nova

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova 

        keystone的认证密码为NOVA_PASS

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken password NOVA_PASS 

        vnc连接控制台

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf vnc enabled true 

        vnc服务监听IP

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf vnc server_listen 0.0.0.0 

        vnc代理客户端地址为本机地址

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address ' $my_ip' 

        vnc代理基本url(Controller中)

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf vnc novncproxy_base_url http://192.168.112.146:6080/vnc_auto.html 

        glance的api

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf glance api_servers http://192.168.112.146:9292 

        线程锁位置:

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp 

        placement服务的Region名称

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement region_name RegionOne 

        placement服务的project所属的Domain为Default

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement project_domain_name Default 

        placement服务的project名为service

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement project_name service 

        placement服务的认证方式为password

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement auth_type password 

        placement服务的用户Domain为Default

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement user_domain_name Default 

        placement服务的认证地址url

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement auth_url http://192.168.112.146:5000/v3 

        placement服务的用户名为placement

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement username placement 

        placement服务的密码

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf placement password PLACEMENT_PASS 

        compute子服务的libvirt类型

[root@compute01 ~]# openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu

4. 确定计算节点是否支持虚拟机硬件加速

        检查当前计算节点:

[root@compute01 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo

在这里插入图片描述

        如果此命令返回值不是0,则计算节点支持硬件加速,不需要加入下面的配置。

        如果此命令返回值是0,则计算节点不支持硬件加速,并且必须配置libvirt为使用QEMU而不是KVM,需要编辑/etc/nova/nova.conf 文件中的[libvirt]部分: [libvirt] virt_type = qemu

5.启动Compute服务及其相关服务,并设置开机自启

[root@compute01 ~]# systemctl enable libvirtd.service openstack-nova-compute.service 
[root@compute01 ~]# systemctl start libvirtd.service openstack-nova-compute.service

        执行命令后,openstack-nova-compute.service服务一直启动不起来,到/var/
log/nova/nova-compute.log日志中查看启动失败情况,结果如下:

        可以看到,是rabbitmq的连接问题,此时我并没有开启Controller节点的rabbitmq,因此尝试开启Controller节点。
在这里插入图片描述

        可是openstack-nova-compute.service服务依然启动失败,查看compute节点的nova-compute.log日志可以看到如下信息:

tail /var/log/nova/nova-compute.log

在这里插入图片描述

        从最后可以看到,是AccessRefused导致的,即AMQPLAIN拒绝登录,说明是登录rabbitmq失败,因此到Controller节点中的查看rabbitmq的日志:

tail /var/log/rabbitmq/rabbitt@controller.log

在这里插入图片描述

        从中间的一行可以看到,是openstack用户没有有效的认证,下面查看rabbitmq中的用户信息:

rabbitmqctl list_users

在这里插入图片描述

        可以看到,只有一个guest用户,权限是admin,因此需要添加一个openstack用户,设置密码为RABBIT_PASS,这个密码是我们在Compute节点的nova.conf中配置的密码:

rabbitmqctl add_user openstack RABBIT_PASS

        增加配置、读取及写入相关权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

        重启Controller节点中的rabbitmq服务,

systemctl restart rabbitmq-server.service

        重启Compute节点中的openstack-nova-compute服务

systemctl restart openstack-nova-compute.service

        最终,查看openstack-nova-compute服务启动成功,如下所示:
在这里插入图片描述

6.修改Compute节点主机名配置

        修改主机名,方便操作

hostnamectl set-hostname computer

        配置hosts

192.168.112.145 compute

7.验证(controller节点操作)

        查看compute节点是否注册到controller上,通过消息队列;需要在controller节点执行以下的指令:

[root@ct ~]# openstack compute service list --service nova-compute

在这里插入图片描述

        这里有两个是因为我在之前没有设置Compute节点的hostname,修改完hostname之后的状态为UP。

8.发现计算节点主机(Controller节点操作)

        扫描当前openstack中有哪些计算节点可用,发现后会把计算节点创建到cell中,后面就可以在cell中创建虚拟机;相当于openstack内部对计算节点进行分组,把计算节点分配到不同的cell中

[root@ct ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

        可以看到,发现两个cell,一个是cell1,其中不包含host注解;另一个是cell,其中包含了两个host,就是我们之前在未设置hostname和设置之后的两个host:

在这里插入图片描述

        由于在以后添加新的计算节点时,必须在控制器节点上运行”su -s /bin/sh -c “nova-manage cell_v2 discover_hosts --verbose” nova“以注册这些新的计算节点。这样很麻烦,因此可以修改Controller节点的nova.conf文件:

[root@ct ~]# vim /etc/nova/nova.conf
[scheduler]
discover_hosts_in_cells_interval = 300			#每300秒扫描一次

        设置扫描时间为300秒扫描一次。

        重启Controller节点的nova-api.service服务:

systemctl restart openstack-nova-api.service

9.验证计算节点服务(Controller节点操作)

        检查 nova 的各个服务是否都是正常,以及 compute 服务是否注册成功

[root@ct ~]# openstack compute service list

在这里插入图片描述

        可以看到,controller节点中启动了两个服务,compute节点启动了一个服务。

        查看OpenStack各个组件的 访问api 是否正常

[root@ct ~]# openstack catalog list

在这里插入图片描述

        查看cell的api和placement的api是否正常,只要其中一个有误,后期无法创建虚拟机

[root@ct ~]# nova-status upgrade check

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值