开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

安装Openstack插件

ubs-openstack 的发布件运行包主要用于在生产环境中与周边 OpenStack 等模块交互,提供超分场景虚机热迁移逃生能力、碎片场景虚机创建调度管理能力。如在虚拟化场景使用内存碎片化场景的虚拟机创建和调度管理能力,则需要按照如下步骤安装

  1. 按UBS OpenStack下载链接拉取源码构建ubs-openstack-python3.11-<version>.aarch64.rpm包
  2. 在所有节点安装ubs-openstack-python3.11-<version>.aarch64.rpm包。
    yum install -y patch && rpm -ivh ubs-openstack-python3.11-<version>.aarch64.rpm
    usermod -aG ubse ubs-scheduler
    usermod -aG ubse nova
    • UBS OpenStack Enable的RPM包安装提示,若提示如下:
    • 【文件不存在】:根据提示检查相应组件是否已安装部署,若未安装,则安装相应组件。
    • 【配置不存在】:根据提示检查并修改相应文件的配置项。
  3. 在控制节点利用openstack创建UBS Scheduler用户、服务和服务端点。
    1. 创建ubs-scheduler用户,并根据提示输入密码。
      source ~/.admin-openrc 
      openstack user create ubs-scheduler --password-prompt --project service --domain default   #根据提示输入密码
    2. 为ubs-scheduler用户分配admin角色,并创建ubs-scheduler服务、为ubs-scheduler服务创建服务端点。
      openstack role add admin --project service --user ubs-scheduler 
      openstack service create --name ubs-scheduler --description "Ubs scheduler Service" ubs-scheduler 
      openstack endpoint create --region RegionOne ubs-scheduler admin http://controller:7878 
      openstack endpoint create --region RegionOne ubs-scheduler public http://controller:7878 
      openstack endpoint create --region RegionOne ubs-scheduler internal http://controller:7878
    3. 查看创建后的ubs-scheduler用户、服务和服务端点,可看到user表中有ubs-scheduler用户、service表中有ubs-scheduler服务、endpoint表中有admin、public、internal三种类型的服务端点。
      openstack user list 
      openstack service list 
      openstack endpoint list
  4. 服务运行依赖fastapi与uvicorn,所有节点执行以下步骤:
    pip install --trusted-host mirrors.tools.huawei.com -i https://mirrors.tools.huawei.com/pypi/simple fastapi==0.115.11 uvicorn==0.34.0 grpcio==1.60.0 --target /usr/lib/python3.11/site-packages --upgrade 
  5. 在控制节点检查数据库版本和配置,如果MySQL缺临时文件配置,则对MySQL进行配置。
    表1 数据库组件版本

    软件名称

    版本

    MySQL

    10.5.24-MariaDB

    数据库其它组件(包括SQLAlchemy)

    1.3.23

    Alembic

    1.5.7

    1. 编辑配置文件/etc/my.cnf。
      vi /etc/my.cnf
    2. 按“i”进入编辑模式,在[mysqld]模块下添加如下配置。
      tmpdir=/tmp
    3. 按“ESC”,输入:wq!,按“Enter”保存并退出。
    4. 重新启动mysql进程。
      systemctl restart mysql
  6. 在控制节点利用mysql创建ubs-scheduler数据库和用户并授权。
    1. 查看是否存在ubs_scheduler数据库。
      mysql -u root -p  #以root用户登录mysql数据库
      create database ubs_scheduler;
      CREATE USER 'ubs_scheduler'@'%' IDENTIFIED BY 'UBS_SCHEDULER_DBPASS'; 
      GRANT ALL PRIVILEGES ON ubs_scheduler.* TO 'ubs_scheduler'@'%' WITH GRANT OPTION; 
      FLUSH PRIVILEGES;

      此处将数据库的名称和用户名设置成“ubs_scheduler”,因为"-"在数据库中是减法运算,设置成“ubs-scheduler”在每次使用时都需要用反引号包裹

      将UBS_SCHEDULER_DBPASS替换为ubs-scheduler数据库用户的密码。为保障操作系统用户安全,避免密码过期导致节点连接异常及出现密码破解等安全风险,请定期修改用户密码,且至少满足如下要求:

      • 密码长度为8~32个字符。
      • 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合。
      • 密码不能包含空格。
      • 密码不能为用户名包含其逆序。
    2. 退出MySQL数据库。
      exit;
    3. 修改配置数据库,编辑/etc/ubs_scheduler/ubs-scheduler.toml文件,修改
      database_url = "mysql+pymysql://ubs_scheduler:UBS_SCHEDULER_DBPASS@controller:3306/ubs_scheduler"

      UBS_SCHEDULER_DBPASS:前面创建ubs_scheduler用户的数据库密码

    4. 退出数据库,在节点执行数据库创建脚本将ubs-scheduler依赖的所有表项创建完成。
      /usr/bin/python3 /usr/lib/python3.11/site-packages/ubs_scheduler/infrastructure/db/create_table.py
    5. 进入数据库,查看表是否创建成功。
      mysql -u root -p123456 
      use ubs_scheduler; 
      show tables;
      exit

      其中123456为前面创建的数据库的密码,需要根据实际设置值更新

  7. 配置ubs_scheduler相关文件。
    1. 所有节点修改/etc/ubs_scheduler/ubs-scheduler.toml。
      [server]
      my_ip = "<当前节点ip>"
      controller_ip = "<管理节点ip>"
      
      [log]
      log_level = "DEBUG"
      
      [ubs_scheduler_session]
      server_password = "UBS_SCHEDULER_DBPASS"
      database_url = "mysql+pymysql://ubs_scheduler:UBS_SCHEDULER_DBPASS@controller:3306/ubs_scheduler"
    2. 所有节点修改/etc/nova/nova.conf。
      [DEFAULT]
      rpc_response_timeout = 600
      ram_allocation_ratio = 1.25
      hccs_enable = False
      compute_driver = rackdriver.RackDriver
      compute_monitors = rack_driver
      
      [filter_scheduler]
      enabled_filters = ServerGroupAntiAffinityFilter,AggregateInstanceExtraSpecsFilter,RackVMDecisionFilter,UbsSchedulerNUMATopologyFilter
      
      [libvirt]
      live_migration_completion_timeout = 1000
      live_migration_downtime = 200000
    3. 控制节点修改/etc/keystone/keystone.conf。
      [token]
      expiration = 36000
    • my_ip为当前节点的IP地址。
    • controller_ip为管理节点的IP地址。
    • 将UBS_SCHEDULER_DBPASS替换为步骤6中设置的密码。
    • ram_allocation_ratio 取值范围为[1.0,1.8],表示超分比例在 100%~180% 之间(在内存超分场景下:1.0<x<=1.8;而在内存碎片场景下,即仅使用虚拟机内存借用不超分:x=1.0)默认配置成1.25为超分场景。
  8. 所有节点启动ubs-scheduler-controller、ubs-scheduler-agent服务。
    systemctl restart ubs-scheduler-controller    # 仅在控制节点执行
    systemctl restart ubs-scheduler-agent         # 在所有计算节点执行