OpenStack作为一个开源的云计算管理平台,在当今云计算领域有着广泛的应用,本文将详细介绍OpenStack的安装部署过程,从前期准备到具体的安装步骤,再到后续的验证与优化,旨在为读者提供一个全面、系统的OpenStack安装部署指南,帮助读者顺利搭建起自己的OpenStack云环境。
随着云计算技术的飞速发展,越来越多的企业和组织开始采用云计算来满足其业务需求,OpenStack作为一个开源的、可扩展的云计算管理平台,能够帮助用户快速搭建起自己的私有云或公有云环境,它提供了一系列的服务,如计算(Nova)、网络(Neutron)、存储(Cinder、Swift)等,使得用户可以方便地管理和使用云资源,OpenStack的安装部署过程相对复杂,需要一定的技术基础和经验,本文将详细介绍OpenStack的安装部署过程,帮助读者顺利完成OpenStack的搭建。

OpenStack简介
1 定义
OpenStack是一个由一系列开源项目组成的云计算管理平台,旨在提供一个开放、灵活、可扩展的云计算解决方案,它通过将计算、网络、存储等资源进行抽象和管理,为用户提供了一个统一的云服务接口。
2 主要组件
- Nova:计算服务,负责虚拟机的创建、管理和调度。
- Neutron:网络服务,提供虚拟网络的创建、管理和连接。
- Cinder:块存储服务,为虚拟机提供持久化的块存储设备。
- Swift:对象存储服务,用于存储大量的非结构化数据。
- Glance:镜像服务,负责虚拟机镜像的管理和存储。
- Keystone:身份认证服务,提供用户认证、授权和服务目录管理。
安装部署前期准备
1 硬件准备
- 服务器:至少需要3台服务器,分别作为控制节点、计算节点和存储节点,服务器的配置建议如下:
- 控制节点:CPU至少4核,内存至少8GB,硬盘至少100GB。
- 计算节点:CPU至少8核,内存至少16GB,硬盘至少200GB。
- 存储节点:硬盘容量根据实际需求而定,建议至少500GB。
- 网络:服务器之间需要有高速稳定的网络连接,建议使用万兆以太网。
2 软件准备
- 操作系统:建议使用Ubuntu 20.04 LTS或CentOS 8操作系统。
- OpenStack版本:选择适合自己需求的OpenStack版本,本文以OpenStack Train版本为例。
3 环境配置
- 主机名配置:为每台服务器设置唯一的主机名,并在
/etc/hosts文件中添加服务器的IP地址和主机名对应关系。# 示例 /etc/hosts 文件内容 192.168.1.100 controller 192.168.1.101 compute 192.168.1.102 storage
- 防火墙配置:关闭防火墙或开放OpenStack所需的端口,以CentOS 8为例,可以使用以下命令关闭防火墙:
systemctl stop firewalld systemctl disable firewalld
- SELinux配置:禁用SELinux,以避免对OpenStack服务产生影响,编辑
/etc/selinux/config文件,将SELINUX的值设置为disabled:SELINUX=disabled
然后重启服务器使配置生效。
控制节点安装部署
1 安装基础软件包
以CentOS 8为例,使用以下命令安装基础软件包:
yum install -y epel-release yum install -y python3-openstackclient openstack-selinux mariadb mariadb-server python3-PyMySQL
2 配置数据库
启动MariaDB服务并设置开机自启:
systemctl start mariadb systemctl enable mariadb
运行mysql_secure_installation命令进行数据库安全配置,设置数据库root用户密码等。
创建OpenStack所需的数据库,例如创建Keystone数据库:
CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
3 安装和配置Keystone服务
安装Keystone软件包:
yum install -y openstack-keystone httpd mod_wsgi
编辑/etc/keystone/keystone.conf文件,配置数据库连接信息和令牌提供者:
[database] connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone [token] provider = fernet
同步Keystone数据库:
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化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 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 RegionOne
配置Apache HTTP Server:
编辑/etc/httpd/conf/httpd.conf文件,添加以下内容:
ServerName controller
创建Keystone的WSGI配置文件:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动Apache HTTP Server并设置开机自启:
systemctl start httpd systemctl enable httpd
4 安装和配置Glance服务
安装Glance软件包:
yum install -y openstack-glance
编辑/etc/glance/glance-api.conf文件,配置数据库连接信息和Keystone认证信息:
[database] connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] www_authenticate_uri = http://controller:5000/v3 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = GLANCE_PASS [paste_deploy] flavor = keystone
创建Glance数据库:
CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
同步Glance数据库:
su -s /bin/sh -c "glance-manage db_sync" glance
创建Glance服务实体和API端点:
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
创建Glance用户:
openstack user create --domain default --password GLANCE_PASS glance openstack role add --project service --user glance admin
启动Glance服务并设置开机自启:
systemctl start openstack-glance-api systemctl enable openstack-glance-api
5 安装和配置Nova服务
安装Nova软件包:
yum install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
编辑/etc/nova/nova.conf文件,配置数据库连接信息、Keystone认证信息等:
[database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova [api_database] connection = mysql+pymysql://nova_api:NOVA_API_DBPASS@controller/nova_api [keystone_authtoken] www_authenticate_uri = http://controller:5000/v3 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = NOVA_PASS [DEFAULT] my_ip = 192.168.1.100 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver
创建Nova数据库:
CREATE DATABASE nova_api; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova_api'@'localhost' IDENTIFIED BY 'NOVA_API_DBPASS'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova_api'@'%' IDENTIFIED BY 'NOVA_API_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_D,BPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
同步Nova数据库:
su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage db sync" nova
创建Nova服务实体和API端点:
openstack service create --name nova --description "OpenStack Compute" compute openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s
创建Nova用户:
openstack user create --domain default --password NOVA_PASS nova openstack role add --project service --user nova admin
启动Nova服务并设置开机自启:
systemctl start openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler systemctl enable openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
6 安装和配置Neutron服务
安装Neutron软件包:
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
编辑/etc/neutron/neutron.conf文件,配置数据库连接信息、Keystone认证信息等:
[database] connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron [keystone_authtoken] www_authenticate_uri = http://controller:5000/v3 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = neutron password = NEUTRON_PASS [DEFAULT] core_plugin = ml2 service_plugins = router allow_overlapping_ips = true
编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件,配置ML2插件:
[ml2] type_drivers = flat,vlan,vxlan tenant_network_types = vxlan mechanism_drivers = linuxbridge,l2population extension_drivers = port_security [ml2_type_flat] flat_networks = provider [ml2_type_vxlan] vni_ranges = 1:1000 [securitygroup] enable_ipset = true
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件,配置Linux Bridge代理:
[linux_bridge] physical_interface_mappings = provider:eth0 [vxlan] enable_vxlan = true local_ip = 192.168.1.100 l2_population = true [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
编辑/etc/neutron/l3_agent.ini文件,配置L3代理:
[DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver external_network_bridge =
编辑/etc/neutron/dhcp_agent.ini文件,配置DHCP代理:
[DEFAULT] interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = true
创建Neutron数据库:
CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
同步Neutron数据库:
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
创建Neutron服务实体和API端点:
openstack service create --name neutron --description "OpenStack Networking" network openstack endpoint create --region RegionOne network public http://controller:9696 openstack endpoint create --region RegionOne network internal http://controller:9696 openstack endpoint create --region RegionOne network admin http://controller:9696
创建Neutron用户:
openstack user create --domain default --password NEUTRON_PASS neutron openstack role add --project service --user neutron admin
启动Neutron服务并设置开机自启:
systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent
计算节点安装部署
1 安装基础软件包
以CentOS 8为例,使用以下命令安装基础软件包:
yum install -y openstack-nova-compute openstack-neutron-linuxbridge ebtables ipset
2 配置Nova服务
编辑/etc/nova/nova.conf文件,配置数据库连接信息、Keystone认证信息和计算节点IP地址:
[database] connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova [api_database] connection = mysql+pymysql://nova_api:NOVA_API_DBPASS@controller/nova_api [keystone_authtoken] www_authenticate_uri = http://controller:5000/v3 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = nova password = NOVA_PASS [DEFAULT] my_ip = 192.168.1.101 use_neutron = true firewall_driver = nova.virt.firewall.NoopFirewallDriver
启动Nova计算服务并设置开机自启:
systemctl start libvirtd openstack-nova-compute systemctl enable libvirtd openstack-nova-compute
3 配置Neutron服务
编辑/etc/neutron/neutron.conf文件,配置Keystone认证信息:
[keystone_authtoken] www_authenticate_uri = http://controller:5000/v3 auth_url = http://controller:5000/v3 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = neutron password = NEUTRON_PASS
编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件,配置Linux Bridge代理:
[linux_bridge] physical_interface_mappings = provider:eth0 [vxlan] enable_vxlan = true local_ip = 192.168.1.101 l2_population = true [securitygroup] enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
启动Neutron Linux Bridge代理


