Part 6 - 安装 Neutron 网络服务

2021-03-04
9分钟阅读时长

【版本】

当前版本号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(网络层)

控制节点实验步骤

  1. 使用 root 用户登录控制节点(Controller)。输出 Hostname ,确认所在节点时控制节点。
hostname

结果:

controller+你的学号后3位
注意以下步骤在控制节点(Controller)上执行!
  1. 使用 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 用户

  1. 在 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

  1. 在 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 包和进行配置

  1. 安装 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 
  1. 备份neutron.conf配置文件。
cp /etc/neutron/neutron.conf{,.bak}
grep '^[a-Z\[]' /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
  1. 修改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
  1. 备份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
  1. 修改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
  1. 备份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
  1. 查看你的主机IP对应的网口编号。
  • VMWare Workstation 如果修改过为eth0,未修改过一般为ens33
  • Virtualbox 如果修改过为eth0,一般为enp0s3
ip a

  1. 修改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
  1. 备份dhcp_agent.ini配置文件
cp /etc/neutron/dhcp_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/dhcp_agent.ini.bak >/etc/neutron/dhcp_agent.ini
  1. 修改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
  1. 备份metadata_agent.ini配置文件
cp /etc/neutron/metadata_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/metadata_agent.ini.bak >/etc/neutron/metadata_agent.ini
  1. 修改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
  1. 再次修改/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
  1. 创建软连接,把 neutron 插件配置指向ml2_conf.ini。
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  1. 同步 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
  1. 启动相应服务。
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

计算节点步骤

  1. 使用Root用户登录计算节点(Coompute)。输出 Hostname ,确认所在节点是计算节点。
hostname

结果:

compute+你的学号后3位
注意以下步骤在计算节点(Computer)上执行!
  1. 安装相关网络工具和驱动。
yum install openstack-neutron-linuxbridge ebtables ipset -y
  1. 备份neutron.conf配置。
cp /etc/neutron/neutron.conf{,.bak}
grep '^[a-Z\[]' /etc/neutron/neutron.conf.bak >/etc/neutron/neutron.conf
  1. 修改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
  1. 查看你的主机 IP 对应的网口编号。如果修改过为eth0,未修改过一般为ens33
ip a

  1. 修改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
  1. 修改 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
  1. 启动服务
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service

控制节点验证步骤

注意以下步骤在控制节点(Controller)上执行!
  1. 查看以下服务是否是 active 的状态,正常应该出现16个服务 active。
systemctl -a |grep -E "UNIT|chronyd|memcached|rabbitmq|mariadb|glance|httpd|nova|neutron"
  1. 验证配置文件里面 controller 出现的次数应为9次。注意替换为你的个人学号。
grep -o controller+你学号后3位 /etc/nova/nova.conf|wc -l

验证结果:

9
grep -o controller+你学号后3位 /etc/neutron/neutron.conf|wc -l

验证结果:

6
  1. 查询 neutron service,表里应该只有一行记录。
source /etc/keystone/admin-openrc
openstack service list |grep -E "ID|neutron"

类似结果:

| ID                               | Name     | Type     |
| 9260c0c990eb4f8e866185965e8f7e76 | neutron  | network  |
  1. 查询 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                    |
  1. 查询 neutron user,表里应该有1行记录。
source /etc/keystone/admin-openrc
openstack user list |grep -E "ID|neutron"

类似结果:

| ID                               | Name    |
| 5b135bb35c1c4720a75a504f0917e025 | neutron |
  1. 执行以下命令,观察是否有表格输出
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)上执行!
  1. 查看以下服务是否是 active 的状态,正常应该出现4个服务 active。
systemctl -a |grep -E "UNIT|chronyd|nova|libvirtd|neutron"
  1. 验证配置文件里面 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/chronychrony是网络时间协议(NTP)的实现。它可以替代ntpd,实现服务器
rabbitmq-server/var/log/rabbitmqRabbitMQ 是高级消息队列协议(AMQP)开放标准的实现,常用于服务器之间的消息通讯,Openstack 使用 RabbitMQ 作为底层组件来实现不同模块之间的远程调用(RPC)。
mariadb/var/log/mariadbMariaDB 是非常流行的开源关系型数据库,它能够兼容MySQL
memcached/var/log/messagesMemcached 是一个基于内存的,开源的分布式对象缓存系统。 Openstack 会使用 Memcached 存储一些短期的对象,例如令牌等。
httpd/var/log/httpdApache 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.logNova控制台认证服务,对应配置文件 /etc/nova/nova.conf
openstack-nova-scheduler/var/log/nova-scheduler.logNova调度器,根据调度算法从可用资源池中恰当地选择计算节点,对应配置文件 /etc/nova/nova.conf
openstack-nova-conductor.service/var/log/nova-conductor.logNova指挥器,负责数据库的访问,对应配置文件 /etc/nova/nova.conf
openstack-nova-novncproxy.service/var/log/nova-novncproxy.logNova 提供 noVNC 远程连接协议的代理服务,对应配置文件 /etc/nova/nova.conf
openstack-nova-compute.service/var/log/nova-compute.logNova计算节点进程,对应配置文件 /etc/nova/nova.conf
neutron-dhcp-agent/var/log/neutron/dhcp-agent.logNeutron 给所有虚拟机实现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.logneutron-server 提供了一个Neutron API的web 服务器,将所有的 WebService 调用都交给 Neutron 插件进行处理

【思考和探索】

  1. 在本页步骤23命令中,有1个大于号,搜索并理解Linux 命令中>和»分别表示什么意思?