Linux 环境下部署 OpenStack 系统 (3 节点)
基于 Linux 环境下,部署含有 3 个节点的 OpenStack 系统
概述
本文介绍如何在 Linux 环境下部署包含 3 个节点的 OpenStack 系统。3 个节点分别为:
- Controller(控制)节点:负责 OpenStack 服务的管理和协调。- Compute(计算)节点:负责虚拟机的创建和管理。- Storage(存储)节点:负责虚拟机磁盘的存储。
OpenStack 系统需包含 7 个关键组件,分别为:
- Keystone(身份验证):负责用户和角色的管理。- Glance(镜像管理):负责虚拟机镜像的管理。- Nova(计算资源管理):负责虚拟机的创建和管理。- Neutron(网络资源管理):负责虚拟机的网络连接。- Horizon(图形化界面):提供 Web 界面,方便用户管理 OpenStack 系统。- Cinder(块存储管理):负责虚拟机磁盘的存储。
步骤如下:
1. 环境准备
- 确保每个节点都已安装 Linux 操作系统,且网络通畅。- 确保每个节点都已安装 Python 和 pip 工具。- 为每个节点配置一个静态 IP 地址。
2. 安装 Keystone 组件
在 Controller 节点上执行以下命令:
sudo apt-get install keystone
然后编辑 /etc/keystone/keystone.conf 文件,配置数据库连接:
[database]connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
接着执行以下命令创建 Keystone 数据库:
sudo mysql -u root -pCREATE 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';exit
然后执行以下命令初始化 Keystone:
sudo su -s /bin/sh -c 'keystone-manage db_sync' keystone
最后执行以下命令创建管理员账户和服务账户:
export OS_TOKEN=ADMIN_TOKENexport OS_URL=http://controller:35357/v3export OS_IDENTITY_API_VERSION=3
openstack user create --domain default --password-prompt adminopenstack role create adminopenstack role add --project admin --user admin adminopenstack project create --domain default --description 'Service Project' serviceopenstack project create --domain default --description 'Demo Project' demoopenstack user create --domain default --password-prompt demoopenstack role create useropenstack role add --project demo --user demo user
3. 安装 Glance 组件
在 Controller 节点上执行以下命令:
sudo apt-get install glance
然后编辑 /etc/glance/glance-api.conf 文件,配置数据库连接和 Keystone 认证:
[database]connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = glancepassword = GLANCE_PASS
接着执行以下命令创建 Glance 数据库:
sudo mysql -u root -pCREATE 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';exit
然后执行以下命令初始化 Glance:
sudo su -s /bin/sh -c 'glance-manage db_sync' glance
最后执行以下命令创建 Glance 服务和 API 端点:
openstack service create --name glance --description 'OpenStack Image' imageopenstack endpoint create --region RegionOne image public http://controller:9292openstack endpoint create --region RegionOne image internal http://controller:9292openstack endpoint create --region RegionOne image admin http://controller:9292
4. 安装 Nova 组件
在 Controller 节点上执行以下命令:
sudo apt-get install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
然后编辑 /etc/nova/nova.conf 文件,配置数据库连接和 Keystone 认证:
[database]connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[api_database]connection = mysql+pymysql://nova_api:NOVA_DBPASS@controller/nova_api
[keystone_authtoken]auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = novapassword = NOVA_PASS
[vnc]enabled = trueserver_listen = $my_ipserver_proxyclient_address = $my_ipnovncproxy_base_url = http://controller:6080/vnc_auto.html
[glance]api_servers = http://controller:9292
[oslo_concurrency]lock_path = /var/lib/nova/tmp
接着执行以下命令创建 Nova 数据库:
sudo mysql -u root -pCREATE DATABASE nova_api;CREATE DATABASE nova;GRANT ALL PRIVILEGES ON nova_api.* TO 'nova_api'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';GRANT ALL PRIVILEGES ON nova_api.* TO 'nova_api'@'%' IDENTIFIED BY 'NOVA_DBPASS';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';exit
然后执行以下命令初始化 Nova:
sudo su -s /bin/sh -c 'nova-manage api_db sync' novasudo su -s /bin/sh -c 'nova-manage db sync' nova
最后执行以下命令创建 Nova 服务和 API 端点:
openstack user create --domain default --password-prompt novaopenstack role add --project service --user nova adminopenstack service create --name nova --description 'OpenStack Compute' computeopenstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%(tenant_id)sopenstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%(tenant_id)sopenstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%(tenant_id)s
5. 安装 Neutron 组件
在 Controller 节点上执行以下命令:
sudo apt-get install neutron-server neutron-plugin-ml2 neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
然后编辑 /etc/neutron/neutron.conf 文件,配置数据库连接和 Keystone 认证:
[database]connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
[keystone_authtoken]auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = Defaultuser_domain_name = Defaultproject_name = serviceusername = neutronpassword = NEUTRON_PASS
接着编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件,配置网络类型和物理网络:
[ml2]type_drivers = flat,vlantenant_network_types = vlanmechanism_drivers = linuxbridge
[ml2_type_flat]flat_networks = provider
[ml2_type_vlan]network_vlan_ranges = provider
[ml2_type_gre]tunnel_id_ranges = 1:1000
[securitygroup]enable_security_group = truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
[linux_bridge]physical_interface_mappings = provider:eth0
然后执行以下命令创建 Neutron 数据库:
sudo mysql -u root -pCREATE 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';exit
然后执行以下命令初始化 Neutron:
sudo 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 user create --domain default --password-prompt neutronopenstack role add --project service --user neutron adminopenstack service create --name neutron --description 'OpenStack Networking' networkopenstack endpoint create --region RegionOne network public http://controller:9696openstack endpoint create --region RegionOne network internal http://controller:9696openstack endpoint create --region RegionOne network admin http://controller:9696
6. 安装 Horizon 组件
在 Controller 节点上执行以下命令:
sudo apt-get install openstack-dashboard
然后编辑 /etc/openstack-dashboard/local_settings.py 文件,配置 Keystone 认证:
OPENSTACK_HOST = 'controller'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://%s:5000/v3' % OPENSTACK_HOSTOPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = TrueOPENSTACK_API_VERSIONS = { 'identity': 3, 'image': 2, 'volume': 2,}
然后执行以下命令重启 Apache 服务:
sudo service apache2 restart
7. 安装 Cinder 组件
在 Storage 节点上执行以下命令:
sudo apt-get install cinder-volume python-mysqldb
然后编辑 /etc/cinder/cinder.conf 文件,配置数据库连接和 RabbitMQ 连接:
[database]connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
[DEFAULT]transport_url = rabbit://openstack:RABBIT_PASS@controllerauth_strategy = keystonemy_ip = <STORAGE_NODE_IP>enabled_backends = lvmglance_api_servers = http://controller:9292volume_driver = cinder.volume.drivers.lvm.LVMVolumeDrivervolume_group = cinder-volumesiscsi_helper = tgtadm
接着执行以下命令创建 Cinder 数据库:
sudo mysql -u root -pCREATE DATABASE cinder;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';exit
然后执行以下命令初始化 Cinder:
sudo su -s /bin/sh -c 'cinder-manage db sync' cinder
最后执行以下命令创建 Cinder 服务和 API 端点:
openstack user create --domain default --password-prompt cinderopenstack role add --project service --user cinder adminopenstack service create --name cinder --description 'OpenStack Block Storage' volumeopenstack service create --name cinderv2 --description 'OpenStack Block Storage' volumev2openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%(tenant_id)sopenstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%(tenant_id)sopenstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%(tenant_id)sopenstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%(tenant_id)sopenstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%(tenant_id)sopenstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%(tenant_id)s
8. 安装 Compute 节点
在 Compute 节点上执行以下命令:
sudo apt-get install nova-compute
然后编辑 /etc/nova/nova.conf 文件,配置数据库连接和 RabbitMQ 连接:
[database]connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
[api_database]connection = mysql+pymysql://nova_api:NOVA_DBPASS@controller/nova_api
[DEFAULT]transport_url = rabbit://openstack:RABBIT_PASS@controllerauth_strategy = keystonemy_ip = <COMPUTE_NODE_IP>enabled_apis = osapi_compute,metadata
接着执行以下命令重启 Nova 服务:
sudo service nova-compute restart
9. 验证 OpenStack 系统
在 Controller 节点上,执行以下命令登录 OpenStack 系统:
export OS_USERNAME=adminexport OS_PASSWORD=ADMIN_PASSexport OS_PROJECT_NAME=adminexport OS_USER_DOMAIN_NAME=Defaultexport OS_PROJECT_DOMAIN_NAME=Defaultexport OS_AUTH_URL=http://controller:35357/v3export OS_IDENTITY_API_VERSION=3
然后执行以下命令验证 OpenStack 环境:
openstack image listopenstack compute service listopenstack network agent list
以上命令分别验证镜像、计算和网络服务是否正常。若均正常工作,则 OpenStack 系统已成功部署
原文地址: https://www.cveoy.top/t/topic/oRyD 著作权归作者所有。请勿转载和采集!