CentOS7控制节点与网络节点部署实战:从零搭建高可用OpenStack环境

1次阅读
没有评论

共计 4073 个字符,预计需要花费 11 分钟才能阅读完成。

image.webp

CentOS7 控制节点与网络节点部署实战:从零搭建高可用 OpenStack 环境

1. 环境准备

在开始部署之前,我们需要确保系统满足基本要求,并做好网络规划。

CentOS7 控制节点与网络节点部署实战:从零搭建高可用 OpenStack 环境

1.1 系统要求

  • 至少 2 台 CentOS 7 服务器(控制节点和网络节点各一台)
  • 推荐配置:4 核 CPU、8GB 内存、100GB 存储
  • 系统版本:CentOS 7.9 Minimal 安装

1.2 网络规划

典型 OpenStack 环境需要 3 个网络平面:

  1. 管理网络:用于节点间通信(如 10.0.0.0/24)
  2. 数据网络:用于虚拟机流量(如 192.168.1.0/24)
  3. 外部网络:用于公共访问(如 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)

  1. 安装 MariaDB 服务器:
yum install -y mariadb mariadb-server python2-PyMySQL
  1. 创建配置文件/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
  1. 启动并启用服务:
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation

2.2 消息队列(RabbitMQ)

  1. 安装 RabbitMQ:
yum install -y rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
  1. 添加 OpenStack 用户:
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

2.3 身份认证服务(Keystone)

  1. 创建 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';
  1. 安装 keystone 组件:
yum install -y openstack-keystone httpd mod_wsgi
  1. 配置/etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

[token]
provider = fernet
  1. 初始化数据库并启动服务:
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 组件安装

  1. 安装 Neutron 组件:
yum install -y openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables
  1. 配置/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
  1. 配置 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
  1. 启动服务:
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
  • 测试网络连通性:pingtraceroute

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. 进一步学习建议

  1. 尝试部署计算节点并启动第一个虚拟机
  2. 探索更复杂的 Tenant 网络模式
  3. 了解 Cinder 块存储服务的集成
  4. 研究 Horizon 仪表板的定制

通过本指南,您应该已经成功部署了 OpenStack 的控制节点和网络节点。在实际生产环境中,还需要考虑高可用性、备份和监控等方面。建议从小规模测试环境开始,逐步扩展到生产环境。

正文完
 0
评论(没有评论)