共计 4073 个字符,预计需要花费 11 分钟才能阅读完成。
CentOS7 控制节点与网络节点部署实战:从零搭建高可用 OpenStack 环境
1. 环境准备
在开始部署之前,我们需要确保系统满足基本要求,并做好网络规划。

1.1 系统要求
- 至少 2 台 CentOS 7 服务器(控制节点和网络节点各一台)
- 推荐配置:4 核 CPU、8GB 内存、100GB 存储
- 系统版本:CentOS 7.9 Minimal 安装
1.2 网络规划
典型 OpenStack 环境需要 3 个网络平面:
- 管理网络:用于节点间通信(如 10.0.0.0/24)
- 数据网络:用于虚拟机流量(如 192.168.1.0/24)
- 外部网络:用于公共访问(如 203.0.113.0/24)
1.3 软件依赖
在所有节点上执行以下命令安装基础依赖:
yum install -y centos-release-openstack-ussuri
yum update -y
yum install -y python3-openstackclient openstack-selinux
2. 控制节点部署
控制节点是 OpenStack 的大脑,负责协调所有服务。
2.1 数据库安装(MySQL/MariaDB)
- 安装 MariaDB 服务器:
yum install -y mariadb mariadb-server python2-PyMySQL
- 创建配置文件
/etc/my.cnf.d/openstack.cnf:
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
- 启动并启用服务:
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation
2.2 消息队列(RabbitMQ)
- 安装 RabbitMQ:
yum install -y rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
- 添加 OpenStack 用户:
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
2.3 身份认证服务(Keystone)
- 创建 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';
- 安装 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
- 初始化数据库并启动服务:
su -s /bin/sh -c "keystone-manage db_sync" keystone
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group 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
systemctl enable httpd.service
systemctl start httpd.service
3. 网络节点部署
网络节点负责 OpenStack 中的所有网络功能。
3.1 网络模式选择
OpenStack 支持两种主要网络模式:
- Provider 网络:管理员创建网络,直接映射到物理网络
- Tenant 网络:租户可以创建自己的网络,更灵活但更复杂
对于初学者,建议从 Provider 网络开始。
3.2 Neutron 组件安装
- 安装 Neutron 组件:
yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
- 配置
/etc/neutron/neutron.conf:
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:RABBIT_PASS@controller
[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
- 配置 Linux bridge 代理:
[linux_bridge]
physical_interface_mappings = provider:eth1
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- 启动服务:
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
4. 服务集成与验证
完成部署后,我们需要验证各组件是否正常工作。
4.1 创建测试网络
openstack network create --share --external --provider-physical-network provider \
--provider-network-type flat provider
openstack subnet create --network provider --allocation-pool \
start=192.168.1.100,end=192.168.1.200 --dns-nameserver 8.8.8.8 \
--gateway 192.168.1.1 --subnet-range 192.168.1.0/24 provider
4.2 验证服务状态
openstack compute service list
openstack network agent list
5. 常见问题排查
5.1 服务启动失败
- 检查日志:
journalctl -xe和/var/log/neutron/server.log - 确认数据库连接:
mysql -u neutron -p - 验证 RabbitMQ 连接:
rabbitmqctl list_users
5.2 网络连接问题
- 检查 Linux bridge:
brctl show - 验证 iptables 规则:
iptables -L -n -v - 测试网络连通性:
ping和traceroute
6. 性能优化建议
6.1 系统参数调优
echo "net.ipv4.tcp_keepalive_time = 600" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_probes = 3" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf
sysctl -p
6.2 数据库优化
在 /etc/my.cnf.d/openstack.cnf 中添加:
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
7. 架构示意图
+-------------------+ +-------------------+
| 控制节点 | | 网络节点 |
|-------------------| |-------------------|
| Keystone | | Neutron Server |
| Glance |<--->| Linux Bridge |
| Nova | | DHCP Agent |
| MySQL | | L3 Agent |
| RabbitMQ | +-------------------+
+-------------------+
8. 进一步学习建议
- 尝试部署计算节点并启动第一个虚拟机
- 探索更复杂的 Tenant 网络模式
- 了解 Cinder 块存储服务的集成
- 研究 Horizon 仪表板的定制
通过本指南,您应该已经成功部署了 OpenStack 的控制节点和网络节点。在实际生产环境中,还需要考虑高可用性、备份和监控等方面。建议从小规模测试环境开始,逐步扩展到生产环境。
正文完
