文章目录
一、实验目的
- 熟悉Linux基本服务配置;
- 理解OpenStack基本环境中各组件用途。
二、实验环境
- 实验资源 云主机Vultr、DigitalOCean等
- 软件环境 CentOS 7
三、实验内容
4.1.在控制节点安装 nova 计算服务
1)创建 nova 相关数据库
 nova 服务新增加了两个数据库(Rocky 版)
 mysql -u root -p123456
CREATE DATABASE nova_api;
 CREATE DATABASE nova;
 CREATE DATABASE nova_cell0;
 CREATE DATABASE placement;
 GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘localhost’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@’%’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘localhost’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@’%’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@‘localhost’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@’%’ IDENTIFIED BY ‘nova’;
 GRANT ALL PRIVILEGES ON placement.* TO ‘placement’@‘localhost’ IDENTIFIED BY ‘placement’;
 GRANT ALL PRIVILEGES ON placement.* TO ‘placement’@’%’ IDENTIFIED BY ‘placement’;
 flush privileges;
 show databases;
 select user,host from mysql.user;
 exit
 
 
 
4.2.在 keystone 上面注册 nova 服务
创建服务证书
 1)在 keystone 上创建 nova 用户
 source admin-openrc
 openstack user create --domain default --password=nova nova
 openstack user list
 
 2)在 keystone 上将 nova 用户配置为 admin 角色并添加进 service 项目
 以下命令无输出
 openstack role add --project service --user nova admin
 
 3)创建 nova 计算服务的实体
 openstack service create --name nova --description “OpenStack Compute” compute
 openstack service list
 
 4)创建计算服务的 API 端点(endpoint)
 计算服务 compute
 openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1
 openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1
 openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1
 openstack endpoint list
 
 
 
 5)这个版本的 nova 增加了 placement 项目
 创建并注册 placement 项目的服务证书
 openstack user create --domain default --password=placement placement
 openstack role add --project service --user placement admin
 openstack service create --name placement --description “Placement API” placement
 创建 placement 项目的 endpoint(API 端口)
 openstack endpoint create --region RegionOne placement public http://controller:8778
 openstack endpoint create --region RegionOne placement internal http://controller:8778
 openstack endpoint create --region RegionOne placement admin http://controller:8778
 openstack endpoint list
 
 
 
 
4.3.在控制节点安装 nova 相关服务
1)安装 nova 相关软件包
 yum install openstack-nova-api openstack-nova-conductor 
 openstack-nova-console openstack-nova-novncproxy 
 openstack-nova-scheduler openstack-nova-placement-api -y
 
 2)快速修改 nova 配置
 openstack-config --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata
 openstack-config --set /etc/nova/nova.conf DEFAULT my_ip 127.0.0.1
 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
 openstack-config --set /etc/nova/nova.conf DEFAULT transport_url rabbit://openstack:openstack@controller
 openstack-config --set /etc/nova/nova.conf api_database connection mysql+pymysql://nova:nova@controller/nova_api
 openstack-config --set /etc/nova/nova.conf database connection mysql+pymysql://nova:nova@controller/nova
 openstack-config --set /etc/nova/nova.conf placement_database connection mysql+pymysql://placement:placement@controller/placement
 openstack-config --set /etc/nova/nova.conf api auth_strategy keystone
 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3
 openstack-config --set /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
 openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_type password
 openstack-config --set /etc/nova/nova.conf keystone_authtoken project_domain_name default
 openstack-config --set /etc/nova/nova.conf keystone_authtoken user_domain_name default
 openstack-config --set /etc/nova/nova.conf keystone_authtoken project_name service
 openstack-config --set /etc/nova/nova.conf keystone_authtoken username nova
 openstack-config --set /etc/nova/nova.conf keystone_authtoken password nova
 openstack-config --set /etc/nova/nova.conf vnc enabled true
 openstack-config --set /etc/nova/nova.conf vnc server_listen ‘
    
     
      
       
        m
       
       
        
         y
        
        
         i
        
       
       
        
         p
        
        
         ′
        
       
       
        o
       
       
        p
       
       
        e
       
       
        n
       
       
        s
       
       
        t
       
       
        a
       
       
        c
       
       
        k
       
       
        −
       
       
        c
       
       
        o
       
       
        n
       
       
        f
       
       
        i
       
       
        g
       
       
        −
       
       
        −
       
       
        s
       
       
        e
       
       
        t
       
       
        /
       
       
        e
       
       
        t
       
       
        c
       
       
        /
       
       
        n
       
       
        o
       
       
        v
       
       
        a
       
       
        /
       
       
        n
       
       
        o
       
       
        v
       
       
        a
       
       
        .
       
       
        c
       
       
        o
       
       
        n
       
       
        f
       
       
        v
       
       
        n
       
       
        c
       
       
        s
       
       
        e
       
       
        r
       
       
        v
       
       
        e
       
       
        
         r
        
        
         p
        
       
       
        r
       
       
        o
       
       
        x
       
       
        y
       
       
        c
       
       
        l
       
       
        i
       
       
        e
       
       
        n
       
       
        
         t
        
        
         a
        
       
       
        d
       
       
        d
       
       
        r
       
       
        e
       
       
        s
       
       
        
         s
        
        
         ′
        
       
      
      
       my_ip' openstack-config --set /etc/nova/nova.conf vnc server_proxyclient_address '
      
     
    myip′openstack−config−−set/etc/nova/nova.confvncserverproxyclientaddress′my_ip’
 openstack-config --set /etc/nova/nova.conf glance api_servers http://controller:9292
 openstack-config --set /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
 openstack-config --set /etc/nova/nova.conf placement region_name RegionOne
 openstack-config --set /etc/nova/nova.conf placement project_domain_name Default
 openstack-config --set /etc/nova/nova.conf placement project_name service
 openstack-config --set /etc/nova/nova.conf placement auth_type password
 openstack-config --set /etc/nova/nova.conf placement user_domain_name Default
 openstack-config --set /etc/nova/nova.conf placement auth_url http://controller:5000/v3
 openstack-config --set /etc/nova/nova.conf placement username placement
 openstack-config --set /etc/nova/nova.conf placement password placement
 openstack-config --set /etc/nova/nova.conf scheduler discover_hosts_in_cells_interval 300
 openstack-config --set /etc/nova/nova.conf libvirt virt_type qemu
