安装Openstack插件
ubs-openstack 的发布件运行包主要用于在生产环境中与周边 OpenStack 等模块交互,提供超分场景虚机热迁移逃生能力、碎片场景虚机创建调度管理能力。如在虚拟化场景使用内存碎片化场景的虚拟机创建和调度管理能力,则需要按照如下步骤安装
- 按UBS OpenStack下载链接拉取源码构建ubs-openstack-python3.11-<version>.aarch64.rpm包
- 在所有节点安装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包安装提示,若提示如下:
- 【文件不存在】:根据提示检查相应组件是否已安装部署,若未安装,则安装相应组件。
- 【配置不存在】:根据提示检查并修改相应文件的配置项。
- 在控制节点利用openstack创建UBS Scheduler用户、服务和服务端点。
- 创建ubs-scheduler用户,并根据提示输入密码。
source ~/.admin-openrc openstack user create ubs-scheduler --password-prompt --project service --domain default #根据提示输入密码
- 为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
- 查看创建后的ubs-scheduler用户、服务和服务端点,可看到user表中有ubs-scheduler用户、service表中有ubs-scheduler服务、endpoint表中有admin、public、internal三种类型的服务端点。
openstack user list openstack service list openstack endpoint list
- 创建ubs-scheduler用户,并根据提示输入密码。
- 服务运行依赖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
- 在控制节点检查数据库版本和配置,如果MySQL缺临时文件配置,则对MySQL进行配置。
表1 数据库组件版本 软件名称
版本
MySQL
10.5.24-MariaDB
数据库其它组件(包括SQLAlchemy)
1.3.23
Alembic
1.5.7
- 编辑配置文件/etc/my.cnf。
vi /etc/my.cnf
- 按“i”进入编辑模式,在[mysqld]模块下添加如下配置。
tmpdir=/tmp
- 按“ESC”,输入:wq!,按“Enter”保存并退出。
- 重新启动mysql进程。
systemctl restart mysql
- 编辑配置文件/etc/my.cnf。
- 在控制节点利用mysql创建ubs-scheduler数据库和用户并授权。
- 查看是否存在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个字符。
- 必须包含大写字母、小写字母、数字、特殊字符(`~!@#$%^&*()-_=+\|[{}];:'",<.>/?)中的两种及以上类型的组合。
- 密码不能包含空格。
- 密码不能为用户名包含其逆序。
- 退出MySQL数据库。
exit;
- 修改配置数据库,编辑/etc/ubs_scheduler/ubs-scheduler.toml文件,修改
database_url = "mysql+pymysql://ubs_scheduler:UBS_SCHEDULER_DBPASS@controller:3306/ubs_scheduler"
UBS_SCHEDULER_DBPASS:前面创建ubs_scheduler用户的数据库密码
- 退出数据库,在节点执行数据库创建脚本将ubs-scheduler依赖的所有表项创建完成。
/usr/bin/python3 /usr/lib/python3.11/site-packages/ubs_scheduler/infrastructure/db/create_table.py
- 如果出现建表无访问权限,参考ubs_scheduler数据库建表提示无访问权限的解决方案。
- 如果出现给ubs_scheduler数据库创错表的情况,参考ubs_scheduler数据库表创建错误的解决方案。
- 如果出现忘记ubs_scheduler数据库密码导致连接ubs_scheduler数据库失败的情况,参考因密码丢失连接ubs_scheduler数据库失败的解决方案。
- 进入数据库,查看表是否创建成功。
mysql -u root -p123456 use ubs_scheduler; show tables; exit
其中123456为前面创建的数据库的密码,需要根据实际设置值更新
- 查看是否存在ubs_scheduler数据库。
- 配置ubs_scheduler相关文件。
- 所有节点修改/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"
- 所有节点修改/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
- 控制节点修改/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为超分场景。
- 所有节点修改/etc/ubs_scheduler/ubs-scheduler.toml。
- 所有节点启动ubs-scheduler-controller、ubs-scheduler-agent服务。
systemctl restart ubs-scheduler-controller # 仅在控制节点执行 systemctl restart ubs-scheduler-agent # 在所有计算节点执行
父主题: 虚拟化环境部署