OpenStack Train 云计算平台安装与管理指南
OpenStack Train 云计算平台安装指南
文档概述
本文档详细介绍了在openEuler 22.03-LTS-SP3系统上安装OpenStack Train版本的完整流程,包括环境准备、基础服务配置、核心组件安装等关键步骤。
前提准备
系统要求
- 操作系统: openEuler-22.03-LTS-SP3-x86_64
- OpenStack版本: Train
- 硬件要求:
- 控制节点: 4GB内存, 100GB磁盘, 2核CPU
- 计算节点: 4GB内存, 100GB磁盘, 2核CPU
所需软件包
-
系统镜像: openEuler-22.03-LTS-SP3-x86_64-dvd.iso
下载地址: https://www.openeuler.openatom.cn/zh/download/ -
OpenStack本地仓库: openStack-train.iso
下载地址: https://pan.quark.cn/s/88ec2997a7ba?pwd=xk78 -
测试镜像: cirros-0.5.1-x86_64-disk.img
下载地址: https://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img -
远程管理工具: MobaXterm
下载地址: https://mobaxterm.mobatek.net/ -
虚拟化平台: VMware Workstation 17.6.0
1. 虚拟机环境配置
1.1 创建控制节点虚拟机
- 打开VMware Workstation,选择”创建新的虚拟机”
- 选择”自定义(高级)“配置
- 选择”稍后安装操作系统”
- 选择Linux操作系统,版本选择”openEuler 64位”
- 设置虚拟机名称和存储位置
- 配置处理器:2个处理器,每个处理器2个核心
- 配置内存:4GB
- 网络连接:选择”仅主机模式”
- 选择I/O控制器类型:LSI Logic
- 选择磁盘类型:SCSI
- 选择”创建新虚拟磁盘”
- 磁盘容量:100GB,选择”将虚拟磁盘存储为单个文件”
1.2 虚拟机硬件配置优化
- 在虚拟机设置中,选择”自定义硬件”
- 添加第二块网卡,选择”NAT模式”
- 在处理器设置中,启用”虚拟化Intel VT-x/EPT或AMD-V/RVI”
1.3 网络配置
- 在VMware菜单栏选择”编辑”→“虚拟网络编辑器”
- 配置仅主机模式网络:子网地址192.168.10.0/24,启用DHCP
- 配置NAT模式网络:子网地址192.168.20.0/24,启用DHCP
1.4 系统安装
- 挂载openEuler系统镜像
- 启动虚拟机,选择”Install openEuler 22.03-LTS-SP3”
- 选择语言:中文-简体中文
- 配置网络:
- 打开ens33和ens34网卡
- 设置主机名:controller
- 设置root密码:openstack0#
- 开始安装并重启系统
2. 基础环境配置
2.1 远程连接配置
-
查看IP地址:
Terminal window ip a -
使用MobaXterm连接:
- 新建SSH会话
- 主机:192.168.10.100
- 用户名:root
- 密码:openstack0#
2.2 网络配置优化
配置静态IP地址:
# 进入网络配置目录cd /etc/sysconfig/network-scripts/
# 配置ens33网卡(管理网络)vi ifcfg-ens33修改内容:
BOOTPROTO=staticIPADDR=192.168.10.100PREFIX=24GATEWAY=192.168.10.1DNS1=8.8.8.8# 配置ens34网卡(外部网络)vi ifcfg-ens34修改内容:
BOOTPROTO=staticIPADDR=192.168.20.100PREFIX=24GATEWAY=192.168.20.1DNS1=8.8.8.8重启网络服务:
nmcli con reloadnmcli con up ens34nmcli con up ens332.3 主机名与域名解析
设置主机名:
hostnamectl set-hostname controller配置本地域名解析:
vi /etc/hosts添加内容:
192.168.10.100 controller192.168.10.101 compute测试连通性:
ping controllerping compute2.4 安全配置
关闭防火墙:
systemctl stop firewalldsystemctl disable firewalld禁用SELinux:
vi /etc/selinux/config修改内容:
SELINUX=disabled临时禁用SELinux:
setenforce 02.5 计算节点配置
节点配置规格
| 配置项 | 控制节点 | 计算节点 |
|---|---|---|
| 主机名 | controller | compute |
| CPU | 2核 | 2核 |
| 内存 | 4GB | 4GB |
| 磁盘 | 100GB | 100GB |
| 管理网络 | 192.168.10.100 | 192.168.10.101 |
| 外部网络 | 192.168.20.100 | 192.168.20.101 |
计算节点创建步骤
-
在VMware中克隆控制节点虚拟机
-
选择”完整克隆”
-
修改网络配置:
Terminal window cd /etc/sysconfig/network-scripts/vi ifcfg-ens33修改IP地址:
IPADDR=192.168.10.101Terminal window vi ifcfg-ens34修改IP地址:
IPADDR=192.168.20.101 -
修改主机名:
Terminal window hostnamectl set-hostname compute -
重启网络服务
-
更新/etc/hosts文件
2.6 本地软件仓库配置
控制节点配置
挂载OpenStack ISO镜像:
cd /optmkdir openstackmount openStack-train.iso openstack配置自动挂载:
vi /etc/fstab添加内容:
/opt/openStack-train.iso /opt/openstack iso9660 defaults 0 0配置本地YUM源:
cd /etc/yum.repos.d/mkdir bakmv *.repo bak
vi openstack.repoYUM源配置内容:
[OS]name=OSbaseurl=file:///opt/openstack/OSenabled=1gpgcheck=0
[everything]name=everythingbaseurl=file:///opt/openstack/everythingenabled=1gpgcheck=0
[EPOL]name=EPOLbaseurl=file:///opt/openstack/EPOLenabled=1gpgcheck=0
[update]name=updatebaseurl=file:///opt/openstack/updateenabled=1gpgcheck=0
[OpenStack_Train]name=OpenStack_Trainbaseurl=file:///opt/openstack/OpenStack_Trainenabled=1gpgcheck=0重建YUM缓存:
yum clean allyum makecache配置FTP服务器:
yum -y install vsftpd
vi /etc/vsftpd/vsftpd.conf修改配置:
anonymous_enable=YESanon_root=/opt启动FTP服务:
systemctl start vsftpdsystemctl enable vsftpd计算节点配置
配置远程YUM源:
cd /etc/yum.repos.d/mkdir bakmv *.repo bak
scp root@controller:/etc/yum.repos.d/openstack.repo .
vi openstack.repo修改baseurl为FTP地址:
baseurl=ftp://controller/openstack/OS重建YUM缓存:
yum clean allyum makecache3. 基础服务安装
3.1 时间同步服务(Chrony)
控制节点配置
vi /etc/chrony.conf添加配置:
local stratum 1allow 192.168.10.0/24重启服务:
systemctl restart chronydsystemctl enable chronyd计算节点配置
vi /etc/chrony.conf修改配置:
server controller iburst重启服务:
systemctl restart chronydsystemctl enable chronyd验证时间同步:
chronyc sources3.2 OpenStack基础框架安装
在两个节点上执行:
yum -y install openstack-release-trainrm -rf /etc/yum.repos.d/openstack-train.repoyum clean allyum makecacheyum -y upgrade安装OpenStack客户端:
yum -y install python-openstackclient3.3 MariaDB数据库安装(控制节点)
安装数据库:
yum -y install mariadb-server python-PyMySQL配置数据库:
vi /etc/my.cnf.d/openstack.cnf配置内容:
[mysqld]bind-address = 0.0.0.0default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8启动数据库:
systemctl enable mariadbsystemctl start mariadb安全初始化:
mysql_secure_installation3.4 RabbitMQ消息队列服务(控制节点)
安装RabbitMQ:
yum -y install rabbitmq-serversystemctl enable rabbitmq-serversystemctl start rabbitmq-server配置用户:
rabbitmqctl add_user rabbitmq 000000rabbitmqctl set_permissions rabbitmq ".*" ".*" ".*"验证服务:
netstat -tulnp | grep 56723.5 Memcached缓存服务(控制节点)
安装Memcached:
yum -y install memcached python-memcached配置服务:
vi /etc/sysconfig/memcached修改配置:
OPTIONS="-l 0.0.0.0,::1"启动服务:
systemctl enable memcachedsystemctl start memcached3.6 etcd分布式存储(控制节点)
安装etcd:
yum -y install etcd配置etcd:
vi /etc/etcd/etcd.conf配置内容:
ETCD_NAME=controllerETCD_LISTEN_PEER_URLS="http://192.168.10.100:2380"ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.10.100:2379"ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.100:2380"ETCD_INITIAL_CLUSTER="controller=http://192.168.10.100:2380"ETCD_INITIAL_CLUSTER_STATE="new"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.100:2379"启动服务:
systemctl enable etcdsystemctl start etcd4. OpenStack核心服务安装
4.1 认证服务(Keystone)
4.1.1 安装Keystone
yum -y install openstack-keystone httpd mod_wsgi4.1.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE keystone;GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '000000';4.1.3 配置Keystone
vi /etc/keystone/keystone.conf关键配置:
[database]connection = mysql+pymysql://keystone:000000@controller/keystone
[token]provider = fernet4.1.4 初始化数据库
su keystone -s /bin/sh -c "keystone-manage db_sync"4.1.5 初始化密钥库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystonekeystone-manage credential_setup --keystone-user keystone --keystone-group keystone4.1.6 引导身份服务
keystone-manage bootstrap \ --bootstrap-password 000000 \ --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.1.7 配置Web服务
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
vi /etc/httpd/conf/httpd.conf修改配置:
ServerName controller启动服务:
systemctl enable httpdsystemctl start httpd4.1.8 环境变量配置
vi admin-login内容:
export OS_USERNAME=adminexport OS_PASSWORD=000000export OS_PROJECT_NAME=adminexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_AUTH_URL=http://controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2加载环境变量:
source admin-login4.1.9 服务验证
创建测试项目:
openstack project create --domain default projectopenstack project list创建角色:
openstack role create useropenstack role list4.2 镜像服务(Glance)
4.2.1 安装Glance
yum -y install openstack-glance4.2.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE glance;GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '000000';4.2.3 配置Glance
cp /etc/glance/glance-api.conf /etc/glance/glance-api.bakgrep -Ev '^$|#' /etc/glance/glance-api.bak > /etc/glance/glance-api.conf
vi /etc/glance/glance-api.conf关键配置:
[database]connection = mysql+pymysql://glance:000000@controller/glance
[keystone_authtoken]auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordusername = glancepassword = 000000project_name = projectuser_domain_name = Defaultproject_domain_name = Default
[paste_deploy]flavor = keystone
[glance_store]stores = filedefault_store = filefilesystem_store_datadir = /var/lib/glance/images/4.2.4 初始化数据库
su glance -s /bin/sh -c "glance-manage db_sync"4.2.5 创建Glance用户
source admin-login
openstack user create --domain default --password 000000 glanceopenstack role add --project project --user glance admin4.2.6 创建服务端点
openstack service create --name glance image
openstack endpoint create --region RegionOne glance public http://controller:9292openstack endpoint create --region RegionOne glance internal http://controller:9292openstack endpoint create --region RegionOne glance admin http://controller:92924.2.7 上传测试镜像
下载测试镜像:
# 下载Cirros测试镜像wget https://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img上传镜像到Glance:
source admin-login
openstack image create --file cirros-0.5.1-x86_64-disk.img \ --disk-format qcow2 --container-format bare --public cirros验证镜像:
openstack image listll /var/lib/glance/images/4.3 放置服务(Placement)
4.3.1 安装Placement
yum -y install openstack-placement-api4.3.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE placement;GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' IDENTIFIED BY '000000';4.3.3 配置Placement
cp /etc/placement/placement.conf /etc/placement/placement.bakgrep -Ev '^$|#' /etc/placement/placement.bak > /etc/placement/placement.conf
vi /etc/placement/placement.conf关键配置:
[api]auth_strategy = keystone
[keystone_authtoken]auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = placementpassword = 000000
[placement_database]connection = mysql+pymysql://placement:000000@controller/placement4.3.4 初始化数据库
su placement -s /bin/sh -c "placement-manage db sync"4.3.5 创建Placement用户
source admin-login
openstack user create --domain default --password 000000 placementopenstack role add --project project --user placement admin4.3.6 创建服务端点
openstack service create --name placement placement
openstack endpoint create --region RegionOne placement public http://controller:8778openstack endpoint create --region RegionOne placement internal http://controller:8778openstack endpoint create --region RegionOne placement admin http://controller:87784.3.7 重启服务
systemctl restart httpd验证服务:
netstat -tnlup | grep 8778curl http://controller:87784.4 计算服务(Nova)
4.4.1 控制节点安装
安装Nova软件包:
yum -y install openstack-nova-api openstack-nova-conductor \ openstack-nova-scheduler openstack-nova-novncproxy4.4.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE nova_api;CREATE DATABASE nova_cell0;CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '000000';4.4.3 配置Nova
cp /etc/nova/nova.conf /etc/nova/nova.bakgrep -Ev '^$|#' /etc/nova/nova.bak > /etc/nova/nova.conf
vi /etc/nova/nova.conf关键配置:
[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://rabbitmq:000000@controller:5672my_ip = 192.168.10.100use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDriver
[api]auth_strategy = keystone
[api_database]connection = mysql+pymysql://nova:000000@controller/nova_api
[database]connection = mysql+pymysql://nova:000000@controller/nova
[glance]api_servers = http://controller:9292
[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = novapassword = 000000
[oslo_concurrency]lock_path = /var/lib/nova/tmp
[placement]auth_url = http://controller:5000/v3auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = placementpassword = 000000region_name = RegionOne
[vnc]enabled = trueserver_listen = $my_ipserver_proxyclient_address = $my_ipnovncproxy_base_url = http://controller:6080/vnc_auto.html4.4.4 初始化数据库
su nova -s /bin/sh -c "nova-manage api_db sync"su nova -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1"su nova -s /bin/sh -c "nova-manage cell_v2 map_cell0"su nova -s /bin/sh -c "nova-manage db sync"验证单元:
nova-manage cell_v2 list_cells4.4.5 创建Nova用户
source admin-login
openstack user create --domain default --password 000000 novaopenstack role add --project project --user nova admin4.4.6 创建服务端点
openstack service create --name nova compute
openstack endpoint create --region RegionOne nova public http://controller:8774/v2.1openstack endpoint create --region RegionOne nova internal http://controller:8774/v2.1openstack endpoint create --region RegionOne nova admin http://controller:8774/v2.14.4.7 启动控制节点服务
systemctl enable openstack-nova-api openstack-nova-scheduler \ openstack-nova-conductor openstack-nova-novncproxy
systemctl start openstack-nova-api openstack-nova-scheduler \ openstack-nova-conductor openstack-nova-novncproxy验证服务:
netstat -pulnt | grep 877openstack compute service list4.4.8 计算节点安装
在计算节点上安装Nova:
yum -y install openstack-nova-compute配置计算节点:
cp /etc/nova/nova.conf /etc/nova/nova.bakgrep -Ev '^$|#' /etc/nova/nova.bak > /etc/nova/nova.conf
vi /etc/nova/nova.conf关键配置:
[DEFAULT]enabled_apis = osapi_compute,metadatatransport_url = rabbit://rabbitmq:000000@controller:5672my_ip = 192.168.10.101use_neutron = truefirewall_driver = nova.virt.firewall.NoopFirewallDrivercompute_driver = libvirt.LibvirtDriverinstances_path = /var/lib/nova/instances/
[api]auth_strategy = keystone
[glance]api_servers = http://controller:9292
[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = novapassword = 000000
[libvirt]virt_type = kvm
[oslo_concurrency]lock_path = /var/lib/nova/tmp
[placement]auth_url = http://controller:5000/v3auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = placementpassword = 000000region_name = RegionOne
[vnc]enabled = trueserver_listen = 0.0.0.0server_proxyclient_address = $my_ipnovncproxy_base_url = http://192.168.10.100:6080/vnc_auto.html4.4.9 启动计算节点服务
systemctl enable libvirtd openstack-nova-computesystemctl start libvirtd openstack-nova-compute4.4.10 发现计算节点
在控制节点上执行:
source admin-login
su nova -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose"设置自动发现:
vi /etc/nova/nova.conf添加配置:
[scheduler]discover_hosts_in_cells_interval = 60重启服务:
systemctl restart openstack-nova-api验证计算服务:
openstack compute service listnova-manage cell_v2 list_hosts4.5 网络服务(Neutron)
4.5.1 控制节点安装
安装Neutron软件包:
yum -y install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables4.5.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE neutron;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '000000';4.5.3 配置Neutron
cp /etc/neutron/neutron.conf /etc/neutron/neutron.bakgrep -Ev '^$|#' /etc/neutron/neutron.bak > /etc/neutron/neutron.conf
vi /etc/neutron/neutron.conf关键配置:
[database]connection = mysql+pymysql://neutron:000000@controller/neutron
[DEFAULT]core_plugin = ml2service_plugins =transport_url = rabbit://rabbitmq:000000@controller:5672auth_strategy = keystonenotify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true
[keystone_authtoken]auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = projectusername = neutronpassword = 000000
[nova]auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = projectusername = novapassword = 000000
[oslo_concurrency]lock_path = /var/lib/neutron/tmp4.5.4 配置ML2插件
vi /etc/neutron/plugins/ml2/ml2_conf.ini关键配置:
[ml2]type_drivers = flat,vlantenant_network_types = flatmechanism_drivers = linuxbridgeextension_drivers = port_security
[ml2_type_flat]flat_networks = provider
[securitygroup]enable_ipset = true4.5.5 配置Linux Bridge代理
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini关键配置:
[linux_bridge]physical_interface_mappings = provider:ens34
[vxlan]enable_vxlan = false
[securitygroup]enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver4.5.6 配置DHCP代理
vi /etc/neutron/dhcp_agent.ini关键配置:
[DEFAULT]interface_driver = linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = true4.5.7 配置元数据代理
vi /etc/neutron/metadata_agent.ini关键配置:
[DEFAULT]nova_metadata_host = controllermetadata_proxy_shared_secret = 0000004.5.8 修改Nova配置
vi /etc/nova/nova.conf添加配置:
[neutron]auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = projectusername = neutronpassword = 000000service_metadata_proxy = truemetadata_proxy_shared_secret = 0000004.5.9 初始化数据库
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
su neutron -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \ --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"4.5.10 创建Neutron用户
source admin-login
openstack user create --domain default --password 000000 neutronopenstack role add --project project --user neutron admin4.5.11 创建服务端点
openstack service create --name neutron network
openstack endpoint create --region RegionOne neutron public http://controller:9696openstack endpoint create --region RegionOne neutron internal http://controller:9696openstack endpoint create --region RegionOne neutron admin http://controller:96964.5.12 启动控制节点服务
systemctl restart openstack-nova-api
systemctl enable neutron-server neutron-linuxbridge-agent \ neutron-dhcp-agent neutron-metadata-agent
systemctl start neutron-server neutron-linuxbridge-agent \ neutron-dhcp-agent neutron-metadata-agent4.5.13 计算节点安装
在计算节点上安装Neutron:
yum -y install openstack-neutron-linuxbridge ebtables ipset配置计算节点:
cp /etc/neutron/neutron.conf /etc/neutron/neutron.bakgrep -Ev '^$|#' /etc/neutron/neutron.bak > /etc/neutron/neutron.conf
vi /etc/neutron/neutron.conf关键配置:
[DEFAULT]transport_url = rabbit://rabbitmq:000000@controller:5672auth_strategy = keystone
[keystone_authtoken]auth_url = http://controller:5000memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = projectusername = neutronpassword = 000000
[oslo_concurrency]lock_path = /var/lib/neutron/tmp配置Linux Bridge代理:
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini关键配置:
[linux_bridge]physical_interface_mappings = provider:ens34
[vxlan]enable_vxlan = false
[securitygroup]enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver修改Nova配置:
vi /etc/nova/nova.conf添加配置:
[neutron]auth_url = http://controller:5000auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = projectusername = neutronpassword = 0000004.5.14 启动计算节点服务
systemctl restart openstack-nova-compute
systemctl enable neutron-linuxbridge-agentsystemctl start neutron-linuxbridge-agent验证网络服务:
openstack network agent list4.6 仪表板服务(Dashboard)
4.6.1 安装Dashboard
在控制节点上安装:
yum -y install openstack-dashboard4.6.2 配置Dashboard
vi /etc/openstack-dashboard/local_settings关键配置:
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', }}
OPENSTACK_KEYSTONE_URL = "http://controller:5000/v3"OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3,}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
TIME_ZONE = "Asia/Shanghai"4.6.3 重启Web服务
systemctl restart httpd4.6.4 访问Dashboard
打开浏览器,访问:http://192.168.10.100/dashboard
登录信息:
- 域:Default
- 用户名:admin
- 密码:000000
4.7 块存储服务(Cinder)
4.7.1 控制节点安装
安装Cinder软件包:
yum -y install openstack-cinder4.7.2 创建数据库
mysql -uroot -p000000SQL命令:
CREATE DATABASE cinder;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY '000000';GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY '000000';4.7.3 配置Cinder
cp /etc/cinder/cinder.conf /etc/cinder/cinder.bakgrep -Ev '^$|#' /etc/cinder/cinder.bak > /etc/cinder/cinder.conf
vi /etc/cinder/cinder.conf关键配置:
[DEFAULT]auth_strategy = keystonetransport_url = rabbit://rabbitmq:000000@controller:5672
[database]connection = mysql+pymysql://cinder:000000@controller/cinder
[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = cinderpassword = 000000
[oslo_concurrency]lock_path = /var/lib/cinder/tmp修改Nova配置:
vi /etc/nova/nova.conf添加配置:
[cinder]os_region_name = RegionOne4.7.4 初始化数据库
su cinder -s /bin/sh -c "cinder-manage db sync"4.7.5 创建Cinder用户
source admin-login
openstack user create --domain default --password 000000 cinderopenstack role add --project project --user cinder admin4.7.6 创建服务端点
openstack service create --name cinderv3 volumev3
openstack endpoint create --region RegionOne volumev3 public \ http://controller:8776/v3/%\(project_id\)sopenstack endpoint create --region RegionOne volumev3 internal \ http://controller:8776/v3/%\(project_id\)sopenstack endpoint create --region RegionOne volumev3 admin \ http://controller:8776/v3/%\(project_id\)s4.7.7 启动控制节点服务
systemctl restart openstack-nova-api
systemctl enable openstack-cinder-api openstack-cinder-schedulersystemctl start openstack-cinder-api openstack-cinder-scheduler验证服务:
netstat -tulnp | grep 8776openstack volume service list4.7.8 存储节点配置
在计算节点上添加一块新硬盘(建议100GB)作为存储设备。
创建LVM卷组:
# 查看新磁盘lsblk
# 创建物理卷pvcreate /dev/sdb
# 创建卷组vgcreate cinder-volumes /dev/sdb
# 配置LVM过滤vi /etc/lvm/lvm.conf修改配置:
filter = ["a/sda/", "a/sdb/", "r/.*/"]4.7.9 计算节点安装Cinder
安装软件包:
yum -y install openstack-cinder targetcli python-keystone配置Cinder:
cp /etc/cinder/cinder.conf /etc/cinder/cinder.bakgrep -Ev '^$|#' /etc/cinder/cinder.bak > /etc/cinder/cinder.conf
vi /etc/cinder/cinder.conf关键配置:
[DEFAULT]auth_strategy = keystonetransport_url = rabbit://rabbitmq:000000@controller:5672glance_api_servers = http://controller:9292enabled_backends = lvm
[database]connection = mysql+pymysql://cinder:000000@controller/cinder
[keystone_authtoken]auth_url = http://controller:5000/v3memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = projectusername = cinderpassword = 000000
[oslo_concurrency]lock_path = /var/lib/cinder/tmp
[lvm]volume_driver = cinder.volume.drivers.lvm.LVMVolumeDrivervolume_group = cinder-volumestarget_protocol = iscsitarget_helper = lioadm4.7.10 启动存储节点服务
systemctl enable openstack-cinder-volume targetsystemctl start openstack-cinder-volume target验证块存储服务:
openstack volume service list4.7.11 创建测试卷
source admin-login
# 创建卷openstack volume create --size 8 volume1
# 查看卷列表openstack volume list5. 虚拟网络与云主机管理
5.1 虚拟网络配置
5.1.1 安装网桥工具
在两个节点上安装:
yum -y install bridge-utils5.1.2 使用命令创建虚拟网络
创建外部网络:
source admin-login
openstack network create --share --external \ --provider-physical-network provider \ --provider-network-type flat vm-network创建子网:
openstack subnet create --network vm-network \ --allocation-pool start=192.168.20.100,end=192.168.20.200 \ --dns-nameserver 114.114.114.114 \ --gateway 192.168.20.2 \ --subnet-range 192.168.20.0/24 vm-subnetwork验证网络:
openstack network listopenstack subnet listip abrctl show5.2 实例类型管理
5.2.1 创建实例类型
使用命令创建:
source admin-login
openstack flavor create --id auto --vcpus 1 --ram 1024 --disk 10 myflavor查看实例类型:
openstack flavor listopenstack flavor show myflavor5.3 云主机管理
5.3.1 创建云主机
使用命令创建云主机:
source admin-login
# 查看可用镜像openstack image list
# 查看可用网络openstack network list
# 查看可用实例类型openstack flavor list
# 创建云主机# 从上面的网络列表中复制网络ID替换<网络ID>openstack server create --flavor myflavor \ --image cirros \ --nic net-id=<网络ID> \ --security-group default \ myinstance5.3.2 管理云主机
查看云主机状态:
openstack server listopenstack server show myinstance控制云主机:
# 启动云主机openstack server start myinstance
# 停止云主机openstack server stop myinstance
# 重启云主机openstack server reboot myinstance
# 删除云主机openstack server delete myinstance访问云主机控制台:
# 获取VNC控制台URLopenstack console url show myinstance故障排除与注意事项
常见问题
- 网络连接问题:检查防火墙和SELinux状态
- 服务启动失败:查看日志文件
/var/log/<service>/ - 数据库连接问题:验证数据库服务状态和连接参数
重要提醒
- 安装过程中建议定期创建虚拟机快照
- 所有密码建议使用更复杂的组合
- 生产环境应启用适当的安全配置
- 定期检查服务状态和日志文件
7. 备份与恢复策略
7.1 数据库备份
7.1.1 定期备份
# 备份所有OpenStack数据库mysqldump -uroot -p000000 --all-databases > openstack_backup_$(date +%Y%m%d).sql
# 备份单个服务数据库mysqldump -uroot -p000000 keystone > keystone_backup_$(date +%Y%m%d).sqlmysqldump -uroot -p000000 glance > glance_backup_$(date +%Y%m%d).sqlmysqldump -uroot -p000000 nova > nova_backup_$(date +%Y%m%d).sqlmysqldump -uroot -p000000 neutron > neutron_backup_$(date +%Y%m%d).sqlmysqldump -uroot -p000000 cinder > cinder_backup_$(date +%Y%m%d).sqlmysqldump -uroot -p000000 placement > placement_backup_$(date +%Y%m%d).sql7.1.2 数据库恢复
# 恢复所有数据库mysql -uroot -p000000 < openstack_backup_20251121.sql
# 恢复单个服务数据库mysql -uroot -p000000 keystone < keystone_backup_20251121.sql7.2 配置文件备份
7.2.1 定期备份配置文件
# 备份OpenStack配置文件tar -czvf openstack_configs_$(date +%Y%m%d).tar.gz /etc/{keystone,glance,nova,neutron,cinder,placement,openstack-dashboard}
# 备份系统配置文件tar -czvf system_configs_$(date +%Y%m%d).tar.gz /etc/{sysconfig,network-scripts,yum.repos.d}7.2.2 配置文件恢复
# 恢复配置文件tar -xzvf openstack_configs_20251121.tar.gz -C /7.3 镜像和卷备份
7.3.1 镜像备份
# 导出镜像glance image-download --file cirros_backup.qcow2 cirros
# 导入镜像glance image-create --file cirros_backup.qcow2 --disk-format qcow2 --container-format bare --name cirros_restored7.3.2 卷备份
# 创建卷备份openstack volume backup create --name volume1_backup volume1
# 恢复卷openstack volume backup restore volume1_backup volume18. 安全加固措施
8.1 网络安全
8.1.1 防火墙配置
# 启用防火墙systemctl start firewalldsystemctl enable firewalld
# 配置防火墙规则firewall-cmd --permanent --add-service=sshfirewall-cmd --permanent --add-port=5000/tcp # Keystonefirewall-cmd --permanent --add-port=9292/tcp # Glancefirewall-cmd --permanent --add-port=8774/tcp # Novafirewall-cmd --permanent --add-port=8776/tcp # Cinderfirewall-cmd --permanent --add-port=9696/tcp # Neutronfirewall-cmd --permanent --add-port=8778/tcp # Placementfirewall-cmd --permanent --add-port=6080/tcp # Nova VNCfirewall-cmd --permanent --add-port=3306/tcp # MySQLfirewall-cmd --permanent --add-port=5672/tcp # RabbitMQfirewall-cmd --permanent --add-port=11211/tcp # Memcachedfirewall-cmd --permanent --add-port=2379/tcp # etcdfirewall-cmd --permanent --add-port=2380/tcp # etcd peerfirewall-cmd --reload8.1.2 网络隔离
- 管理网络(192.168.10.0/24):仅用于OpenStack组件间通信
- 外部网络(192.168.20.0/24):用于云主机访问外部网络
- 租户网络:用于云主机间通信
8.2 认证安全
8.2.1 密码策略
# 修改密码策略vi /etc/security/pwquality.conf
# 配置示例minlen = 12minclass = 4dcredit = -1ucredit = -1lcredit = -1ocredit = -18.2.2 令牌安全
# 配置令牌过期时间vi /etc/keystone/keystone.conf
[token]expiration = 3600 # 1小时8.2.3 访问控制
- 最小权限原则:只为用户分配必要的角色
- 定期审查用户权限
- 启用多因素认证(如可能)
8.3 TLS/SSL配置
8.3.1 配置HTTPS
# 生成自签名证书openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/pki/tls/private/httpd.key \ -out /etc/pki/tls/certs/httpd.crt
# 配置Apache使用HTTPSvi /etc/httpd/conf.d/ssl.conf8.3.2 配置服务使用HTTPS
# 配置Keystone使用HTTPSvi /etc/keystone/keystone.conf
[ssl]certfile = /etc/pki/tls/certs/httpd.crtkeyfile = /etc/pki/tls/private/httpd.key9. 监控与告警方案
9.1 监控工具
9.1.1 安装Prometheus和Grafana
# 安装Prometheusyum -y install prometheus
# 安装Grafanayum -y install grafana
# 启动服务systemctl enable prometheus grafana-serversystemctl start prometheus grafana-server9.1.2 配置Prometheus
scrape_configs: - job_name: 'openstack' static_configs: - targets: ['controller:9100', 'compute:9100'] - job_name: 'mysql' static_configs: - targets: ['controller:9104'] - job_name: 'rabbitmq' static_configs: - targets: ['controller:9419']9.2 关键监控指标
9.2.1 系统指标
- CPU使用率
- 内存使用率
- 磁盘空间
- 网络流量
9.2.2 OpenStack服务指标
- 服务状态
- API响应时间
- 队列长度
- 错误率
9.2.3 云主机指标
- 云主机数量
- 资源使用率
- 启动/关闭时间
9.3 告警配置
9.3.1 Prometheus告警规则
groups:- name: openstack_alerts rules: - alert: InstanceDown expr: up == 0 for: 5m labels: severity: critical annotations: summary: "Instance {{ $labels.instance }} down" description: "{{ $labels.instance }} has been down for more than 5 minutes"
- alert: HighCPU expr: (100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage is above 80% for 5 minutes"9.3.2 告警通知
global: smtp_smarthost: 'smtp.example.com:587' smtp_from: 'alerts@example.com' smtp_auth_username: 'alerts@example.com' smtp_auth_password: 'password'
route: group_by: ['alertname'] group_wait: 30s group_interval: 5m repeat_interval: 4h receiver: 'email'
receivers:- name: 'email' email_configs: - to: 'admin@example.com' send_resolved: true10. 性能调优建议
10.1 系统调优
10.1.1 内核参数调优
# 编辑sysctl配置vi /etc/sysctl.conf
# 添加以下配置net.core.somaxconn = 4096net.ipv4.tcp_max_syn_backlog = 4096net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_keepalive_probes = 5net.ipv4.tcp_keepalive_intvl = 15
# 应用配置sysctl -p10.1.2 内存管理调优
# 编辑内存配置vi /etc/sysctl.conf
# 添加以下配置vm.swappiness = 10vm.overcommit_memory = 1
# 应用配置sysctl -p10.2 OpenStack服务调优
10.2.1 Nova调优
# 编辑Nova配置vi /etc/nova/nova.conf
[DEFAULT]# 增加并发处理rpc_thread_pool_size = 32# 增加API超时时间api_timeout = 60# 启用实例自动发现discover_hosts_in_cells_interval = 60
[conductor]# 增加并发处理workers = 4
[scheduler]# 增加并发处理workers = 410.2.2 Neutron调优
# 编辑Neutron配置vi /etc/neutron/neutron.conf
[DEFAULT]# 增加并发处理rpc_thread_pool_size = 32# 增加API超时时间api_timeout = 60
[agent]# 增加并发处理num_agents = 410.2.3 Cinder调优
# 编辑Cinder配置vi /etc/cinder/cinder.conf
[DEFAULT]# 增加并发处理rpc_thread_pool_size = 32# 增加API超时时间api_timeout = 60
[scheduler]# 增加并发处理workers = 410.3 数据库调优
10.3.1 MariaDB调优
# 编辑MySQL配置vi /etc/my.cnf.d/openstack.cnf
[mysqld]# 增加最大连接数max_connections = 4096# 增加缓冲池大小innodb_buffer_pool_size = 2G# 增加日志文件大小innodb_log_file_size = 512M# 启用查询缓存query_cache_size = 64Mquery_cache_type = 111. 高可用部署方案
11.1 架构设计
11.1.1 多控制节点架构
- 2-3个控制节点
- 负载均衡器(如HAProxy)
- 共享存储(如NFS或Ceph)
- 数据库集群(如MariaDB Galera)
- 消息队列集群(如RabbitMQ集群)
11.1.2 网络设计
- 管理网络:用于控制节点间通信
- 外部网络:用于云主机访问外部
- 内部网络:用于计算节点间通信
- 存储网络:用于存储设备通信
11.2 部署步骤
11.2.1 准备工作
- 配置负载均衡器
- 配置共享存储
- 配置数据库集群
- 配置消息队列集群
11.2.2 控制节点部署
- 在每个控制节点上安装相同的OpenStack服务
- 配置服务使用共享数据库和消息队列
- 配置负载均衡器指向所有控制节点
11.2.3 服务配置
# 配置Keystone使用数据库集群vi /etc/keystone/keystone.conf
[database]connection = mysql+pymysql://keystone:000000@controller1,controller2,controller3/keystone?read_default_file=/etc/my.cnf.d/openstack.cnf&read_timeout=60&write_timeout=60&autocommit=1&charset=utf8
# 配置RabbitMQ集群vi /etc/nova/nova.conf
[DEFAULT]transport_url = rabbit://rabbitmq:000000@controller1:5672,controller2:5672,controller3:567212. 升级与维护指南
12.1 升级步骤
12.1.1 准备工作
- 备份所有数据和配置
- 停止所有OpenStack服务
- 更新系统包
12.1.2 服务升级
- 升级数据库模式
- 升级服务软件包
- 启动服务
- 验证服务状态
12.1.3 验证升级
- 检查服务状态
- 测试API功能
- 验证云主机操作
12.2 日常维护
12.2.1 定期维护
- 备份数据和配置
- 更新系统和服务包
- 清理日志文件
- 检查磁盘空间
12.2.2 故障处理
- 查看服务日志
- 检查服务状态
- 验证网络连接
- 测试数据库连接
- 重启故障服务
总结
本文档提供了OpenStack Train版本在openEuler系统上的完整安装指南,涵盖了从环境准备到核心服务配置的全过程。
已安装的核心服务
| 服务名称 | 功能描述 | 安装节点 |
|---|---|---|
| Keystone | 身份认证服务 | 控制节点 |
| Glance | 镜像服务 | 控制节点 |
| Placement | 放置服务 | 控制节点 |
| Nova | 计算服务 | 控制节点 + 计算节点 |
| Neutron | 网络服务 | 控制节点 + 计算节点 |
| Dashboard | 仪表板服务 | 控制节点 |
| Cinder | 块存储服务 | 控制节点 + 存储节点 |
后续学习建议
- 深入理解架构:学习OpenStack各组件之间的交互关系
- 高可用部署:研究多控制节点的高可用架构方案
- 性能优化:了解OpenStack平台的性能调优方法
- 故障排查:掌握常见问题的诊断和解决方法
- 安全加固:学习OpenStack平台的安全配置最佳实践
按照本文档步骤操作,可以成功搭建一个功能完整的OpenStack云计算平台,支持虚拟网络的创建和云主机的生命周期管理。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!