neutron:网络服务
二层交换、三层路由、防火墙、VPN、负载均衡
) 1.一台宿主机/操作系统中,模拟多个相同或不同的操作系统
2.虚拟化可以以软件的形式模拟硬件的功能
openstack网络服务最核心的是对二层物理网络进行抽象和管理
多个物理服务器可被虚拟机取代,部署在同一台物理服务器
虚拟机由虚拟机管理器(Hypervisor)实现,通常采用kvm,对服务器进行虚拟化的同时,网络也进行虚拟化
虚拟机管理器(Hypervisor)为虚拟机创建一个或多个虚拟网卡
虚拟网卡等同于虚拟机的物理网卡
物理交换机在虚拟网络中被虚拟为虚拟交换机
与物理网卡相连(与交换机功能类似)
一个网桥可桥接若干虚拟机,每个虚拟机发出广播会引发广播风暴,影响虚拟机网络性能
将多个虚拟机划分到不同的vlan中,同一vlan的虚拟机相当于连接同一网桥上
虚拟环境中,将vlan与网桥对应起来
将网桥划分到不同的vlan
vlan作用:
1.划分广播域
2.安全(隔离,避免信息通过广播域的方式暴漏、泄露
)
3.集中化管理
4.节省IP地址
基于什么方式进行划分:
vlan标签的方式打标签的vlan技术
OVS定义: 分布式虚拟交换机
OVS特性:
1.跨平台移植
2.具有产品级质量
3.可以轻松实现物理交换机的各项功能
4.跨服务器,进行管理(基于分布式特性)可形成大规模虚拟网络,便于统计/集中化管理
1.兼容性
2.跨平台
与硬件交换机具有相同特性
可在不同虚拟平台之间移植
具有产品级质量的虚拟交换机
适合在生产环境中部署
交换设备在虚拟化对虚拟网络至关重要(二层交换的作用)
1.管理员可对物理交换机进行配置
2.控制服务器的网络接入
3.实现网络隔离,流量监控,QOS配置,流量优化
QOS:网络利用基础技术,安全机制,解决网络延迟和阻塞的一种技术
OVS优势:采用openvswitch(OVS)技术的虚拟机 可使用虚拟网络的管理、网络状态和流量的监控得以轻松实现
openswitch在云环境终端阿虚拟化平台上实现分布式虚拟交换机,可将不同主机上openswitch交换连接起来,形成一个大规模的虚拟网络
简化neutron网络结构包括:一个外部网络、一个内部网络和一个路由器
网路:隔离的二层广播域,类似交换机中的vlan(netron支持多种类型网络flat、vlan、vxlan)
子网:一个IPV4或者IPV6地址段及相关配置状态,虚拟机实例的IP地址从子网中分配(DHCP地址池,netron的dhcp代理来实现的ip分配)
端口:连接设备的连接点,类似虚拟交换机上的网络端口,路由器、交换机、mac地址表 路由表接口:IP MAC 接口名称
通常可创建和配置网络、子网和端口来搭建虚拟网络,网络必须属于项目,一个项目可创建多个网络,一个子网可有多个端口
flat 生产环境不用,测试使用
local 同一局域网方式(一种简单的扁平网络拓扑)不适用vlan,没有多数据打vlan标签,无法进行网络隔离
vlan 主要由二层交换机来实现,支持802.1q协议的虚拟局域网,使用vlan标签数据包,实现网络隔离,同一vlan中
vxlan
GRE
neutron-server
控制节点和计算节点结合
控制节点和计算节点都需要部署core plugin代理,因为控制节点与计算节点通过该代理,来能建立二层连接
控制节点和网络节点的结合
通过增加节点承担更大的负载,将所有的代理主键从上述控制节点分离出来,部署到独立的网络节点上
解决:允许在openstack网络中同时使用二层网络技术,不同的节点
类型驱动:负责维护网络类型的状态,验证验证,创建网络等工作
机制驱动:二层网络技术的控制
tap接口 | 用于网桥连接的虚拟网卡 |
---|---|
linux网桥 | 作为二层交换机 |
vlan接口 | 在vlan网络中用于连接网桥 |
vxlan接口 | 在vxlan网络中用于连接网桥 |
物理网络接口 | 用于连接到物理网络2、 |
与linux Bridge相比,ovs具有集中管理控制功能,而且性能优化,支持更多的功能
设备类型:
tap设备 | 用于网桥连接虚拟机网卡 |
---|---|
linux网桥 | 桥接网络接口 |
VETH对 | 直接相连的一对虚拟网络接口,用来连接两个虚拟网桥 |
OVS网桥 | 物理连接网桥直接连接到物理网卡,两个OVS网桥通过一个VETH对来对接 |
配置接着:nova部署
CT控制节点
CT VM:192.168.10.154 NAT:192.168.10.155
mysql -u root -p
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';
flush privileges;
exit
创建neutron用户,用于在keystone做认证
openstack user create --domain default --password NEUTRON_PASS neutron
将neutron用户添加到service项目中拥有管理员权限
openstack role add --project service --user neutron admin
创建network服务,服务类型为network
openstack service create --name neutron --description "OpenStack Networking" network
openstack endpoint create --region RegionOne network public http://ct:9696
openstack endpoint create --region RegionOne network internal http://ct:9696
openstack endpoint create --region RegionOne network admin http://ct:9696
yum -y install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables conntrack-tools
cp -a /etc/neutron/neutron.conf{,.bak}
grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
传参
openstack-config --set /etc/neutron/neutron.conf database connection mysql+pymysql://neutron:NEUTRON_DBPASS@ct/neutron
openstack-config --set /etc/neutron/neutron.conf DEFAULT core_plugin ml2
openstack-config --set /etc/neutron/neutron.conf DEFAULT service_plugins router
openstack-config --set /etc/neutron/neutron.conf DEFAULT allow_overlapping_ips true
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true
openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_data_changes true
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
openstack-config --set /etc/neutron/neutron.conf nova auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf nova auth_type password
openstack-config --set /etc/neutron/neutron.conf nova project_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova user_domain_name default
openstack-config --set /etc/neutron/neutron.conf nova region_name RegionOne
openstack-config --set /etc/neutron/neutron.conf nova project_name service
openstack-config --set /etc/neutron/neutron.conf nova username nova
openstack-config --set /etc/neutron/neutron.conf nova password NOVA_PASS
cat /etc/neutron/neutron.conf
cp -a /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
传参
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers flat,vlan,vxlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types vxlan
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers linuxbridge,l2population
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks provider
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vxlan vni_ranges 1:1000
openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini securitygroup enable_ipset true
cat /etc/neut ron/plugins/ml2/ml2_conf.ini
cp -a /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
传参
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:ens33
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.10.154
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
modprobe br_netfilter
sysctl -p
cp -a /etc/neutron/l3_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/l3_agent.ini.bak > /etc/neutron/l3_agent.ini
openstack-config --set /etc/neutron/l3_agent.ini DEFAULT interface_driver linuxbridge
cp -a /etc/neutron/dhcp_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/dhcp_agent.ini.bak > /etc/neutron/dhcp_agent.ini
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT interface_driver linuxbridge
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
openstack-config --set /etc/neutron/dhcp_agent.ini DEFAULT enable_isolated_metadata true
cat /etc/neutron/dhcp_agent.ini
cp -a /etc/neutron/metadata_agent.ini{,.bak}
grep -Ev '^$|#' /etc/neutron/metadata_agent.ini.bak > /etc/neutron/metadata_agent.ini
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT nova_metadata_host ct
openstack-config --set /etc/neutron/metadata_agent.ini DEFAULT metadata_proxy_shared_secret METADATA_SECRET
cat /etc/neutron/metadata_agent.ini
openstack-config --set /etc/nova/nova.conf neutron url http://ct:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://ct:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
openstack-config --set /etc/nova/nova.conf neutron service_metadata_proxy true
openstack-config --set /etc/nova/nova.conf neutron metadata_proxy_shared_secret METADATA_SECRET
cat /etc/nova/nova.conf
网络服务初始化脚本需要/etc/neutron/plugin.ini指向ML2插件配置文件的符号链接
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
systemctl restart openstack-nova-api.service
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
netstat -anutp |grep 9696
systemctl enable neutron-l3-agent.service
systemctl restart neutron-l3-agent.service
C1 VM:192.168.10.136 NAT:192.168.10.157
C2 VM:192.168.10.133 NAT:192.168.10.156
yum -y install openstack-neutron-linuxbridge ebtables ipset conntrack-tools
#ipset:iptables的扩展,允许匹配规则的集合而不仅仅是一个IP
cp -a /etc/neutron/neutron.conf{,.bak}
grep -Ev '^$|#' /etc/neutron/neutron.conf.bak > /etc/neutron/neutron.conf
openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url rabbit://openstack:RABBIT_PASS@ct
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password NEUTRON_PASS
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp
cat /etc/neutron/neutron.conf
cp -a /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
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings provider:ens37
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan local_ip 192.168.10.157
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan l2_population true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
cat /etc/neutron/plugins/ml2/linuxbridge_agent.ini
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
#modprobe:用于向内核中加载模块或者从内核中移除模块。modprobe -r 表示移除
modprobe br_netfilter
sysctl -p
openstack-config --set /etc/nova/nova.conf neutron auth_url http://ct:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password NEUTRON_PASS
查看传入的参数
cat /etc/nova/nova.conf
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
openstack extension list --network
openstack network agent list
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
openstack network agent list
三个节点都需要配置neutron网络,以下为部署思路:
配置neutron组件的用户、认证、endpoint
设置提供者provider网络(这里是桥接模式)
① 配置二层网络
② 配置网桥(插件)
③ 优化内核
④ 配置网桥接口与外部对接
⑤ 修改DHCP配置(修改配置文件、代理)
⑥ 配置网桥与内部组件的配置(修改配置文件、代理)
设置neutron与nova对接的配置
其中C1、C2节点配置相同