在控制节点和计算节点安装
计算节点控制节点同时操作
将网卡设置为混杂模式
将外网网卡“ens34”设置成混杂模式
设置开机后混杂模式自动生效
ifconfig ens34 promisc
vi /etc/profile
按g 来到文件末尾 追加
ifconfig ens34 promisc
加载桥接模式防火墙模块
vi /etc/sysctl.conf
文件末尾追加
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
加载“br_netfilter”模块
检查模块加载情况
modprobe br_netfilter
sysctl -p
会输出刚刚在sysctl.conf文件里追加的那两行,表明“br_netfilter”模块已经加载成功
控制节点
安装Neutron软件包
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge
“openstack-neutron”:“neutron-server”模块的包
“openstack-neutron-ml2”:ML2插件的包
“openstack-neutron-linuxbridge”:网桥和网络提供者相关的软件包
创建Neutron的数据库并授权
进入MariaDB数据库
mysql -uroot -p000000
新建“neutron”数据库
给用户授权使用新建数据库
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '000000';
quit退出
修改Neutron配置文件
备份配置文件
去掉所有注释和空行,生成新的配置文件
cp /etc/neutron/neutron.conf /etc/neutron/neutron.bak
grep -Ev '^$|#' /etc/neutron/neutron.bak>/etc/neutron/neutron.conf
vi /etc/neutron/neutron.conf
修改[database]部分,实现与数据库连接
[database]
connection = mysql+pymysql://neutron:000000@controller/neutron
修改“[DEFAULT]”与“[keystone_authtoken]”部分,实现与Keystone交互。
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = neutron
password = 000000
修改“[DEFAULT]”部分,实现与消息队列交互及核心插件等。
[DEFAULT]
core_plugin = ml2
service_plugins = transport_url = rabbit://rabbitmq:000000@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
修改“[oslo_concurrency]”,配置锁路径。
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
增加“[nova]”部分,实现与Nova交互。 [nova] auth_url = http://controller:5000 auth_type = password project_domain_name = default user_domain_name = default project_name = project username = nova password = 000000 region_name = RegionOne server_proxyclient_address = 192.168.10.10
配置文件奉上
[DEFAULT]
auth_strategy = keystone
core_plugin = ml2
service_plugins =
transport_url = rabbit://rabbitmq:000000@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[cors]
[database]
connection = mysql+pymysql://neutron:000000@controller/neutron
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = neutron
password = 000000
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[privsep]
[ssl]
[nova]
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = project
username = nova
password = 000000
region_name = RegionOne
server_proxyclient_address = 192.168.10.10
修改ML2插件配置文件
备份配置文件
去掉所有注释和空行,生成新的配置文件
cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.bak
grep -Ev '^$|#' /etc/neutron/plugins/ml2/ml2_conf.bak>/etc/neutron/plugins/ml2/ml2_conf.ini
vi /etc/neutron/plugins/ml2/ml2_conf.ini
文件奉上
[DEFAULT]
[ml2]
type_drivers = flat
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[securitygroup]
enable_ipset = true
启用ML2插件
只有在“/etc/neutron/”下的插件才能生效,因此将“ml2_conf.ini”映射为“/etc/neutron/”下的“plugin.ini”文件,使ML2插件启用
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
修改网桥代理配置文件
备份配置文件
去掉所有注释和空行,生成新的配置文件
cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.bak
grep -Ev '^$|#' /etc/neutron/plugins/ml2/linuxbridge_agent.bak>/etc/neutron/plugins/ml2/linuxbridge_agent.ini
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件奉上
第三行 provider: 后接外网的网卡
[DEFAULT]
[linux_bridge]
physical_interface_mappings = provider:ens34
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
修改DHCP代理配置文件
将配置文件去掉注释和空行
cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.bak
grep -Ev '^$|#' /etc/neutron/dhcp_agent.bak> /etc/neutron/dhcp_agent.ini
vi /etc/neutron/dhcp_agent.ini
文件内容附上
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
修改元数据代理配置文件
vi /etc/neutron/metadata_agent.ini
在第一行的 [DEFAULT] 下写入
[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = METADATA_SECRET
云主机运行在计算节点上,在其运行过程中需要和控制节点的“nova-api”模块交互,让Nova为云主机提供元数据。这个交互需要通过Neutron的“neutron-metadata-agent”进行。“neutron-metadata-agent”和“nova-api”一样运行在控制节点上,云主机先将元数据请求发送给“neutron-metadata-agent”,“neutron-metadata-agent”再将请求转发给“nova-api”
修改Nova配置文件
Nova处于整个云计算平台系统的核心位置,需要和各个组件交互,因此Nova配置文件中需要指明如何与Neutron进行交互
vi /etc/nova/nova.conf
在49行的[neutron]模块下写入
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = project
username = neutron
password = 000000
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET
同步数据库
su neutron -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade heads"
创建Neutron用户并分配角色
导入环境变量模拟登录
在OpenStack云计算平台中创建用户“neutron”
给用户“neutron”分配“admin”角色
. admin-login
openstack user create --domain default --password 000000 neutron
openstack role add --project project --user neutron admin
创建Neutron服务及端点
创建名“neutron”、类型“network”的服务
创建公众用户访问的服务端点
创建内部组件访问的服务端点
创建Admin用户访问端点
openstack service create --name neutron network
openstack endpoint create --region RegionOne neutron public http://controller:9696
openstack endpoint create --region RegionOne neutron internal http://controller:9696
openstack endpoint create --region RegionOne neutron admin http://controller:9696
启动Neutron服务
由于修改了Nova的配置文件,因此启动Neutron服务前,还需要重启Nova服务
重启Nova服务
启动Neutron服务:启用Neutron服务组件、网桥代理、DHCP代理、元数据代理
systemctl restart openstack-nova-api
systemctl start neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
systemctl enable neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent
检测控制节点的Neutron服务
由于Neutron服务会占用9696端口,通过查看这个端口是否启用,可以判断Neutron服务是否已经运行
检测服务端点
netstat -tnlup|grep 9696
curl http://controller:9696
计算节点
安装Neutron软件包
计算节点安装“openstack-neutron-linuxbridge”软件包,它包括网桥和网络提供者的相关软件
yum -y install openstack-neutron-linuxbridge
修改Neutron配置文件
将配置文件去掉注释和空行
cp /etc/neutron/neutron.conf /etc/neutron/neutron.bak
grep -Ev '^$|#' /etc/neutron/neutron.bak>/etc/neutron/neutron.conf
vi /etc/neutron/neutron.conf
修改“[keystone_authtoken]”部分,实现与Keystone交互。
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = project
username = neutron
password = 000000
修改[DEFAULT]和[oslo_concurrency]配置消息队列和锁路径。
[DEFAULT]
transport_url = rabbit://rabbitmq:000000@controller:5672
auth_strategy = keystone
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
文件内容奉上
[DEFAULT]
transport_url = rabbit://rabbitmq:000000@controller:5672
auth_strategy = keystone
[cors]
[database]
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = project
username = neutron
password = 000000
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_middleware]
[oslo_policy]
[privsep]
[ssl]
修改网桥代理配置文件
vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
直接在 [DEFAULT] 下写入,其中 provider:ens34 对应你的外网网卡
[DEFAULT]
[linux_bridge]
physical_interface_mappings = provider:ens34
[vxlan]
enable_vxlan = false
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
修改Nova配置文件
vi /etc/nova/nova.conf
在[DEFAULT]模块下追加
vif_plugging_is_fatal = false
vif_plugging_timeout = 0
在第50行处 [neutron] 模块下写入
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = project
username = neutron
password = 000000
启动计算节点Neutron服务
重启计算节点的Nova服务
启动计算节点的Neutron网桥代理服务
systemctl restart openstack-nova-compute
systemctl start neutron-linuxbridge-agent
systemctl enable neutron-linuxbridge-agent
验证Neutron服务
回到控制节点
导入环境变量模拟登录
查看网络代理服务列表
. admin-login
openstack network agent list
在结果中,如果能看到以上4行数据,“Alive”列均为笑脸符号“:-)”,“State”列均为开启状态“UP”,那么说明Neutron的代理运行状况正常