news 2026/8/26 15:15:38

OpenStack 私有云实战 1—— 控制节点基础组件与认证服务搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenStack 私有云实战 1—— 控制节点基础组件与认证服务搭建

1 简介

OpenStack 是一套开源 IaaS(基础设施即服务)云平台,由 NASA 与 Rackspace 联合发起,采用 Python 开发,采用模块化松耦合架构,用来把多台物理服务器的 CPU、内存、硬盘、网络统一池化,搭建私有云、混合云环境腾讯云。
它本身不做虚拟化,底层依托 KVM 等 Hypervisor 生成虚拟机;对外提供 API 与 Web 页面,实现云主机、云硬盘、虚拟网络的自助创建、调度与生命周期管理。

  • 核心组件
  1. Keystone(身份认证):整个云平台的认证中心,负责用户、角色、令牌、服务端点管理,所有服务请求都要经过它鉴权。
  2. Glance(镜像服务):镜像仓库,存放 qcow2 系统镜像,Nova 创建云主机时从此处读取镜像模板。
  3. Nova(计算服务):管理虚拟机生命周期,接收请求,调度虚拟机运行到合适的计算节点。
  4. Neutron(网络服务):软件定义网络,管理虚拟网络、子网、路由器、DHCP,实现云主机网络隔离与互通。
  5. Cinder(块存储):提供云硬盘,可以挂载给云主机做持久化存储。
  6. Horizon(仪表盘):Web 图形管理界面,可视化操作全部云资源。
  • 底层依赖:
  1. MariaDB:数据库,存储各个组件元数据;
  2. RabbitMQ 消息队列:各个组件之间异步消息通信,实现跨节点服务调用。
  • 节点角色
  1. 控制节点 Controller:运行 API、调度、数据库、消息队列,负责接收请求、做调度决策。
  2. 计算节点 Compute:真正运行虚拟机实例,安装 nova‑compute,调用 KVM 生成虚拟机。
  • 用户创建云主机简要流程
  1. 用户登录 Horizon 或者调用 API,请求创建云主机;
  2. Keystone 校验用户身份,返回访问令牌;
  3. Nova 接收请求,调度器挑选一台空闲的计算节点;
  4. Nova 向 Glance 获取操作系统镜像;向 Neutron 申请虚拟网卡;向 Cinder 申请云硬盘;
  5. 计算节点调用 KVM,拉起虚拟机实例;
  6. Neutron 配置网络,云主机启动完成。

2 控制节点配置

此次部署参考官方文档https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/

2.1 初始化

开一个全新的虚拟机,添加第二块网卡

OpenStack 环境一般不使用 NetworkManager 管理网卡,关闭服务并禁止开机自启,给 eth0 配置静态 IP,eth1 不设置IP

[root@localhost ~]# systemctl disable --now NetworkManager[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0


重启 network 服务生效

[root@localhost ~]# systemctl restart network

主机名设为 controller,在解析文件里加入计算节点和块存储节点

[root@localhost ~]# hostnamectl set-hostname controller[root@localhost ~]# vim /etc/hosts[root@localhost ~]# logout

重连后生效,确认环境正常,包括解析、时间同步、防火墙等



配置 openstack 库

[root@controller ~]# tar xf mitaka.tar -C /opt/[root@controller ~]# vim /etc/yum.repos.d/openstack.repo


升级包,重启后生效

[root@controller ~]# yum upgrade[root@controller ~]# reboot[root@controller ~]# yum repolist

2.2 SQL数据库

安装软件包并编辑配置文件

[root@controller ~]# yum install python-openstackclient[root@controller ~]# yum install mariadb mariadb-server python2-PyMySQL[root@controller ~]# vim /etc/my.cnf.d/openstack.cnf


启动数据库服务,并对其进行初始化

[root@controller ~]# systemctl enable --now mariadb.service[root@controller ~]# mysql_secure_installation

2.3 消息队列

下载安装包,启动消息队列服务并将其配置为自启动

[root@controller ~]# yum install rabbitmq-server[root@controller ~]# systemctl enable --now rabbitmq-server.service

添加 openstack 用户,密码与用户名设置为相同,并给openstack用户配置写和读权限
因涉及密码较多,此后所有的密码都设置为与用户名相同

[root@controller ~]# rabbitmqctl add_user openstack openstack[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"

测试,非必要

[root@controller ~]# rabbitmq-plugins enable rabbitmq_management[root@controller ~]# rabbitmqctl set_user_tags openstack administrator[root@controller ~]# rabbitmqctl list_users[root@controller ~]# systemctl restart rabbitmq-server



2.4 Memcached

安装软件包,设置开机自启

[root@controller ~]# yum install memcached python-memcached[root@controller ~]# vim /etc/sysconfig/memcached

[root@controller ~]# systemctl enable --now memcached.service

2.5 认证服务

在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌

[root@controller ~]# mysql -u root -p123456MariaDB[(none)]>CREATE DATABASE keystone;MariaDB[(none)]>GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'localhost'IDENTIFIED BY'keystone';MariaDB[(none)]>GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'%'IDENTIFIED BY'keystone';MariaDB[(none)]>quit


