云计算实验实操|Keystone安装配置+CloudSim仿真平台部署(超详细图文版)

云计算实验实操|Keystone安装配置+CloudSim仿真平台部署(超详细图文版)

前言

最近完成了云计算技术的两个核心基础实验,分别是OpenStack Keystone身份认证服务的安装与配置CloudSim云计算仿真平台的部署与使用,两个实验均基于Ubuntu 20.04 LTS系统完成,涵盖了OpenStack云平台基础组件部署和云计算仿真工具使用两大核心内容。

实操过程中踩了不少版本兼容、命令语法的坑,也积累了很多Linux实操和云计算基础的经验,现在把完整的实验流程、问题解决方法整理出来,分享给刚入门云计算的小伙伴,全程步骤清晰、亲测有效,跟着做就能顺利完成实验~

实验一:OpenStack Keystone身份认证服务安装与配置

实验简介

Keystone是OpenStack云平台的统一身份认证服务,相当于云平台的"门禁系统",负责用户身份验证、权限授权、服务目录管理,是部署OpenStack其他组件的基础,本次实验完成单节点Keystone的完整安装、配置与功能验证。

实验环境

  • 硬件:虚拟机(2核CPU、4GB内存、40GB硬盘),宿主机为普通台式机/笔记本
  • 软件:Ubuntu 20.04 LTS 64位、MySQL 8.0、Apache2、Keystone、Python3-openstackclient

完整实操步骤

1. 前期排障与环境更新

解决Ubuntu apt进程锁定问题,更新软件源,避免安装失败:

bash 复制代码
# 解除apt进程锁定(如有报错执行)
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
# 更新软件源
sudo apt update && sudo apt upgrade -y
# 切换为root管理员(后续全程root操作,省却sudo)
sudo -i
2. MySQL数据库搭建(Keystone数据存储)

Keystone的认证信息需存储在MySQL中,创建专属数据库和用户并授权:

bash 复制代码
# 安装MySQL服务和客户端
apt install mysql-server mysql-client -y
# 免密登录MySQL
mysql

进入mysql>提示符后,依次执行以下SQL命令(结尾必须加;):

sql 复制代码
# 创建Keystone专属数据库
CREATE DATABASE keystone;
# 创建本地访问用户并授权(密码cqu2022,可自定义)
CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'cqu2022';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost';
# 创建远程访问用户并授权(实验环境需要)
CREATE USER 'keystone'@'%' IDENTIFIED BY 'cqu2022';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';
# 刷新权限,让配置生效
FLUSH PRIVILEGES;
# 退出MySQL
exit;

测试数据库登录 :输入mysql -h localhost -ukeystone -p,输入密码cqu2022能成功登录即完成。

3. Keystone及配套组件安装

安装Keystone主程序、Apache2 Web服务器(Keystone对外接口)、Python3版WSGI模块(衔接Apache和Keystone):

bash 复制代码
# 核心组件安装(注意wsgi的Python3版本,避免依赖报错)
apt install keystone apache2 libapache2-mod-wsgi-py3 -y
4. 核心配置文件修改
(1)修改Keystone配置文件(数据库连接+令牌加密)
bash 复制代码
# 用vim打开配置文件
vim /etc/keystone/keystone.conf
  • PageDown翻页找到[database]段,注释默认sqlite连接,新增MySQL连接(注意pymysql是字母l,不是数字1 ):

    ini 复制代码
    [database]
    #connection=sqlite:///var/lib/keystone/keystone.db  # 注释原有行
    connection=mysql+pymysql://keystone:cqu2022@localhost/keystone  # 新增行
  • 继续翻页找到[token]段,设置令牌加密方式为Fernet:

    ini 复制代码
    [token]
    provider = fernet  # 确保无注释
  • Esc,输入:wq保存退出vim。

(2)修改Apache配置文件(指定服务端地址)
bash 复制代码
# 用vim打开配置文件
vim /etc/apache2/apache2.conf
  • 翻到文件末尾,新增一行:ServerName localhost
  • Esc,输入:wq保存退出。
5. Keystone服务初始化
bash 复制代码
# 同步Keystone数据库(给MySQL的keystone库建表)
su -s /bin/bash keystone -c "keystone-manage db_sync"
# 初始化Fernet密钥和凭证存储库(令牌加密必备)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# 引导Keystone身份服务(配置管理员密码、服务地址)
keystone-manage bootstrap --bootstrap-password cqu2022 \
--bootstrap-admin-url http://localhost:5000/v3/ \
--bootstrap-internal-url http://localhost:5000/v3/ \
--bootstrap-public-url http://localhost:5000/v3/ \
--bootstrap-region-id RegionOne
# 重启Apache,让所有配置生效
systemctl restart apache2
6. 配置环境变量,简化OpenStack命令操作
bash 复制代码
# 创建目录存放环境变量文件
cd ~
mkdir openrc
chmod -R 777 openrc
vim ~/openrc/keystonerc

