网络服务概览
OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。
它包含下列组件:
neutron-server:
接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。OpenStack网络插件和代理:
插拔端口,创建网络和子网,以及提供IP地址,这些插件和代理依赖于供应商和技术而不同,OpenStack网络基于插件和代理为Cisco 虚拟和物理交换机、NEC OpenFlow产品,Open vSwitch,Linux bridging以及VMware NSX 产品穿线搭桥。
常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。消息队列:
大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态
OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。- 网络neutron概念:
OpenStack网络(neutron)管理OpenStack环境中所有虚拟网络基础设施(VNI),物理网络基础设施(PNI)的接入层。OpenStack网络允许租户创建包括像 firewall, :term:load balancer
和 :term:virtual private network (×××)
等这样的高级虚拟网络拓扑。
网络服务提供网络,子网以及路由这些对象的抽象概念。每个抽象概念都有自己的功能,可以模拟对应的物理设备:网络包括子网,路由在不同的子网和网络间进行路由转发。
对于任意一个给定的网络都必须包含至少一个外部网络。不像其他的网络那样,外部网络不仅仅是一个定义的虚拟网络。相反,它代表了一种OpenStack安装之外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问
外部网络之外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接连接到虚拟机。仅仅在给定网络上的虚拟机,或那些在通过接口连接到相近路由的子网上的虚拟机,能直接访问连接到那个网络上的虚拟机。
如果外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每一个路由都配有一个网关用于连接到外部网络,以及一个或多个连接到内部网络的接口。就像一个物理路由一样,子网可以访问同一个路由上其他子网中的机器,并且机器也可以访问路由的网关访问外部网络。
另外,你可以将外部网络的IP地址分配给内部网络的端口。不管什么时候一旦有连接连接到子网,那个连接被称作端口。你可以给实例的端口分配外部网络的IP地址。通过这种方式,外部网络上的实体可以访问实例.
网络服务同样支持安全组。安全组允许管理员在安全组中定义防火墙规则。一个实例可以属于一个或多个安全组,网络为这个实例配置这些安全组中的规则,阻止或者开启端口,端口范围或者通信类型。
操作步骤
- 在controller节点
-
创建nuetron数据库和授权
# mysql -u root -p > CREATE DATABASE neutron; > GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456'; > GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';
-
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
# source ~/admin-openrc
-
创建用户
# openstack user create --domain default --password-prompt neutron User Password: //密码123456 Repeat User Password: //密码123456
-
添加
admin
角色到neutron
用户:# openstack role add --project service --user neutron admin
-
创建neutron服务
# openstack service create --name neutron --description "OpenStack Networking" network
-
创建网络服务端点
# 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
-
在controller节点上安装并配置网络组件
-
安装组件
# yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables
-
修改配置文件
# vim /etc/neutron/neutron.conf [database] //729 connection = mysql+pymysql://neutron:123456@controller/neutron [DEFAULT] //27 auth_strategy = keystone //30 core_plugin = ml2 //33 不写代表禁用其他插件 service_plugins = //570 transport_url = rabbit://openstack:RABBIT_PASS@controller //98 notify_nova_on_port_status_changes = true //102 notify_nova_on_port_data_changes = true [keystone_authtoken] //847 auth_uri = http://controller:5000 auth_url = http://controller:35357 //898 memcached_servers = controller:11211 //1005 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456 [nova] //1085 auth_url = http://controller:35357 //1089 auth_type = password //1127 project_domain_name = default //1156 user_domain_name = default //1069 region_name = RegionOne //1135 project_name = service //1163 username = nova //1121 password = 123456 [oslo_concurrency] //1179 lock_path = /var/lib/neutron/tmp
- 配置网络二层插件
-
配置 Modular Layer 2 (ML2) 插件
# vim /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] //136 type_drivers = flat,vlan //141 设置空是禁用本地网络 tenant_network_types = //145 mechanism_drivers = linuxbridge //150 extension_drivers = port_security [ml2_type_flat] //186 flat_networks = provider [securitygroup] //263 enable_ipset = true
-
配置Linux网桥
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] //157 physical_interface_mappings = provider:ens33 [vxlan] //208 enable_vxlan = false [securitygroup] //193 enable_security_group = true //188 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
-
配置DHCP
# vim /etc/neutron/dhcp_agent.ini //16 interface_driver = linuxbridge //28 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq //37 enable_isolated_metadata = true
-
配置metadata
# vim /etc/neutron/metadata_agent.ini [DEFAULT] //22 nova_metadata_host = controller //34 metadata_proxy_shared_secret = 123456
-
配置计算服务使用网络服务
# vim /etc/nova/nova.conf [neutron] //7534 url = http://controller:9696 //7610 auth_url = http://controller:35357 //7604 auth_type = password //7631 project_domain_name = default //7657 user_domain_name = default //7678 region_name = RegionOne //7625 project_name = service //7651 username = neutron //7660 password = 123456 //7573 service_metadata_proxy = true //7584 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
-
重启compute API服务和 启动neutron服务并加入开机自启动
# systemctl restart openstack-nova-api.service systemctl enable neutron-server.service systemctl enable neutron-linuxbridge-agent.service systemctl enable neutron-dhcp-agent.service systemctl enable neutron-metadata-agent.service systemctl start neutron-server.service systemctl start neutron-linuxbridge-agent.service systemctl start neutron-dhcp-agent.service systemctl start neutron-metadata-agent.service
配置compute节点网络服务
# yum install -y openstack-neutron-linuxbridge ebtables ipset
-
配置公共组件
# vim /etc/neutron/neutron.conf [DEFAULT] //27 auth_strategy = keystone //570 transport_url = rabbit://openstack:123456@controller [keystone_authtoken] //847 auth_uri = http://controller:5000 auth_url = http://controller:35357 //898 memcached_servers = controller:11211 //1005 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = 123456 [oslo_concurrency] //1180 lock_path = /var/lib/neutron/tmp
-
配置Linux网桥
# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini [linux_bridge] //157 physical_interface_mappings = provider:ens33 [vxlan] //208 enable_vxlan = false [securitygroup] //193 enable_security_group = true //188 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
-
配置计算节点网络服务
# vim /etc/nova/nova.conf [neutron] //7534 url = http://controller:9696 //7610 auth_url = http://controller:35357 //7605 auth_type = password //7631 project_domain_name = default //7657 user_domain_name = default //7678 region_name = RegionOne //7625 project_name = service //7651 username = neutron //7660 password = 123456
-
重启计算服务
# systemctl restart openstack-nova-compute.service
-
启动Linuxbridge代理并配置它开机自启动
# systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service
- 验证
-
列出加载的扩展来验证
neutron-server
进程是否正常启动:# source ~/admin-openrc # neutron ext-list