Keystone 身份认证组件配置

[root@controller ~]# yum install openstack-keystone httpd mod_wsgi[root@controller ~]# openssl rand -hex 10# 生成一个随机值在初始的配置中作为管理员的令牌

[root@controller ~]# vim /etc/keystone/keystone.conf




初始化身份认证服务的数据库和 Fernet keys

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

2.6 配置 Apache HTTP 服务器

[root@controller ~]# vim /etc/httpd/conf/httpd.conf

[root@controller ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf


测试

启动服务并设置为开机自启

[root@controller ~]# systemctl enable --now httpd.service

2.7 创建服务实体和API端点

[root@controller ~]# export OS_TOKEN=19a89d65122bba5ccc97# 配置认证令牌[root@controller ~]# export OS_URL=http://controller:35357/v3# 配置端点URL[root@controller ~]# export OS_IDENTITY_API_VERSION=3# 配置认证 API 版本

创建服务实体和身份认证服务

[root@controller ~]# openstack service create --name keystone --description "OpenStack Identity" identity


创建认证服务的 API 端点

[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3

[root@controller ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

[root@controller ~]# openstack endpoint list

[root@controller ~]# openstack service list

2.8 创建域、项目、用户和角色

创建域default

[root@controller ~]# openstack domain create --description "Default Domain" default


创建 admin 项目

[root@controller ~]# openstack project create --domain default --description "Admin Project" admin


创建 admin 用户

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


创建 admin 角色

[root@controller ~]# openstack role create admin


添加admin角色到 admin 项目和用户上

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

创建service项目

[root@controller ~]# openstack project create --domain default --description "Service Project" service


常规(非管理)任务应该使用无特权的项目和用户
创建 demo 项目和用户

创建demo项目

[root@controller ~]# openstack project create --domain default --description "Demo Project" demo


创建demo用户

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


创建 user 角色

[root@controller ~]# openstack role create user


添加 user角色到demo 项目和用户

[root@controller ~]# openstack role add --project demo --user demo user

2.9 验证操作

重置OS_TOKENOS_URL环境变量,作为 admin 用户,请求认证令牌

[root@controller ~]# unset OS_TOKEN OS_URL[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue


作为demo用户,请求认证令牌

[root@controller ~]# openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue

2.10 创建 OpenStack 客户端环境脚本

编写admin‑openrc环境变量文件,定义 Keystone 认证地址、admin 项目、管理员用户与密码等认证参数,后续加载该文件可自动带入管理员身份执行 openstack 命令

[root@controller ~]# vim admin-openrc


编写demo‑openrc环境变量文件,定义 Keystone 认证地址、demo 项目、普通用户与密码等认证参数,后续加载该文件可自动带入普通租户身份执行 openstack 命令

[root@controller ~]# vim demo-openrc


添加执行权限

[root@controller ~]# chmod +x admin-openrc demo-openrc

加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书

[root@controller ~]# . admin-openrc[root@controller ~]# openstack user list


加载demo‑openrc文件来身份认证服务的环境变量位置和demo项目和用户证书

[root@controller ~]# . demo-openrc[root@controller ~]# openstack user list


退出重连,再测试脚本

[root@controller ~]# logout

脚本失效,需要重新加载

[root@controller ~]# . admin-openrc[root@controller ~]# openstack user list[root@controller ~]# openstack role list[root@controller ~]# openstack service list[root@controller ~]# openstack endpoint list[root@controller ~]# openstack project list[root@controller ~]# openstack domain list

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 15:12:27

上传文件夹时有文件打开状态导致失败问题

背景&#xff1a;使用ElementPlus的<el-upload>的directory上传文件夹属性时&#xff0c;文件夹里的所有文件在没有打开的情况下是可以正常上传并且成功的&#xff0c;但如果其中的某个文件处于打开状态&#xff0c;上传就会出问题&#xff0c;接口报红如图一所示&#x…

作者头像 李华
网站建设 2026/8/26 15:11:15

零依赖仅3KB的文本高亮魔法:Fokus JavaScript高亮库完整入门指南

零依赖仅3KB的文本高亮魔法&#xff1a;Fokus JavaScript高亮库完整入门指南 【免费下载链接】Fokus 项目地址: https://gitcode.com/gh_mirrors/fo/Fokus Fokus 是一款零依赖、体积仅约 3KB 的 JavaScript 文本高亮库&#xff1a;只要用户选中页面上的任意内容&#x…

作者头像 李华
网站建设 2026/8/26 15:11:02

从场景标题到对白:Fountain剧本格式全部12种元素类型速查清单

从场景标题到对白&#xff1a;Fountain剧本格式全部12种元素类型速查清单 【免费下载链接】Fountain An open source implementation of the Fountain screenplay formatting language. 项目地址: https://gitcode.com/gh_mirrors/foun/Fountain Fountain 是一种用纯文本…

作者头像 李华
网站建设 2026/8/26 15:11:01

基于SpringBoot的松居智能家居销售管理系统毕业设计项目源码文档

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华