在文件中输入以下环境变量配置(直接复制):

bash 复制代码
export OS_USERNAME=admin
export OS_PASSWORD=cqu2022
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://localhost:5000/v3
export OS_IDENTITY_API_VERSION=3

保存退出后,让环境变量生效并测试:

bash 复制代码
# 生效环境变量(. 后面有空格)
. ~/openrc/keystonerc
# 测试,输出admin即生效
echo $OS_USERNAME
7. 安装OpenStack客户端,验证Keystone服务
bash 复制代码
# 安装OpenStack命令行客户端工具
apt install python3-openstackclient -y
# 核心验证:获取认证令牌(token)
openstack token issue

执行成功标志 :终端输出包含id(令牌)、project_iduser_idexpires(过期时间)的信息,无红色报错。

8. 拓展:创建域/项目/用户/角色(权限管理)
bash 复制代码
# 创建示例域
openstack domain create --description "An Example Domain" example
# 创建服务项目
openstack project create --domain default --description "Service Project" service
# 创建演示项目
openstack project create --domain default --description "Demo Project" myproject
# 创建普通用户(密码cqu2022)
openstack user create --domain default --password cqu2022 myuser
# 创建自定义角色
openstack role create myrole
# 给用户分配角色
openstack role add --project myproject --user myuser myrole
# 查看所有资源
openstack domain list && openstack project list && openstack user list && openstack role list

实验一常见问题及解决方法

  1. MySQL授权报错ERROR 1410 (42000):You are not allowed to create a user with GRANT
    原因:MySQL8.0取消了GRANT直接创建用户的功能,解决:先创建用户,再授权(见步骤2)。
  2. wsgi安装报错 :依赖包找不到
    原因:使用了Python2版wsgi,解决:替换为libapache2-mod-wsgi-py3
  3. openstack命令不存在 :提示命令未找到
    原因:未安装客户端工具,解决:安装python3-openstackclient
  4. Vim快速查找失效 :按/输入关键词无反应
    解决:放弃快速查找,用PageDown手动翻页找配置段。

实验二:CloudSim云计算仿真平台安装与使用

实验简介

CloudSim是开源的云计算仿真平台,基于Java开发,无需真实的云计算硬件环境,即可模拟云数据中心、虚拟机、云任务的调度与执行,是研究云计算资源调度算法的重要工具。本次实验完成CloudSim 4.0的下载、部署、环境配置及基础仿真样例的运行。

实验环境

  • 硬件:同实验一(虚拟机2核4G即可)
  • 软件:Ubuntu 20.04 LTS 64位、OpenJDK 8、CloudSim 4.0、wget(下载工具)

完整实操步骤

1. 前期准备:安装下载工具(如有则跳过)
bash 复制代码
# 切换为root管理员
sudo -i
# 安装wget(外网下载CloudSim安装包)
apt install wget -y
2. 下载CloudSim 4.0安装包

从官方开源地址直接下载tar.gz格式安装包,无需手动传文件:

bash 复制代码
# 下载安装包(直接复制命令,自动下载到root家目录)
wget https://github.com/Cloudslab/cloudsim/releases/download/cloudsim-4.0/cloudsim-4.0.tar.gz

下载成功标志 :终端显示下载进度100%,提示saved

3. 安装Java运行环境(CloudSim必备)

CloudSim基于Java开发,必须使用JDK8,高版本会出现兼容性问题:

bash 复制代码
# 安装OpenJDK 8(精简版,满足运行需求)
apt install openjdk-8-jre-headless -y
# 验证Java版本,输出1.8.0系列即成功
java -version
4. 解压CloudSim安装包
bash 复制代码
# 解压tar.gz包(直接在下载目录执行)
tar -zxvf cloudsim-4.0.tar.gz
# 进入解压后的CloudSim目录
cd cloudsim-4.0
# 查看平台提供的8个基础仿真样例
cat examples.txt

执行后终端会列出CloudSimExample1CloudSimExample8,并说明每个样例的仿真场景。

5. 运行基础仿真样例

CloudSim的核心运行包在jars目录下,进入该目录执行仿真命令:

