OpenStack Keystone与CloudSim云计算实验指南 1. 项目概述云计算作为当前IT基础设施的核心技术其学习与实践的重要性不言而喻。本次实验将聚焦两大核心内容OpenStack身份认证服务Keystone的安装配置以及CloudSim云计算仿真平台的部署。这两个工具分别代表了云计算领域的两大方向——实际生产环境的搭建与教学科研场景的仿真模拟。Keystone是OpenStack的核心组件之一负责整个云平台的认证、授权和服务目录功能。掌握它的安装与配置是理解OpenStack架构的基础。而CloudSim则是由墨尔本大学开发的云计算仿真工具广泛应用于学术研究和教学实验能够模拟虚拟化环境、资源调度等核心云计算功能。这个实验特别适合以下几类人群云计算初学者希望获得OpenStack实操经验计算机相关专业学生需要进行云计算课程实验研究人员需要搭建云计算仿真环境运维工程师准备考取云计算相关认证2. 实验环境准备2.1 硬件与操作系统要求对于Keystone安装建议使用以下配置至少4核CPU8GB内存50GB存储空间双网卡管理网络和外部网络操作系统选择Ubuntu Server 20.04 LTS或CentOS 8这两个版本对OpenStack组件支持最为完善。我个人的经验是Ubuntu的软件包更新更及时而CentOS在企业环境中更为常见。重要提示所有操作建议在全新安装的系统上进行避免已有服务造成端口冲突。如果使用虚拟机请确保开启虚拟化支持。2.2 基础软件依赖安装首先更新系统并安装必要工具sudo apt update sudo apt upgrade -y sudo apt install -y python3-dev python3-pip \ libffi-dev gcc libssl-dev git对于数据库我们选择MariaDB作为Keystone的后端存储sudo apt install -y mariadb-server python3-pymysql安装完成后需要进行安全加固sudo mysql_secure_installation2.3 网络配置要点OpenStack对网络配置有特定要求需要提前规划管理网络通常使用192.168.100.0/24网段外部网络需要可路由的IP地址段主机名解析确保/etc/hosts文件包含所有节点的正确解析配置示例echo 192.168.100.10 controller | sudo tee -a /etc/hosts3. Keystone安装与配置3.1 数据库初始化首先为Keystone创建数据库和用户CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO keystonelocalhost \ IDENTIFIED BY KEYSTONE_DBPASS; GRANT ALL PRIVILEGES ON keystone.* TO keystone% \ IDENTIFIED BY KEYSTONE_DBPASS; FLUSH PRIVILEGES;注意生产环境中请使用更复杂的密码并限制访问IP范围。3.2 软件包安装与配置安装Keystone组件sudo apt install -y keystone apache2 libapache2-mod-wsgi-py3编辑/etc/keystone/keystone.conf配置文件主要修改以下部分[database] connection mysqlpymysql://keystone:KEYSTONE_DBPASScontroller/keystone [token] provider fernet初始化数据库并同步sudo su -s /bin/sh -c keystone-manage db_sync keystone3.3 服务初始化与验证初始化Fernet密钥库sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone启动服务并验证sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \ --bootstrap-admin-url http://controller:5000/v3/ \ --bootstrap-internal-url http://controller:5000/v3/ \ --bootstrap-public-url http://controller:5000/v3/ \ --bootstrap-region-id RegionOne4. CloudSim仿真平台部署4.1 环境准备与依赖安装CloudSim基于Java开发需要先安装JDKsudo apt install -y openjdk-11-jdk maven验证Java环境java -version4.2 源码获取与编译从GitHub获取最新源码git clone https://github.com/Cloudslab/cloudsim.git cd cloudsim使用Maven构建项目mvn install构建完成后在examples/target目录下会生成可运行的jar文件。4.3 运行示例仿真CloudSim提供了多个示例场景以下是运行基本示例的命令java -cp examples/target/cloudsim-examples-*-with-dependencies.jar \ org.cloudbus.cloudsim.examples.CloudSimExample1这个示例会模拟一个简单的数据中心环境包含1台主机1个虚拟机1个云任务5. 常见问题与解决方案5.1 Keystone服务无法启动问题现象Apache服务启动失败日志显示500错误。可能原因数据库连接配置错误Fernet密钥未正确生成权限问题解决方案检查/etc/keystone/keystone.conf中的数据库连接字符串确认/var/lib/keystone/fernet-keys目录存在且权限正确查看/var/log/apache2/error.log获取详细错误信息5.2 CloudSim示例运行报错问题现象运行示例时出现NoClassDefFoundError。可能原因Maven依赖未正确下载类路径设置错误解决方案删除本地Maven仓库(~/.m2/repository)后重新构建使用完整类路径运行确保包含所有依赖jar5.3 网络连接问题问题现象节点间通信失败服务无法访问。可能原因防火墙阻止了必要端口SELinux策略限制网络配置错误解决方案开放5000,35357等关键端口sudo ufw allow 5000/tcp sudo ufw allow 35357/tcp检查SELinux状态必要时设置为permissive模式sudo setenforce 0使用ping和telnet测试基础网络连通性6. 高级配置与优化建议6.1 Keystone性能调优对于生产环境可以考虑以下优化措施启用memcached缓存令牌[cache] enabled true backend dogpile.cache.memcached调整Worker数量sudo sed -i s/WSGIDaemonProcess keystone-public processes1/WSGIDaemonProcess keystone-public processes4/ /etc/apache2/sites-available/keystone.conf启用HTTPS加密通信6.2 CloudSim扩展开发CloudSim的架构支持灵活扩展常见开发场景包括自定义调度算法继承CloudletScheduler类实现自己的资源分配逻辑添加新的资源模型扩展Host类实现特定的能耗或性能模型集成其他仿真工具通过适配器模式连接NetworkSimulator等工具示例代码结构public class MyScheduler extends CloudletScheduler { Override public double updateVmProcessing(double currentTime, ListDouble mipsShare) { // 自定义调度逻辑 } }7. 实验心得与实用技巧在实际部署过程中我总结了以下几点经验日志是关键无论是Keystone还是CloudSim遇到问题时首先查看日志。Keystone的日志通常在/var/log/keystone/而CloudSim可以通过配置log4j输出更详细的日志。版本匹配很重要OpenStack组件对版本依赖严格建议使用官方文档推荐的组合。例如Ubuntu 20.04对应OpenStack Ussuri版本。资源预留CloudSim仿真大规模场景时非常消耗内存建议为JVM分配足够堆空间java -Xmx4g -jar cloudsim-examples-*.jar自动化部署对于重复实验可以考虑使用Ansible等工具编写自动化部署脚本。以下是一个简单的playbook示例- hosts: controller tasks: - name: Install Keystone apt: name: keystone state: present可视化监控对于OpenStack安装Grafana和Prometheus可以直观监控服务状态。CloudSim则可以通过扩展代码实现运行时数据可视化。实验记录建议使用Jupyter Notebook记录实验过程和结果便于后续分析和复现。特别是CloudSim的各种参数配置和输出结果系统化的记录能大大提高实验效率。