【版本】
当前版本号v20230313
版本 | 修改说明 |
---|---|
v20230313 | 增加后台进程(服务)说明 |
v20230310 | 修正一个命令错误 |
v20220309 | 增加提醒service和endpoint不能重复创建 |
v20220303 | 修复一个空行的问题 |
v20220301 | 学号后4位修改为学号后3位 |
v20220208 | 修正相关步骤 |
v20210324 | 增加了验证步骤 |
v20210308 | 补充计算节点遗漏的第4步配置 |
v20210305 | 第7步rabbitmq host配置修正 |
v20210303 | 初始化版本 |
【实验名称】
云计算部署实战 Part 6 - 安装 Neutron 网络服务
【实验目的】
- 掌握搭建 Openstack Neutron 组件
【实验环境】
- 内存:至少4G
- 硬盘:至少空余40G
- 操作系统: 64位 Windows系统。
【实验资源】
- FinalShell
- CentOS 7 系统镜像
- VirtualBox
- Openstack 源
【实验原理】
- 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 服务相应软件包
yum swap -- remove libxslt-1.1.28-6.el7.x86_64 -- install libxslt-1.1.28-5.el7
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables -y
- 备份
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 core_plugin ml2
openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins
openstack-config --set /etc/neutron/neutron.conf DEFAULT rpc_backend rabbit
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 database connection mysql+pymysql://neutron:NEUTRON_DBPASS@controller+你学号后3位/neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller+你学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller+你学号后3位:35357
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位:35357
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
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_host controller+你学号后3位
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
- 备份
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
- 备份
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对应的网口编号。
- VMWare Workstation 如果修改过为
eth0
,未修改过一般为ens33
。 - Virtualbox 如果修改过为
eth0
,一般为enp0s3
。
ip a
- 修改
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 securitygroup enable_security_group True
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan False
- 备份
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 neutron.agent.linux.interface.BridgeInterfaceDriver
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
配置文件
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_ip controller+你学号后3位
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET
- 再次修改/etc/nova/nova.conf。注意替换学号。
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位:35357
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 插件配置指向ml2_conf.ini。
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
- 同步 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.service
systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
systemctl start neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
计算节点步骤
- 使用Root用户登录计算节点(Coompute)。输出 Hostname ,确认所在节点是计算节点。
hostname
结果:
compute+你的学号后3位
注意以下步骤在计算节点(Computer)上执行!
- 安装相关网络工具和驱动。
yum install openstack-neutron-linuxbridge ebtables ipset -y
- 备份
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 rpc_backend rabbit
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_uri http://controller+你学号后3位:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller+你学号后3位:35357
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
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_host controller+你学号后3位
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_userid openstack
openstack-config --set /etc/neutron/neutron.conf oslo_messaging_rabbit rabbit_password RABBIT_PASS
- 查看你的主机 IP 对应的网口编号。如果修改过为
eth0
,未修改过一般为ens33
。
ip a
- 修改
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 securitygroup enable_security_group True
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan False
- 修改 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位:35357
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
- 启动服务
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
控制节点验证步骤
注意以下步骤在控制节点(Controller)上执行!
- 查看以下服务是否是 active 的状态,正常应该出现16个服务 active。
systemctl -a |grep -E "UNIT|chronyd|memcached|rabbitmq|mariadb|glance|httpd|nova|neutron"
- 验证配置文件里面 controller 出现的次数应为9次。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/nova/nova.conf|wc -l
验证结果:
9
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 |
- 执行以下命令,观察是否有表格输出
source /etc/keystone/admin-openrc
neutron ext-list
类似结果输出:
+---------------------------+-----------------------------------------------+
| alias | name |
+---------------------------+-----------------------------------------------+
| default-subnetpools | Default Subnetpools |
| network-ip-availability | Network IP Availability |
| network_availability_zone | Network Availability Zone |
| auto-allocated-topology | Auto Allocated Topology Services |
| ext-gw-mode | Neutron L3 Configurable external gateway mode |
| binding | Port Binding |
| agent | agent |
| subnet_allocation | Subnet Allocation |
| l3_agent_scheduler | L3 Agent Scheduler |
| tag | Tag support |
| external-net | Neutron external network |
| net-mtu | Network MTU |
| availability_zone | Availability Zone |
| quotas | Quota management support |
| l3-ha | HA Router extension |
| flavors | Neutron Service Flavors |
| provider | Provider Network |
| multi-provider | Multi Provider Network |
| address-scope | Address scope |
| extraroute | Neutron Extra Route |
| timestamp_core | Time Stamp Fields addition for core resources |
| router | Neutron L3 Router |
| extra_dhcp_opt | Neutron Extra DHCP opts |
| dns-integration | DNS Integration |
| security-group | security-group |
| dhcp_agent_scheduler | DHCP Agent Scheduler |
| router_availability_zone | Router Availability Zone |
| rbac-policies | RBAC Policies |
| standard-attr-description | standard-attr-description |
| port-security | Port Security |
| allowed-address-pairs | Allowed Address Pairs |
| dvr | Distributed Virtual Router |
+---------------------------+-----------------------------------------------+
计算节点验证步骤
注意以下步骤在计算节点(Computer)上执行!
- 查看以下服务是否是 active 的状态,正常应该出现4个服务 active。
systemctl -a |grep -E "UNIT|chronyd|nova|libvirtd|neutron"
- 验证配置文件里面 controller 出现的次数。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/nova/nova.conf|wc -l
验证结果:
7
grep -o controller+你学号后3位 /etc/neutron/neutron.conf|wc -l
验证结果:
4
【后台进程(服务)说明】
服务名称 | 日志目录/路径 | 说明 |
---|---|---|
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-glance-registry | /var/log/glance/registry.log | 提供镜像(images)注册等服务,对应配置文件 /etc/glance/glance-registry.conf,进程端口9191 |
openstack-nova-api | /var/log/nova-api.log | 提供Nova API 调用服务,对应配置文件 /etc/nova/nova.conf |
openstack-nova-consoleauth | /var/log/nova-consoleauth.log | Nova控制台认证服务,对应配置文件 /etc/nova/nova.conf |
openstack-nova-scheduler | /var/log/nova-scheduler.log | Nova调度器,根据调度算法从可用资源池中恰当地选择计算节点,对应配置文件 /etc/nova/nova.conf |
openstack-nova-conductor.service | /var/log/nova-conductor.log | Nova指挥器,负责数据库的访问,对应配置文件 /etc/nova/nova.conf |
openstack-nova-novncproxy.service | /var/log/nova-novncproxy.log | Nova 提供 noVNC 远程连接协议的代理服务,对应配置文件 /etc/nova/nova.conf |
openstack-nova-compute.service | /var/log/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 插件进行处理 |
【思考和探索】
- 在本页步骤23命令中,有1个大于号,搜索并理解Linux 命令中>和»分别表示什么意思?