bash 复制代码
# 进入jars子目录
cd jars/
# 运行CloudSimExample2(核心样例,双任务双虚拟机仿真)
java -classpath cloudsim-4.0.jar:cloudsim-examples-4.0.jar org.cloudbus.cloudsim.examples.CloudSimExample2

执行成功标志 :终端滚动输出仿真信息,最后显示Simulation completed.CloudSimExample2 finished!,并输出云任务执行结果(包含任务ID、执行状态、开始/结束时间等)。

6. 拓展:运行其他仿真样例

只需修改命令中最后一个样例名称,即可运行其他示例,比如运行CloudSimExample1:

bash 复制代码
# 运行CloudSimExample1(单任务单虚拟机仿真)
java -classpath cloudsim-4.0.jar:cloudsim-examples-4.0.jar org.cloudbus.cloudsim.examples.CloudSimExample1

实验二常见问题及解决方法

  1. wget命令未找到 :提示wget: command not found
    解决:安装wget工具,命令apt install wget -y
  2. 解压报错No such file or directory
    原因:未在安装包所在目录执行命令,解决:cd切换到root家目录(下载目录)再解压。
  3. Java主类找不到 :提示错误: 找不到或无法加载主类
    原因:未进入jars目录,解决:cd cloudsim-4.0/jars切换到正确路径。
  4. Java版本不兼容 :运行时出现大量报错
    原因:安装了高版本Java,解决:卸载现有Java,重新安装openjdk-8-jre-headless

两个实验核心收获与总结

1. 实操能力提升

  • 熟练掌握Ubuntu 20.04 LTS系统的核心命令:apt安装、mysql操作、vim编辑、cd/ls/mkdir目录管理、systemctl服务管理等;
  • 学会解决Linux实操中常见的版本兼容、路径错误、命令语法、进程锁定等问题,提升自主排障能力。

2. 云计算基础认知

  • 理解OpenStack云平台的核心架构:Keystone作为身份认证核心,是所有组件的基础,Apache2为其提供对外接口,MySQL存储认证数据;
  • 理解云计算仿真的核心价值:CloudSim无需真实硬件,即可模拟云计算的核心组件(数据中心、虚拟机、云任务)和调度过程,是云计算算法研究的低成本工具;
  • 掌握云计算的两个核心概念:身份认证与权限管理 (Keystone)、资源调度与任务执行(CloudSim)。

3. 实操核心原则

  • 版本匹配是关键:无论是Keystone与MySQL、Java与CloudSim,软件版本必须严格适配,高版本易出现兼容性问题;
  • 命令执行讲严谨:Linux命令对拼写、路径、标点(如MySQL的;、Vim的:wq)要求极高,一步错则后续全报错;
  • 配置后必验证:每完成一个核心配置,必须做简单验证(如数据库登录、Java版本、环境变量生效),提前发现问题。

写在最后

这两个实验是云计算入门的核心基础,Keystone实验偏OpenStack云平台部署 ,CloudSim实验偏云计算仿真研究,实操过程中踩的坑都是宝贵的经验。

对于刚入门云计算的小伙伴,建议多动手、慢操作、勤验证,不要怕报错,每个报错都是学习的机会,通过分析报错信息找到问题根源,才能真正掌握云计算的基础实操和核心原理。

后续会继续分享OpenStack其他组件(Nova/Neutron)和CloudSim调度算法的实验内容,感兴趣的小伙伴可以关注~

如果本文对你有帮助,欢迎点赞+收藏+评论,一起交流云计算学习心得~


附:实验相关参考资料

  1. OpenStack官方文档:https://docs.openstack.org/
  2. CloudSim官方地址:http://www.cloudbus.org/cloudsim/
  3. CloudSim开源仓库:https://github.com/Cloudslab/cloudsim
相关推荐
Darkdreams2 小时前
Java进阶-在Ubuntu上部署SpringBoot应用
java·spring boot·ubuntu
zwenqiyu2 小时前
zwq重链剖分学习笔记,从入门到过掉模板题
笔记·学习
xieliyu.2 小时前
Java 基础:接口核心概念与实战详解
java·开发语言
不秃不少年2 小时前
工厂方法模式(Factory Method)
java·面试·工厂方法模式
扶苏-su2 小时前
Java反射实战:动态操作Car类属性
java
Alanzeeb2 小时前
博客系统测试文档
java·javascript·功能测试·可用性测试
anzhxu2 小时前
MySQL Workbench菜单汉化为中文
java
96772 小时前
C++ 内存管理的核心——RAII 机制。两种锁 lock_guard, unique_lock
java·jvm·c++
云边散步2 小时前
godot2D游戏教程系列二(25)
笔记·学习·音视频·游戏开发