【版本】
当前版本号v20240314
版本 | 修改说明 |
---|---|
v20240314 | 新增日志查看说明和命令结果展示;修改了网口编号修改相关描述;修正日志路径错误 |
v20240310 | 新增参考配置 |
v20240307 | 修正部分错漏 |
v20230701 | 文档基于 RockyLinux8 和 Openstack Yoga 开发 |
任务7.1 - 控制节点安装 neutron 服务
【任务目的】
- 掌握搭建 Openstack Neutron 组件
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- RockyLinux 8 系统镜像
- VirtualBox
【任务原理】
- neutron-server 端口(9696) API:接受和响应外部的网络管理请求
- neutron-linuxbridge-agent:负责创建桥接网卡
- neutron-dhcp-agent:负责通过 DHCP 协议自动分配 IP 给虚拟机
- neutron-metadata-agent:配合 nova-metadata-api 实现虚拟机的定制化操作
- L3-agent:实现三层网络vxlan(网络层)
【任务步骤】
控制节点实验步骤
- 使用 root 用户登录控制节点(Controller)。输出 Hostname ,确认所在节点时控制节点。
hostname
结果:
controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
- 使用 root 用户登录 MariaDB 数据库,密码为123456。创建 neutron 库,neutron 用户和授权给neutron用户。
mysql -u root -p
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';
exit;
控制节点创建 neutron 用户
- 在 Keystone 创建系统用户 neutron,并关联 admin 角色
source /etc/keystone/admin-openrc
openstack user create --domain default --password NEUTRON_PASS neutron
openstack role add --project service --user neutron admin
控制节点创建 neutron service 和 endpoint
- 在 Keystone 上创建 Neutron Service 和 Endpoint。注意替换你的学号
openstack service create --name neutron \
--description "OpenStack Networking" network
openstack endpoint create --region RegionOne \
network public http://controller+你学号后3位:9696
openstack endpoint create --region RegionOne \
network internal http://controller+你学号后3位:9696
openstack endpoint create --region RegionOne \
network admin http://controller+你学号后3位:9696
注意这里的 service 不能重复创建,运行命令
openstack service list
应该只能查看到1个 Neutron 的 service,如果有多个可以用openstack service delete '替换为service ID'
命令删除
注意这里 endpoint 不能重复创建,运行命令
openstack endpoint list
应该只能查看到3个 Neutron 的 endpoint,如果有多个可以用openstack endpoint delete '替换为endpoint ID'
命令删除
控制节点安装 Neutron 包和进行配置
- 安装 Neutron 服务相应软件包
dnf install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
neutron.conf配置
- 备份
neutron.conf
配置文件。
cp /etc/neutron/neutron.conf{,.bak}
grep '^[a-Z\[]' /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
- 修改
neutron.conf
配置文件。注意替换你的学号。
openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:NEUTRON_DBPASS@controller+你学号后3位/neutron
openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@controller+你学号后3位
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://controller+你学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller+你学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller+你学号后3位:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf nova auth_url http://controller+你学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf nova auth_type password
openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne
openstack-config --set /etc/neutron/neutron.conf nova project_name service
openstack-config --set /etc/neutron/neutron.conf nova username nova
openstack-config --set /etc/neutron/neutron.conf nova password NOVA_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
ml2_conf.ini配置
注意:这里ml2指的是“Modular Layer 2”的缩写,是 Neutron 对于二层网络进行抽象和建模开发的一个插件。
- 备份
ml2_conf.ini
配置文件
cp /etc/neutron/plugins/ml2/ml2_conf.ini{,.bak}
grep '^[a-Z\[]' /etc/neutron/plugins/ml2/ml2_conf.ini.bak >/etc/neutron/plugins/ml2/ml2_conf.ini
- 修改
ml2_conf.ini
配置文件。
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks provider
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset true
- 创建软连接,把 neutron 插件配置指向ml2_conf.ini。
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
linuxbridge_agent.ini配置
- 备份
linuxbridge_agent.ini
配置文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
grep '^[a-Z\[]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
- 查看你的主机IP对应的网口编号。
- Virtualbox 未修改过网口编号一般为
enp0s3
。 - VMWare Workstation 未修改过网口编号一般为
ens33
。
ip a
- 修改
linuxbridge_agent.ini
配置文件,这里默认使用enp0s3
,如果你的网口编号不一样,请注意替换。
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:enp0s3
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan false
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
br_netfilter 模块
br_netfilter 是一个核心模块用于实现 Linux 系统内网桥的支持。
- 开启
br_netfilter
模块。
modprobe br_netfilter
- 设置随开机启动。
echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
echo 'modprobe br_netfilter' > /etc/sysconfig/modules/br_netfilter.modules
- 设置权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
- 查看模块是否已经启用。
lsmod |grep br_netfilter
- 如果出现以下结果,则表示已经启用
br_netfilter 24576 0
bridge 290816 1 br_netfilter
dhcp_agent.ini配置
- 备份
dhcp_agent.ini
配置文件
cp /etc/neutron/dhcp_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/dhcp_agent.ini.bak >/etc/neutron/dhcp_agent.ini
- 修改
dhcp_agent.ini
配置文件。
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver linuxbridge
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true
metadata_agent.ini配置
- 备份
metadata_agent.ini
配置文件
cp /etc/neutron/metadata_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/metadata_agent.ini.bak >/etc/neutron/metadata_agent.ini
- 修改
metadata_agent.ini
配置文件。注意替换学号。
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_host controller+你学号后3位
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET
nova.conf配置
- 再次修改/etc/nova/nova.conf。注意替换学号。
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller+你学号后3位:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy true
openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET
- 同步 neutron 数据库。
cd /etc/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
- 启动相应服务。
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-agent
任务7.2 - 计算节点安装 neutron 服务
【任务目的】
- 掌握搭建 Openstack Neutron 组件
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- RockyLinux 8 系统镜像
- VirtualBox
【任务原理】
- neutron-server 端口(9696) API:接受和响应外部的网络管理请求
- neutron-linuxbridge-agent:负责创建桥接网卡
- neutron-dhcp-agent:负责通过 DHCP 协议自动分配 IP 给虚拟机
- neutron-metadata-agent:配合 nova-metadata-api 实现虚拟机的定制化操作
- L3-agent:实现三层网络vxlan(网络层)
【任务步骤】
- 使用Root用户登录计算节点(Coompute)。输出 Hostname ,确认所在节点是计算节点。
hostname
结果:
compute+你的学号后3位
注意以下步骤在计算节点(Computer)上执行!
- 安装相关网络工具和驱动。
dnf install openstack-neutron-linuxbridge ebtables ipset -y
neutron.conf配置
- 备份
neutron.conf
配置。
cp /etc/neutron/neutron.conf{,.bak}
grep '^[a-Z\[]' /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
- 修改
neutron.conf
,注意替换你的学号。
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@controller+你的学号后3位
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://controller+你的学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller+你的学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller+你的学号后3位:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
- 查看你的主机 IP 对应的网口编号。如果修改过为
eth0
,未修改过一般为ens33
。
ip a
- 备份
linuxbridge_agent.ini
配置文件。
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini{,.bak}
grep '^[a-Z\[]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak >/etc/neutron/plugins/ml2/linuxbridge_agent.ini
- 修改
linuxbridge_agent.ini
配置,注意替换网口编号
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:替换为你的网口编号
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan false
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
- 修改 nova 配置,增加 neutron 相关配置,注意替换你的学号。
openstack-config --set /etc/nova/nova.conf neutron url http://controller+你的学号后3位:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller+你的学号后3位:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
br_netfilter 模块
br_netfilter 是一个核心模块用于实现 Linux 系统内网桥的支持。
- 开启
br_netfilter
模块。
modprobe br_netfilter
- 设置随开机启动。
echo 'net.bridge.bridge-nf-call-iptables = 1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables = 1' >> /etc/sysctl.conf
echo 'modprobe br_netfilter' > /etc/sysconfig/modules/br_netfilter.modules
- 设置权限
chmod 755 /etc/sysconfig/modules/br_netfilter.modules
- 查看模块是否已经启用。
lsmod |grep br_netfilter
- 如果出现以下结果,则表示已经启用
br_netfilter 24576 0
bridge 290816 1 br_netfilter
启动 Neutron 服务
- 启动服务
systemctl restart openstack-nova-compute
systemctl enable neutron-linuxbridge-agent
systemctl start neutron-linuxbridge-agent
- 查看 OpenStack 相关服务是否是 active 的状态,正常应该出现4个服务 active。
opst-proc-show.sh
- 验证配置文件里面 controller 出现的次数。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/nova/nova.conf|wc -l
验证结果:
9
grep -o controller+你学号后3位 /etc/neutron/neutron.conf|wc -l
验证结果:
4
如果以上次数不对,请用 vim 打开对应配置文件进行查找修改。
如果计算节点的 Nova 出现问题,可以点击下载此 /etc/nova/nova.conf 参考配置 进行对比。
如果计算节点的 Neutron 出现问题,可以点击以下参考配置进行对比。
任务7.3 - 控制节点 neutron 服务验证
【任务目的】
- 掌握 Openstack Neutron 服务检查和校验
【任务环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【任务资源】
- FinalShell
- RockyLinux 8 系统镜像
- VirtualBox
【任务步骤】
- 使用 root 用户登录控制节点(Controller)。输出 Hostname ,确认所在节点时控制节点。
hostname
结果:
controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
- 查看 OpenStack 相关服务是否是 active 的状态,正常应该出现15个服务 active。
opst-proc-show.sh
- 正常应该返回以下类似结果,状态应该都是
active
。
UNIT LOAD ACTIVE SUB DESCRIPTION
chronyd.service loaded active running NTP client/server
etcd.service loaded active running Etcd Server
httpd.service loaded active running The Apache HTTP Server
mariadb.service loaded active running MariaDB 10.3 database server
memcached.service loaded active running memcached daemon
neutron-dhcp-agent.service loaded active running OpenStack Neutron DHCP Agent
neutron-linuxbridge-agent.service loaded active running OpenStack Neutron Linux Bridge Agent
neutron-metadata-agent.service loaded active running OpenStack Neutron Metadata Agent
neutron-server.service loaded active running OpenStack Neutron Server
openstack-glance-api.service loaded active running OpenStack Image Service (code-named Glance) API server
openstack-nova-api.service loaded active running OpenStack Nova API Server
openstack-nova-conductor.service loaded active running OpenStack Nova Conductor Server
openstack-nova-novncproxy.service loaded active running OpenStack Nova NoVNC Proxy Server
openstack-nova-scheduler.service loaded active running OpenStack Nova Scheduler Server
rabbitmq-server.service loaded active running RabbitMQ broker
- 验证配置文件里面 controller 出现的次数应为9次。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/nova/nova.conf|wc -l
验证结果:
10
grep -o controller+你学号后3位 /etc/neutron/neutron.conf|wc -l
验证结果:
6
- 查询 neutron service,表里应该只有一行记录。
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|neutron"
类似结果:
| ID | Name | Type |
| 9260c0c990eb4f8e866185965e8f7e76 | neutron | network |
- 查询 neutron endpoint,表里应该有3行记录。
source /etc/keystone/admin-openrc
openstack endpoint list |grep -E "ID|neutron"
类似结果:
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
| 18e6d76b374447f7884e59ba5526532b | RegionOne | neutron | network | True | internal | http://controller9999:9696 |
| 505902e0531842b3a73782a6c658ecca | RegionOne | neutron | network | True | admin | http://controller9999:9696 |
| 74cc7fa248614259b85e9f97590dd24b | RegionOne | neutron | network | True | public | http://controller9999:9696 |
- 查询 neutron user,表里应该有1行记录。
source /etc/keystone/admin-openrc
openstack user list |grep -E "ID|neutron"
类似结果:
| ID | Name |
| 5b135bb35c1c4720a75a504f0917e025 | neutron |
如果控制节点的 Nova 出现问题,可以点击下载此 /etc/nova/nova.conf 参考配置 进行对比。
如果控制节点的 Neutron 出现问题,可以点击以下配置进行参考。
- /etc/neutron/neutron.conf 参考配置
- /etc/neutron/metadata_agent.ini 参考配置
- /etc/neutron/dhcp_agent.ini 参考配置
- /etc/neutron/plugins/ml2/ml2_conf.ini 参考配置
- /etc/neutron/plugins/ml2/linuxbridge_agent.ini 参考配置
【常见问题FAQ】
【后台进程(服务)说明】
如果某个后台进程(服务)无法启动,需要查看日志,可以使用以下命令,日志文件路径在下表有描述。
tail -100 日志文件
服务名称 | 日志目录/路径 | 说明 |
---|---|---|
chronyd | /var/log/chrony | chrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器 |
rabbitmq-server | /var/log/rabbitmq | RabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。 |
mariadb | /var/log/mariadb | MariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL |
memcached | /var/log/messages | Memcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。 |
httpd | /var/log/httpd | Apache Web 服务器,对外提供 HTTP 等协议的 Web 访问服务 |
openstack-glance-api | /var/log/glance/api.log | 提供Glance API调用服务,对应配置文件/etc/glance/glance-api.conf,进程端口9292 |
openstack-nova-api | /var/log/nova/nova-api.log | 提供Nova API 调用服务,对应配置文件 /etc/nova/nova.conf |
openstack-nova-scheduler | /var/log/nova/nova-scheduler.log | Nova调度器,根据调度算法从可用资源池中恰当地选择计算节点,对应配置文件 /etc/nova/nova.conf |
openstack-nova-conductor.service | /var/log/nova/nova-conductor.log | Nova指挥器,负责数据库的访问,对应配置文件 /etc/nova/nova.conf |
openstack-nova-novncproxy.service | /var/log/nova/nova-novncproxy.log | Nova 提供 noVNC 远程连接协议的代理服务,对应配置文件 /etc/nova/nova.conf |
openstack-nova-compute.service | /var/log/nova/nova-compute.log | Nova计算节点进程,对应配置文件 /etc/nova/nova.conf |
neutron-dhcp-agent | /var/log/neutron/dhcp-agent.log | Neutron 给所有虚拟机实现DHCP自动分配IP进程 |
neutron-linuxbridge-agent | /var/log/neutron/linuxbridge-agent.log | 此服务代理使用 Linux 网桥在计算节点上给运行的虚拟机实例提供 L2 连接到公共网络 |
neutron-metadata-agent | /var/log/neutron/metadata-agent.log | 通过向HTTP 请求添加一些新的HEADER(实例 ID 和租户 ID)将请求转发到 nova 元数据 API 服务 |
neutron-server | /var/log/neutron/server.log | neutron-server 提供了一个 Neutron API 的web 服务器,将所有的 WebService 调用都交给 Neutron 插件进行处理 |
【思考和探索】
- 搜索并理解Linux 命令中>和»分别表示什么意思?