第五步(2):安装openstack-neutron服务-控制节点

简介

网络:在现实的网络环境中我们使用交换机将多个计算机连接起来从而形成了网络,而在 neutron 的环境里,网络的功能也是将多个不同的云主机连接起来。将虚拟机进行逻辑上的连接,从而让虚拟机之间可以进行通讯;

子网:是现实的网络环境下可以将一个网络划分成多个逻辑上的子网络,从而实现网络隔离(相当于vlan,一个vlan就是一个网段), 在 neutron 里面子网也是属于网络,neutron中也有一个个的子网;

端口:计算机连接交换机通过网线连接,而网线插在交换机的不同端口,在 neutron 里面端口属于子网,即每个云主机的子网都会对应到一个端口;虚拟机想要和openstack上的虚拟机互联,需要连接到openstack中的某些虚拟交换机上,通过虚拟交换机转发,把虚拟机的流量转发到宿主机网卡,通过宿主机出去;

路由器:用于连接不通的网络或者子网。如果想要把子网打通,需要通过路由器做 3 层路由交换;
(06)
openstack的neutron网络服务通过多个插件实现:
ML2插件是实现虚拟机桥网络(基于mac地址通讯),包含linux bridge、openvswitch插件;
DHCP-Agent,自动分配虚拟机地址;
L3-Agent,3层代理,用于自服务网络;
LBAAS-Agent,实现负载均衡等服务;
其他Agent;

neutron 网络类型有两种,一种是桥接,另一种是自服务网络;

网络类型:
自服务(nat):可以自己创建网络,最终会通过虚拟路由器连接外网。openstack自己创建一个 3 层网络;由openstack创建一个独立于宿主机的网段,在openstack内部靠虚拟交换机通讯,如果想连接外网,需要创建虚拟路由器,把虚拟机做源地址转换,转换成宿主机地址

桥接(提供者网络):虚拟机桥接到物理机,并且虚拟机必须和物理机在同一个网络范围内。是基于 mac 地址通讯;openstack会在每个宿主机上自动创建一个虚拟网桥设备,虚拟机连接虚拟网桥,虚拟网桥会默认桥接宿主机的eth0网卡;如果有多个网络(内网、外网等),则会有多个网桥设备

neutron API的监听端口为9696

mysql配置

1、CREATE DATABASE neutron;    #存放给虚拟机分配的 IP 地址

2、GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron123';

部署controller-neutron

https://docs.openstack.org/neutron/train/install/controller-install-rdo.html #部署参考文档

https://docs.openstack.org/neutron/train/install/controller-install-option1-rdo.html #部署提供者网络

1、. admin-openrc.sh

2、openstack user create --domain default --password-prompt neutron
#创建neutron用户,用于在keystone做认证

3、openstack role add --project service --user neutron admin
#neutron用户对service项目拥有管理员权限

4、 openstack service create --name neutron --description "OpenStack Networking" network
#创建network服务,服务类型为network

5、openstack endpoint create --region RegionOne network public http://openstack-vip.linux.local:9696
openstack endpoint create --region RegionOne network internal http://openstack-vip.linux.local:9696
openstack endpoint create --region RegionOne network admin http://openstack-vip.linux.local:9696
#注册API到neutron服务,给neutron服务关联端口,即添加endpoint

###  部署提供者网络(桥接)  ###
6、yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
#ebtables包是用来管理iptables规则的

7、vim /etc/neutron/neutron.conf   #更改主配置文件
[database]    #配置数据库连接
connection = mysql+pymysql://neutron:neutron123@openstack-vip.linux.local/neutron

[DEFAULT]
core_plugin = ml2                          #启用二层网络插件
service_plugins =                          #禁用三层网络插件
transport_url = rabbit://openstack:openstack123@openstack-vip.linux.local #配置rabbitmq连接
auth_strategy = keystone                   #通过keystone做认证
notify_nova_on_port_status_changes = true  #当网络接口发生变化时,通知给计算节点
notify_nova_on_port_data_changes = true    #当端口数据发生变化,通知计算节点

[keystone_authtoken]      #配置keystone认证信息
www_authenticate_uri = http://openstack-vip.linux.local:5000
auth_url = http://openstack-vip.linux.local:5000
memcached_servers = openstack-vip.linux.local:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[nova]        #neutron需要给nova返回数据
auth_url = http://openstack-vip.linux.local:5000  #到keystone认证nova
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova   #通过nova的用户名和密码到keystone验证nova的token
password = nova

[oslo_concurrency]   #配置锁路径
lock_path = /var/lib/neutron/tmp

8、安装完的 ml2_conf.ini 文件中的配置并不全,所以可以从官方拷贝配置更全的 ml2_conf.ini 文件
#参考网址:https://docs.openstack.org/newton/config-reference/networking/samples/ml2_conf.ini.html
#将复制的文件内容覆盖原文件

