说明:网络服务的组件特别多,导致网络服务的安装特别灵活,每一个都有一个单独的配置文件,网络有4-5个配置文件
(1)创库和授权
-- mysql -u root -pxxxxxx
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';
(2)创建服务证书
# (1)创建``neutron``用户
openstack user create --domain default --password NEUTRON_ PASS neutron
# (2)添加``admin`` 角色到``neutron`` 用户
openstack role add --project service --user neutron admin
# (3)创建``neutron``服务实体
openstack service create --name neutron \
--description "OpenStack Networking" network
# (4)创建网络服务API端点-->在keystone上创建服务和API
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
openstack‘底层‘也用到了iptables
(3)openstack网络的组件
neutron-server'969' 接收和响应外部'网络API请求'-->类似'nova-api'
neutron-linuxbridge-agent: '否则创建桥接网卡';虚机启动要连网,用bridge或nat模式,需要'有人帮助创建桥接网卡'
neutron-dhcp-agent: '默认-->为云主机分配ip';后续也可以固定
neutron-metadata-agent '配置nova-metadata-api'实现虚拟机的'定制操作'
定制操作:虽然是同一个模板克隆的虚机,'可以让其主机名,ip不同,免秘钥登陆'
################
L3-agent '实现三层网络(网络层-VXLAN)'
网络选项1:公共网络 '二层网络'
网络选项2:私有网络 '三层网络'
'开源社区'--->当做社区和新闻来学习
(4)公共网络,先使用两层网络
编辑 '/etc/neutron/neutron.conf' 文件并完成如下操作
###############(1) 在 [database] 部分,配置数据库访问:
[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
###############(2) 在[DEFAULT]部分,启用ML2插件并禁用其他插件
[DEFAULT]
...
core_plugin = ml2
service_plugins =
由于使用'公有网络'-->二层,所以要'开启这个核心插件';并且要对该插件配置文件进行配置
'service_plugins 服务插件置为空('禁用');只有三层网络的时候开启时,要扩展一些功能,才会开启'
###############(3) 在 "[DEFAULT]" 和 "[oslo_messaging_rabbit]"部分,配置 "RabbitMQ" 消息队列的连接
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = xxxxxxxx
###############(4)在 "[DEFAULT]" 和 "[keystone_authtoken]" 部分,配置认证服务访问
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
###############(5 )在"[DEFAULT]"和"[nova]"部分,配置网络服务来通知计算节点的网络拓扑变化:
[DEFAULT]
...
notify_nova_on_port_status_changes = True
'当nova的网络端口改变,通知neutrn'
场景:'如果把云主机关了,则应该告诉neutrn,把网络端口关了'
notify_nova_on_port_data_changes = True
'当我有数据转发时,通知neutrn帮我转发下数据'
[nova]
...
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
配置原因:'nova和neutrn相互调用';场景:'如果要删除虚拟机的网络,会查询nova是否在使用,如果使用则无法删除'
'netrun和nova相互配置'
(5)配置 Modular Layer 2 (ML2) 插件
'ML2插件'使用Linuxbridge机制来'为实例创建layer-2'虚拟网络基础设施
编辑 "/etc/neutron/plugins/ml2/ml2_conf.ini" 文件并完成以下操作
##########(1) 在``[ml2]``部分,启用flat和VLAN网络:
[ml2]
...
type_drivers = flat,vlan
'flat-->虚拟机和宿主机处于同一个平面,就是桥接网速';'别名'
##########(2) 在"[ml2]"部分,禁用私有网络'因为只有三层网络才有租户的概念'
[ml2]
...
tenant_network_types =
##########(3) 在"[ml2]"部分,启用Linuxbridge机制'虚拟机网络的底层机制'
[ml2]
...
mechanism_drivers = linuxbridge
底层的'虚拟网络'的'实现机制'
其他方式:'open vswitch';'centos原生就支持linuxbridge,但是功能没有switch丰富'
##########(4) 在"[ml2]" 部分,启用端口安全扩展驱动-->'类似安全组'
[ml2]
...
extension_drivers = port_security
##########(5) 在"[ml2_type_flat]"部分,配置公共虚拟网络为flat网络
[ml2_type_flat]
...
flat_networks = provider
'仅仅是起一个网络的名字'
'注意':这里如果修改后面也需要修改!
##########(6) 在 "[securitygroup]"部分,启用 ipset 增加安全组规则的高效性
[securitygroup]
...
enable_ipset = True
(6)配置Linuxbridge代理
说明: 'Linuxbridge是真正创建桥接网卡的'
################
编辑 "/etc/neutron/plugins/ml2/linuxbridge_agent.ini"文件并且完成以下操作
在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
'网络的名字-->provider;PROVIDER_INTERFACE_NAME是实际的网卡名字-->这里是eth0'
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
'创建桥接网卡的时候,基于哪个物理网卡创建桥接网卡'
################
在"[vxlan]"部分,禁止VXLAN覆盖网络:'二层网络禁止'
[vxlan]
enable_vxlan = False
################
在 "[securitygroup]"部分,启用安全组并配置 Linuxbridge iptables firewall driver
[securitygroup]
...
enable_security_group = True
'python包的关于防火墙的方法'
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
(7) 配置DHCP代理
编辑 '/etc/neutron/dhcp_agent.ini'文件并完成下面的操作
在'[DEFAULT]'部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
'根据dhcp分配ip'
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
说明:到这里为止共有网络已经配置ok了!
(8)通用配置:配置元数据代理
编辑 "/etc/neutron/metadata_agent.ini" 文件并完成以下操作:
在"[DEFAULT]" 部分,配置元数据主机以及共享密码:
[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
为控制节点配置网络服务
中文翻译文档有坑:'也是在controller节点上执行的'
编辑``/etc/nova/nova.conf``文件并完成以下操作:
在"[neutron]"部分,配置访问参数,启用元数据代理并设置密码:
[neutron]
...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
'密码与上面的一致';掌握规律,无非步骤繁琐点,全大写表示是一个数值
服务开机启动后的校验方法
neutron agent-list
'启动比较慢';'自动化脚本设置-->40s';正常:'三个微笑';'M版本neutron没有纳入openst管理'
[root@controller ~]# neutron agent-list
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| 19fbb42a-3fca-4124-9f01-391ff0aa8645 | DHCP agent | controller | nova | :-) | True | neutron-dhcp-agent |
| 35965192-d5b6-4c8c-a56a-c1d5d45fcf52 | Metadata agent | controller | | :-) | True | neutron-metadata-agent |
| e9d7d6a9-a89b-4939-854e-2901808714ea | Linux bridge agent | controller | | :-) | True | neutron-linuxbridge-agent |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+