校验生效的 nova 配置
 egrep -v “#|$” /etc/nova/nova.conf
 
 
 
 
 3)修改 nova 的虚拟主机配置文件
 vi /etc/httpd/conf.d/00-nova-placement-api.conf
 
 重启 httpd 服务
 systemctl restart httpd
 systemctl status httpd
 
4.4.同步 nova 数据(注意同步顺序)
nova_api 有 32 张表,placement 有 32 张表,nova_cell0 有 110 张表,nova 也有110 张表
 1)初始化 nova-api 和 placement 数据库
 su -s /bin/sh -c “nova-manage api_db sync” nova
 
 
 
 
 2)初始化 nova_cell0 和 nova 数据库
 注册 cell0 数据库
 su -s /bin/sh -c “nova-manage cell_v2 map_cell0” nova
 创建 cell1 单元
 su -s /bin/sh -c “nova-manage cell_v2 create_cell --name=cell1 --verbose” nova
 初始化 nova 数据库
 su -s /bin/sh -c “nova-manage db sync” nova
 检查确认 cell0 和 cell1 注册成功
 su -s /bin/sh -c “nova-manage cell_v2 list_cells” nova
 验证数据库
 mysql -h127.0.0.1 -unova -pnova -e “use nova_cell0;show tables;”
 mysql -h127.0.0.1 -unova -pnova -e “use nova;show tables;”
 
 
 
 
 
 5)检查确认 cell0 和 cell1 注册成功
 su -s /bin/sh -c “nova-manage cell_v2 list_cells” nova
 
4.5.启动 nova 服务
1)启动 nova 服务并设置为开机自启动
 需要启动 nova 的 5 个服务
 systemctl start openstack-nova-api.service openstack-nova-consoleauth.service 
 openstack-nova-scheduler.service openstack-nova-conductor.service 
 openstack-nova-novncproxy.service
 systemctl status openstack-nova-api.service openstack-nova-consoleauth.service 
 openstack-nova-scheduler.service openstack-nova-conductor.service 
 openstack-nova-novncproxy.service
 systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service 
 openstack-nova-scheduler.service openstack-nova-conductor.service 
 openstack-nova-novncproxy.service
 systemctl list-unit-files |grep openstack-nova* |grep enabled
 
 
 
 在控制节点安装 nova 计算服务就完成
总结
  Nova是OpenStack云中的计算组织控制器。支持OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。这样使得Nova成为一个负责管理计算资源、网络、认证、所需可扩展性的平台。
   功能和特点:
 1.实例生命周期管理
 2.管理计算资源
 3.网络和认证管理
 4.REST风格的API
 5.异步的一致性通信
 6.Hypervisor透明:支持Xen,XenServer/XCP, KVM, UML, VMware vSphere and Hyper-V
 7.Nova是openstack中最核心的组件。openstack的其他组件归根结底是为Nova组件服务的
 8.Nova服务是由多个子服务构成,子服务是通过RPC实现通信。服务之间有很松的耦合性
 9.概念框架与逻辑框架的对应
  Nova 在整个 OpenStack 架构中的位置如下图:
 
 Nova服务:
- nova-API :nova-api是nova组件的接口服务进程;nova-api向外暴露REST API接口(Endpoints)以提供服务; nova-api兼容Amazon EC2 API, 基于nova-api开发的工具可以管理OpenStack和Amazon EC2
- nova-compute :nova-compute在计算节点上管理虚拟机实例:创建、删除等的管理
- nova-scheduler :创建Instance时,用户需要CPU、内存等资源,nova-scheduler自动实现对CPU等资源的调度;
- nova-conductor :nova-conductor实现数据库访问,为nova-compute提供instances信息。
 基于安全和可扩展性的考虑,nova-compute不直接访问数据库,而是分离出nova-conductor来
 访问数据库。
- nova-consoleauth :对访问虚拟机控台的请求提供Token认证
- Database :使用MySQL,位于控制节点,存放Nova运行时信息
控制节点架构:
 控制节点包括以下服务
   管理支持服务
   基础管理服务
   扩展管理服务
   1)管理支持服务包含MySQL与Qpid两个服务
 MySQL:数据库作为基础/扩展服务产生的数据存放的地方
 Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
   2)基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
 Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
 Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
 Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
 Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
 Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard
   3)扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
 Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
 Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
 Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
 Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。
 Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
   控制节点一般来说只需要一个网络端口用于通信/管理各个节点









