第十部分 安装网络服务 neutron
一、准备工作
安装网络服务 neutron 之前,要先做好以下准备工作
1、备份目前的 vmware-workstation 虚拟机
关闭 2 台虚拟机,在 windows 资源管理器中找到安装 vmware-workstation 虚拟机的文件夹,备份一下这个文件夹。
2、备份好之后开启 2 台虚拟机,将虚拟机的网卡 ens34 调整成混杂模式,控制节点和计算节点均执行
在控制节点完成以下操作:
yum install net-tools -y
ifconfig ens34 promisc
ip addr
控制节点 ens34 网卡信息中有 PROMISC 字样表示已经启用混杂模式。
在计算节点完成以下操作:
yum install net-tools -y
ifconfig ens34 promisc
ip addr
计算节点 ens34 网卡信息中有 PROMISC 字样表示已经启用混杂模式。
将上述命令写入到 / etc/profile 使下次重启后也生效:
vim /etc/profile
ifconfig ens34 promisc
3、重启网络,确认主机间的网络通讯
计算节点和控制节点相互能ping通。
systemctl restart network
ping compute
ping controller
4、在控制节点确认到目前为止所安装的服务都正常运行
. /openrc/admin_openrc
检查 keystone
openstack token issue
检查 glance
openstack image list
检查 placement
placement-status upgrade check
检查 nova
openstack compute service list
nova-status upgrade check
二、在控制节点安装网络服务 neutron
结合上一节所讲的物理部署,控制节点主要安装 neutron 的下面组件
由于下面使用的是二层网络架构,所以不按照 l3 三层网络的相关组件。
下面在控制节点(controller)进行操作安装 Neurton 网络服务
创建 Neutron 数据库
mysql -u root -p
MariaDB [(none)] > CREATE DATABASE neutron;
数据库授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron. TO ‘neutron’@’localhost’ IDENTIFIED BY ‘000000’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron. TO ‘neutron’@’%’ IDENTIFIED BY ‘000000’;
注意:NEUTRON_DBPASS替换为000000
创建 neutron 用户
. /openrc/admin_openrc
openstack user create —domain default —password 000000 neutron
注意NEUTRON_PASS替换为000000
向 neutron 用户添加 admin 角色
openstack role add —project service —user neutron admin
创建 neutron 服务实体
openstack service create —name neutron —description “OpenStack Networking” network
创建 neutron 服务端点
openstack endpoint create —region RegionOne network public http://controller:9696
openstack endpoint create —region RegionOne network internal http://controller:9696
openstack endpoint create —region RegionOne network admin http://controller:9696
配置二层网络(官方文档为提供商网络)
1、安装软件包
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
注释:openstack-neutron:neutron-server 的包
openstack-neutron-ml2:ML2 plugin 的包
openstack-neutron-linuxbridge:linux bridge network provider 相关的包
ebtables:防火墙相关的包
2、修改 neutron 配置文件(共有 5 个配置文件需要修改)
(1)neutron server 的配置文件 neutron.conf
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^$|#’ /etc/neutron/neutron.conf.bak>/etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[database](加 1 行)
connection = mysql+pymysql://neutron:000000@controller/neutron
[DEFAULT](加 6 行)
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:000000@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[keystone_authtoken](加 9 行)
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 000000
[nova]
#([nova]自己加,加 8 行)
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 000000
[oslo_concurrency](加 1 行)
lock_path = /var/lib/neutron/tmp
(2)ML2 plugin 的配置文件 ml2_conf.ini
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/ml2_conf.ini.bak>/etc/neutron/plugins/ml2/ml2_conf.ini
vim /etc/neutron/plugins/ml2/ml2_conf.ini
以下内容自己加。
[ml2]
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = true
(3)linux bridge network provider 的配置文件 linuxbridge_agent.ini
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak>/etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
以下内容自己加。
[linux_bridge]
physical_interface_mappings = provider:ens34
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
注:ens34指的是第二块网卡的名称。
注意上面的 provder:ens34 的写法(官方文档的坑点之一,其正确的写法是控制节点及计算节点连接外部网络的网卡 ens34)
从这段可以看出,INTERFACE_NAME 指的是 eth1,就是连接外部网络的那块网卡(provider interface)。
(4) 系统配置文件 sysctl.conf(官方文档的坑点之一,它这里只是说明要检查而没有写如何配置)
vim /etc/sysctl.conf
加入下面 2 行:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
modprobe br_netfilter
sysctl -p
(5)dhcp agent 配置文件 dhcp_agent.ini
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/dhcp_agent.ini.bak> /etc/neutron/dhcp_agent.ini
vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元数据代理,以便和 nova 通讯(可以参考上节所讲的 neutron 和 nova 的交互部分)
vim /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET
修改 nova 的配置文件,也是为了和 neutron 进行交互
vim /etc/nova/nova.conf
在原来的基础上,再在[neutron]部分加入:
[neutron](共 10 行)
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 000000
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET
建立 ml2 的软连接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
填充 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
解决办法:
[root@controller ~]# mysql -u root -p
MariaDB [(none)]> use neutron;
MariaDB [neutron]> SET foreign_key_checks = 0 ;
MariaDB [neutron]> ALTER TABLE subnets MODIFY network_id VARCHAR(36) NOT NULL;
MariaDB [neutron]> SET foreign_key_checks = 1 ;
MariaDB [neutron]> exit
重新启动 nova-api 服务
systemctl restart openstack-nova-api.service
启动 neutron 服务和配置开机启动
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
启动好之后,可以使用 systemctl status 命令查看各个服务运行的状态,使用 netstat -tnlup 查看是否有 9696 端口。
至此,控制节点上的 neutron 服务组件安装完毕,下面切换到另外一台虚拟机,在计算节点上安装 neutron 服务。
三、在计算节点安装网络服务 neutron
结合上一节所讲的物理部署,计算节点主要安装 neutron 的下面组件
在计算节点(compute)上进行如下操作安装网络服务 neutron(计算节点)
安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y
修改配置文件
(1)修改 neutron 主配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
grep -Ev ‘^$|#’ /etc/neutron/neutron.conf.bak>/etc/neutron/neutron.conf
vim /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:000000@controller
auth_strategy = keystone
[keystone_authtoken](共 9 行)
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 000000
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
(2)配置 Linux 网桥代理
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak
grep -Ev ‘^$|#’ /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak>/etc/neutron/plugins/ml2/linuxbridge_agent.ini
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
以下内容自行添加
[linux_bridge]
physical_interface_mappings = provider:ens34
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
(3)sysctl.conf
vim /etc/sysctl.conf
加入下面 2 行:
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
modprobe br_netfilter
sysctl -p
修改 nova 配置文件
vim /etc/nova/nova.conf
[neutron]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 000000
重启 nova 计算服务
systemctl restart openstack-nova-compute.service
systemctl status openstack-nova-compute.service
启动 neutron 服务和设置开机自启动
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service
至此,计算节点上面的 neutron 服务安装完毕,
下面切换到控制节点,验证整个 neutron 的安装。
四、验证整个 neutron 服务
在控制节点(controller)执行以下命令验证 neutron 服务
. /openrc/admin_openrc
openstack extension list —network
openstack network agent list
一定要确保列表中有 4 条记录,并且 Alive 状态为笑脸:-),State 为 UP。
可以对照官方文档来查看