9、vim /etc/neutron/plugins/ml2/ml2_conf.ini   #配置二层插件
[ml2]
type_drivers = flat,vlan   
#配置驱动类型;单一扁平网络(桥接)和vlan;让二层网络支持桥接,支持基于vlan做子网划分

tenant_network_types =             #租户网络类型;禁止用户创建自己的网络(基于vxlan),自服务网络才会开启
mechanism_drivers = linuxbridge    #启用linux桥接;二层网络中使用的是桥接
extension_drivers = port_security  #启用端口安全扩展驱动程序,基于iptables实现访问控制;但配置了扩展安全组会导致一些端口限制,造成一些服务无法启动

[ml2_type_flat]
flat_networks = external  #设置桥接网络名称;通常用内网或外网命名,external表示用于访问外网

[securitygroup]
enable_ipset = true   
#启用ipset以提高安全组规则的效率;ipset是iptables的集合,可以实现iptables更高的访问效率;这个安全组类似于阿里云的安全策略,在安全组中设置访问策略,哪个端口允许,哪个端口禁止

10、安装完neutron服务后,linuxbridge_agent.ini 此文件内容是不全的,到官网拷贝完整的配置文件:
https://docs.openstack.org/newton/config-reference/networking/samples/linuxbridge_agent.ini

11、vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini  #定义桥接网络与指定的物理网络做关联
[linux_bridge]
physical_interface_mappings = external:eth0
#指定上个文件中的桥接网络名称,与eth0物理网卡做关联,后期给虚拟机分配external网络,就可以通过eth0上外网;物理网卡有可能是bind0、br0等

[vxlan]
enable_vxlan = false  #不需要用户创建自定义网络(3层网络),所以关闭vxlan

[securitygroup]
enable_security_group = true  #开启安全组
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
#指定安全组驱动程序,调用这个python文件管理安全组(iptables规则);此python文件在 /usr/lib/python2.7/site-packages/ 目录下

12、vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1     #让操作系统内核支持网桥过滤器;允许虚拟机(容器)的网络经过物理机,如果不设定此参数,则虚拟机(容器)的数据无法通过宿主机网络出去
net.bridge.bridge-nf-call-ip6tables = 1

13、modprobe br_netfilter   
#加载此模块,如果不加载此模块就执行 sysctl -p 会报错,因为 neutron 服务未启动,很多模块还未加载;服务启动后会自动加载此模块

14、sysctl -p   #此命令可以等 neutron 服务启动后再执行

15、vim /etc/neutron/dhcp_agent.ini   #配置DHCP,让虚拟机通过DHCP获取IP地址
[DEFAULT]
interface_driver = linuxbridge                  #指定接口驱动为 linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq  #指定 DHCP 驱动
enable_isolated_metadata = true                 #开启 iso 元数据

16、vim /etc/neutron/metadata_agent.ini   #配置桥接与自服务网络的通用配置
[DEFAULT]
nova_metadata_host = openstack-vip.linux.local  #指定controller地址,并且 9696 端口必须打开才可
metadata_proxy_shared_secret = linux20200412
#配置共享秘钥,共享秘钥会给 nova 使用,nova 需要访问网络数据,如虚拟机的 IP 地址等,nova 访问 neutron 时,需要使用到 neutron 用户名、密码以及此共享秘钥,才可以拿到 neutron 的所有元数据;共享秘钥中不能有特殊字符

17、vim /etc/nova/nova.conf     #配置 nova 配置文件
[neutron]           #nova会携带用户的token到neutron中申请IP地址
auth_url = http://openstack-vip.linux.local:5000  #nova会通过neutron的用户名密码以及秘钥到keyston认证,找到neutron
auth_type = password                               
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
metadata_proxy_shared_secret = linux20200412  #指定neutron配置文件中设置的共享秘钥

18、ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
#网络服务初始化脚本需要/etc/neutron/plugin.ini指向ML2插件配置文件的符号链接

19、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
#初始化neutron数据库  

20、systemctl restart openstack-nova-api.service

21、systemctl restart neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
  
22、systemctl enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
  
23、tail -f /var/log/neutron/*.log    #neutron日志中不能出现任何报错,否则服务无法启动

24、vim neutron-restart.sh      #编写重启neutron的脚本
#!/bin/bash
systemctl restart neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service

haproxy配置

1、vim /etc/haproxy/haproxy.cfg
listen openstack-neutron-9696
 mode tcp
 bind 172.31.7.248:9696
 server 172.31.7.101 172.31.7.101:9696 check inter 3s fall 3 rise 5

2、systemctl restart haproxy.service
posted on 2020-07-14 16:41  An.amazing.rookie  阅读(310)  评论(0编辑  收藏  举报