OpenStack 学习之七——控制节点安装网络服务neutron

220 阅读2分钟

创建数据库和oepnstack用户等

创建数据库

MariaDB [(none)] CREATE DATABASE neutron;

创建数据库用户

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';

获取openstack操作权限

. admin-openrc

openstack创建neutron用户

openstack user create --domain default --password-prompt neutron

设置admin角色

openstack role add --project service --user neutron admin

创建oepnstack服务入口

openstack service create --name neutron --description "OpenStack Networking" network

创建端点(endpoint)

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

安装和配置neutron

openstack提供两种网络模式,一种是provider(运营商网络),一种是self-service(租户网络)。简单来说,运营商网络就是云内依赖外部路由,三层是由外部网络设备提供的。租户网络就是通过虚拟路由等来提供三层网络能力。这里使用provider来搭建测试环境

安装组件

yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

配置neutron组件,编辑/etc/neutron/neutron.conf,内容如下

[database]
connection = mysql+pymysql://neutron:123456@controller/neutron

[DEFAULT]
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:123456@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[keystone_authtoken]
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 = 123456

[nova]
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 = 123456

[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

配置二层网络插件,编辑/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

配置linux网桥,文件地址:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
physical_interface_mappings = provider:eth1

[vxlan]
enable_vxlan = false

[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置bridge-nf-call-ip6tables,编辑/etc/sysctl.conf

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

然后执行下面命令,让其生效

sysctl -p

如果出现如下错误

image.png

加载内核模块,即可解决

modprobe br_netfilter

配置dhcp服务,编辑/etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

至此,网络配置完成

配置metadata agent

打开/etc/neutron/metadata_agent.ini,写入以下配置

[DEFAULT]
nova_metadata_host = controller
metadata_proxy_shared_secret = 123456

配置nova使用网络服务

打开/etc/nova/nova.conf配置文件,写入以下内容

[neutron]
url = http://controller:9696
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 = 123456
service_metadata_proxy = true
metadata_proxy_shared_secret = 123456

完成安装

同步配置文件

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

同步数据库

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

重启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