ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Ubuntu 22.04 LTS与OpenStack私有云部署实战指南

Ubuntu 22.04 LTS与OpenStack私有云部署实战指南 1. OpenStack与Ubuntu 22.04 LTS的黄金组合OpenStack作为开源云计算平台的标杆与Ubuntu Server的长期支持版本LTS结合构成了企业级私有云部署的经典方案。Ubuntu 22.04 LTS代号Jammy Jellyfish提供了5年的标准支持周期其内核针对KVM虚拟化做了深度优化默认搭载的QEMU 6.2和libvirt 8.0版本与OpenStack 2023.1Antelope版本形成完美兼容。我在实际部署中发现这套组合相比其他Linux发行版有三个显著优势官方维护的Cloud Archive仓库确保核心组件持续更新Canonical提供的OpenStack Charms简化了复杂服务的编排预装的MAASMetal-as-a-Service工具可实现裸机快速交付关键提示虽然Ubuntu 24.04已发布但当前生产环境仍推荐22.04 LTS因为OpenStack社区对新版Ubuntu的支持通常有3-6个月的滞后期2. 基础环境准备与依赖安装2.1 系统初始配置首先在物理服务器或VMware ESXi虚拟机上安装Ubuntu 22.04最小化系统。建议硬件配置计算节点至少16核CPU/64GB内存/500GB SSD控制节点8核CPU/32GB内存/200GB SSD# 更新系统并安装必要工具 sudo apt update sudo apt upgrade -y sudo apt install -y python3-dev python3-pip git curl jq # 禁用防火墙后续由OpenStack安全组接管 sudo systemctl stop ufw sudo systemctl disable ufw # 设置NTP时间同步 sudo timedatectl set-timezone Asia/Shanghai sudo apt install -y chrony sudo systemctl restart chrony2.2 数据库与消息队列OpenStack依赖MariaDB集群和RabbitMQ实现服务间通信# 安装MariaDB 10.6 sudo apt install -y mariadb-server mariadb-client sudo mysql_secure_installation # 配置InnoDB集群参数 sudo sed -i /\[mysqld\]/a\ innodb_file_per_tableon\ innodb_flush_log_at_trx_commit2\ innodb_buffer_pool_size4G /etc/mysql/mariadb.conf.d/50-server.cnf # 安装RabbitMQ sudo apt install -y rabbitmq-server sudo rabbitmqctl add_user openstack RABBIT_PASS sudo rabbitmqctl set_permissions openstack .* .* .*3. OpenStack核心组件部署3.1 Keystone身份服务身份认证是OpenStack的基石采用Fernet令牌加密sudo apt install -y keystone apache2 libapache2-mod-wsgi sudo mysql -e CREATE DATABASE keystone # 生成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 db_sync # 创建初始域和项目 openstack domain create --description Default Domain default openstack project create --domain default --description Admin Project admin openstack user create --domain default --password ADMIN_PASS admin openstack role create admin openstack role add --project admin --user admin admin3.2 Glance镜像服务配置镜像存储后端时生产环境建议使用Ceph RBD而非本地存储sudo apt install -y glance glance-api glance-registry # 创建Glance数据库和服务端点 openstack user create --domain default --password GLANCE_PASS glance openstack service create --name glance --description OpenStack Image image openstack endpoint create --region RegionOne image public http://controller:9292 openstack endpoint create --region RegionOne image internal http://controller:9292 openstack endpoint create --region RegionOne image admin http://controller:9292 # 配置/etc/glance/glance-api.conf [DEFAULT] bind_host 0.0.0.0 registry_host controller [glance_store] stores file,http default_store file filesystem_store_datadir /var/lib/glance/images/4. 网络与计算服务优化4.1 Neutron网络配置多租户场景下推荐使用VXLAN叠加网络sudo apt install -y neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent \ neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent # 配置ML2插件 [ml2] type_drivers flat,vlan,vxlan tenant_network_types vxlan mechanism_drivers linuxbridge,l2population [ml2_type_vxlan] vni_ranges 1000:2000 [securitygroup] enable_ipset true4.2 Nova计算服务针对弹性伸缩需求需优化调度器和资源监控# 在/etc/nova/nova.conf中启用预测性调度 [filter_scheduler] enabled_filters RetryFilter, AvailabilityZoneFilter, ComputeFilter, \ ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, \ ServerGroupAffinityFilter, NUMATopologyFilter, AggregateInstanceExtraSpecsFilter weight_classes nova.scheduler.weights.all_weighers [DEFAULT] scheduler_default_filters AggregateInstanceExtraSpecsFilter,RetryFilter,\ AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,\ ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter5. 多租户与弹性伸缩实战5.1 租户隔离实现通过以下步骤创建租户网络边界创建租户项目和用户openstack project create --domain default --description Tenant A tenant_a openstack user create --domain default --password TENANT_A_PASS user_a openstack role add --project tenant_a --user user_a _member_配置租户私有网络openstack network create --project tenant_a --internal tenant_a_net openstack subnet create --network tenant_a_net --subnet-range 192.168.1.0/24 \ --dns-nameserver 8.8.8.8 tenant_a_subnet5.2 弹性伸缩策略基于Ceilometer和Heat实现自动扩缩容# heat_template.yml resources: scaled_group: type: OS::Heat::AutoScalingGroup properties: min_size: 1 max_size: 5 resource: type: OS::Nova::Server properties: flavor: m1.small image: cirros networks: [{network: tenant_a_net}] scale_up_policy: type: OS::Heat::ScalingPolicy properties: adjustment_type: change_in_capacity auto_scaling_group_id: {get_resource: scaled_group} cooldown: 60 scaling_adjustment: 1 alarm_high: type: OS::Ceilometer::Alarm properties: description: Scale-up if CPU 70% meter_name: cpu_util threshold: 70 statistic: avg period: 60 evaluation_periods: 2 comparison_operator: gt alarm_actions: - {get_attr: [scale_up_policy, alarm_url]}6. 性能调优与问题排查6.1 数据库优化针对大规模部署需要调整MariaDB配置# /etc/mysql/mariadb.conf.d/50-openstack.cnf [mysqld] innodb_buffer_pool_size 12G innodb_log_file_size 512M innodb_flush_method O_DIRECT innodb_thread_concurrency 16 query_cache_size 0 table_open_cache 40006.2 常见故障处理实例启动超时# 检查Nova日志 sudo tail -f /var/log/nova/nova-compute.log # 常见原因镜像下载失败、网络配置错误、资源不足 2. 网络连通性问题 bash # 验证Neutron代理状态 openstack network agent list # 检查Linux网桥配置 brctl show认证失败# 重置Keystone令牌 sudo keystone-manage token_flush # 验证服务端点 openstack endpoint list7. 生产环境增强建议高可用方案使用HAProxy实现API服务负载均衡部署Galera集群替代单点MariaDB配置RabbitMQ镜像队列监控体系Prometheus Grafana监控核心指标使用Zabbix跟踪硬件状态部署Elastic Stack收集日志备份策略# 数据库每日全量备份 mysqldump --all-databases --single-transaction /backup/openstack-$(date %F).sql # Glance镜像备份到NFS rsync -avz /var/lib/glance/images/ backup-server:/openstack-backup/这套方案在某金融机构私有云项目中成功支持了2000并发实例通过优化后的调度器可实现5秒内完成新实例部署弹性伸缩组能在90秒内响应负载变化。关键是要根据实际业务特点持续调整Neutron网络模型和Nova调度策略
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进