1.虚拟机获取 ip

1)用 namspace 隔离 DHCP 服务

Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Namespace 独立的为每个 network 服务隔离

在二层网络上,VLAN 可以将一个物理交换机分割成几个独立的虚拟交换机。类似地,在三层网络上,Linux network namespace 可以将一个物理三层网络分割成几个独立的虚拟三层网络。

每个 namespace 都有自己独立的网络栈,包括 route table,firewall rule,network interface device 等。

Neutron 通过 namespace 为每个 network 提供独立的 DHCP 和路由服务,从而允许租户创建重叠的网络。如果没有 namespace,网络就不能重叠,这样就失去了很多灵活性。

每个 dnsmasq 进程都位于独立的 namespace, 命名为 qdhcp-<network id>,例如 flat_net:

  1. ip netns list 命令列出所有的 namespace
  2.  
  3. ip netns exec <network namespace name> <command> 管理 namespace

2)root namespace

其实,宿主机本身也有一个 namespace,叫 root namespace,拥有所有物理和虚拟 interface device。物理 interface 只能位于 root namespace。

新创建的 namespace 默认只有一个 loopback device。管理员可以将虚拟 interface,例如 bridge,tap 等设备添加到某个 namespace。

对于 flat_net 的 DHCP 设备 tap19a0ed3d-fe,需要将其放到 namespace qdhcp-7bf09be4-8653-4869-84f0-33494f238627 中,但这样会带来一个问题:tap19a0ed3d-fe 将无法直接与 root namespace 中的 bridge 设备 brqf153b42f-c3 连接。

Neutron 使用 veth pair 解决了这个问题。

veth pair 是一种成对出现的特殊网络设备,它们象一根虚拟的网线,可用于连接两个 namespace。向 veth pair 一端输入数据,在另一端就能读到此数据。

tap19a0ed3d-fe 与 ns-19a0ed3d-fe 就是一对 veth pair,它们将 qdhcp-f153b42f-c3a1-4b6c-8865-c09b5b2aa274 连接到 brqf153b42f-c3。

如下图所示:

可以通过 ip netns exec qdhcp-7bf09be4-8653-4869-84f0-33494f238627 ip a命令查看ns-ba07bb93配置。

3)获取 dhcp IP 过程分析

在创建 instance 时,Neutron 会为其分配一个 port,里面包含了 MAC 和 IP 地址信息。这些信息会同步更新到 dnsmasq 的 host 文件。如下图所示:

同时 nova-compute 会设置虚机 VIF 的 MAC 地址。

一切准备就绪,instance 获取 IP 的过程如下:

(1)vm 开机启动,发出 DHCPDISCOVER 广播,该广播消息在整个 net 中都可以被收到。

(2)广播到达 veth tap19a0ed3d-fe,然后传送给 veth pair 的另一端 ns-19a0ed3d-fe。dnsmasq 在它上面监听,dnsmasq 检查其 host 文件,发现有对应项,于是dnsmasq 以  DHCPOFFER 消息将 IP(192.168.254.18)、子网掩码(255.255.255.0)、地址租用期限等信息发送给 vm。

(3)vm 发送 DHCPREQUEST 消息确认接受此 DHCPOFFER。

(4)dnsmasq 发送确认消息 DHCPACK,整个过程结束。

2.VXLAN简介

1)overlay network概念

overlay network 是指建立在其他网络上的网络。overlay network 中的节点可以看作通过虚拟(或逻辑)链路连接起来的。overlay network 在底层可能由若干物理链路组成,但对于节点,不需要关心这些底层实现。

例如 P2P 网络就是 overlay network,隧道也是。vxlan 和 gre 都是基于隧道技术实现的,它们也都是 overlay network。

目前 linux bridge 只支持 vxlan,不支持 gre;

open vswitch 两者都支持。vxlan 与 gre 实现非常类似,而且 vxlan 用得较多,所以本教程只介绍 vxlan。

2)VXLAN简介:

VXLAN 为 Virtual eXtensible Local Area Network。正如名字所描述的,VXLAN 提供与 VLAN 相同的以太网二层服务,但拥有更强的扩展性和灵活性。与 VLAN 相比,

VXLAN 有下面几个优势:

(1)支持更多的二层网段。

VLAN 使用 12-bit 标记 VLAN ID,最多支持 4094 个 VLAN,这对大型云部署会成为瓶颈。VXLAN 的 ID (VNI 或者 VNID)则用 24-bit 标记,支持 16777216 个二层网段。

(2)能更好地利用已有的网络路径。

VLAN 使用 Spanning Tree Protocol 避免环路,这会导致有一半的网络路径被 block 掉。VXLAN 的数据包是封装到 UDP 通过三层传输和转发的,可以使用所有的路径。

(3)避免物理交换机 MAC 表耗尽。

由于采用隧道机制,TOR (Top on Rack) 交换机无需在 MAC 表中记录虚拟机的信息。

3)VXLAN 封装和包格式:

VXLAN 是将二层建立在三层上的网络。通过将二层数据封装到 UDP 的方式来扩展数据中心的二层网段数量。

VXLAN 是一种在现有物理网络设施中支持大规模多租户网络环境的解决方案。VXLAN 的传输协议是 IP + UDP。

VXLAN 定义了一个 MAC-in-UDP 的封装格式。在原始的 Layer 2 网络包前加上 VXLAN header,然后放到 UDP 和 IP 包中。通过 MAC-in-UDP 封装,VXLAN 能够在 Layer 3 网络上建立起了一条 Layer 2 的隧道。

VXLAN 包的格式如下

如上图所示,VXLAN 引入了 8-byte VXLAN header,其中 VNI 占 24-bit。VXLAN 和原始的 L2 frame 被封装到 UDP 包中。这 24-bit 的 VNI 用于标示不同的二层网段,能够支持 16777216 个 LAN。

4)VXLAN Tunnel Endpoint

VXLAN 使用 VXLAN tunnel endpoint (VTEP) 设备处理 VXLAN 的封装和解封。每个 VTEP 有一个 IP interface,配置了一个 IP 地址。VTEP 使用该 IP 封装 Layer 2 frame,并通过该 IP interface 传输和接收封装后的 VXLAN 数据包。

下面是 VTEP 的示意图

VXLAN 独立于底层的网络拓扑;反过来,两个 VTEP 之间的底层 IP 网络也独立于 VXLAN。VXLAN 数据包是根据外层的 IP header 路由的,该 header 将两端的 VTEP IP 作为源和目标 IP。

VXLAN 封装和转发包的过程,以及 Linux 对 VXLAN 的原生支持

VXLAN 包转发流程

VXLAN 在 VTEP 间建立隧道,通过 Layer 3 网络传输封装后的 Layer 2 数据。下面例子演示了数据如何在 VXLAN 上传输

(1)图中 Host-A 和 Host-B 位于 VNI 10 的 VXLAN,通过 VTEP-1 和 VTEP-2 之间建立的 VXLAN 隧道通信。数据传输过程如下:

a)Host-A 向 Host-B 发送数据时,Host-B 的 MAC 和 IP 作为数据包的目标 MAC 和 IP,Host-A 的 MAC 作为数据包的源 MAC 和 IP,然后通过 VTEP-1 将数据发送出去。

b)VTEP-1 从自己维护的映射表中找到 MAC-B 对应的 VTEP-2,然后执行 VXLAN 封装,加上 VXLAN 头,UDP 头,以及外层 IP 和 MAC 头。此时的外层 IP 头,目标地址为 VTEP-2 的 IP,源地址为 VTEP-1 的 IP。同时由于下一跳是 Router-1,所以外层 MAC 头中目标地址为 Router-1 的 MAC。

c)数据包从 VTEP-1 发送出后,外部网络的路由器会依据外层 IP 头进行路由,最后到达与 VTEP-2 连接的路由器 Router-2。

d)Router-2 将数据包发送给 VTEP-2。VTEP-2 负责解封数据包,依次去掉外层 MAC 头,外层 IP 头,UDP 头 和 VXLAN 头。VTEP-2 依据目标 MAC 地址将数据包发送给 Host-B。

上面的流程我们看到 VTEP 是 VXLAN 的最核心组件,负责数据的封装和解封。隧道也是建立在 VTEP 之间的,VTEP 负责数据的传送。

(2)VTEP 是如何提前获知 IP -- MAC -- VTEP 相关信息的呢?

a)Neutron 知道每一个 port 的状态和信息; port 保存了 IP,MAC 相关数据。

b)instance 启动时,其 port 状态变化过程为:down -> build -> active。

c)每当 port 状态发生变化时,Neutron 都会通过 RPC 消息通知各节点上的 Neutron agent,使得 VTEP 能够更新 VM 和 port 的相关信息。VTEP 可以根据这些信息判断出其他 Host 上都有哪些 VM,以及它们的 MAC 地址,这样就能直接与之通信,从而避免了不必要的隧道连接和广播。

(3)Linux 对 VXLAN 的支持

VTEP 可以由专有硬件来实现,也可以使用纯软件实现。目前比较成熟的 VTEP 软件实现包括:

a)带 VXLAN 内核模块的 Linux

b)Open vSwitch

我们先来看 Linux 如何支持 VXLAN

实现方式:

a)Linux vxlan 创建一个 UDP Socket,默认在 8472 端口监听。

b)Linux vxlan 在 UDP socket 上接收到 vxlan 包后,解包,然后根据其中的 vxlan ID 将它转给某个 vxlan interface,然后再通过它所连接的 linux bridge 转给虚机。

c)Linux vxlan 在收到虚机发来的数据包后,将其封装为多播 UDP 包,从网卡发出。

网卡分配示例

a)控制节点三个网卡(eth0, eth1, eth2),计算节点两网卡(eth0, eth1)。

b)合并 Management 和 API 网络,使用 eth0,IP 段为 192.168.104.0/24。

c)VM 网络使用 eht1。

d)控制节点的 eth2 与 External 网络连接,IP 段为 10.10.10.0/24。

ML2 mechanism driver: Linux Bridge 和 Open vSwitch

Linux Bridge

Open vSwitch

Open vSwitch 中的网络设备:

br-ex:连接外部(external)网络的网桥。

br-int:集成(integration)网桥,所有 instance 的虚拟网卡和其他虚拟网络设备都将连接到该网桥。

br-tun:隧道(tunnel)网桥,基于隧道技术的 VxLAN 和 GRE 网络将使用该网桥进行通信。

tap interface:命名为 tapXXXX。

linux bridge:命名为 qbrXXXX。

veth pair:命名为 qvbXXXX, qvoXXXX

OVS integration bridge:命名为 br-int。

OVS patch ports:命名为 int-br-ethX 和 phy-br-ethX(X 为 interface 的序号)。

OVS provider bridge:命名为 br-ethX(X 为 interface 的序号)。

物理 interface:命名为 ethX(X 为 interface 的序号)。

OVS tunnel bridge:命名为 br-tun。

3.三层网络介绍

1)虚拟机访问外网:

(1)虚拟机中访问一个外网地址192.168.253.3,并用 traceroute 命令跟踪路由查看

(2)根据网络拓扑,由于虚机访问外网要经过本网段的网关192.168.101.1,然后经过路由的外网接口转发出去,到达192.168.253.3

查看路由命名空间

ip netns list

(3)查看路由命名空间的网络配置,查到路由连接外网的端口和ip

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 ip a

路由上的外网端口正好接到外网网桥br-ex上:ovs-vsctl show 查看

(4)查看路由iptables NAT 转发规则,记录对私网做的SNAT

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 iptables -t nat -L

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 iptables -t nat -S

规则解释: -A neutron-l3-agent-snat -o qg-8df29d32-d6 -j SNAT --to-source 192.168.253.65 记录了流入接口qg-8df29d32-d6 的数据包做SNAT(基于源地址转发),将源地址修改为192.168.253.65

(5)验证

在虚机 ping 192.168.253.3 时, 可以通过 tcpdump 分别观察 router 两个 interface 的 icmp 数据包来验证 SNAT 的行为:

在路由qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1,可查到私有网络的网关接口qr-7b56f58b-b5,并在路由中抓取网关接口的icmp包:

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 tcpdump -i qr-7b56f58b-b5 -n icmp

在路由中,抓取路由的外网接口qg-8df29d32-d6的icmp包:

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 tcpdump -i qg-8df29d32-d6 -n icmp

2)外网访问虚机——floating ip原理

SNAT 让 instance 能够直接访问外网,但外网还不能直接访问 instance。因为 instance 没有外网 IP。这里 “直接访问 instance” 是指通信连接由外网发起,例如从外网 SSH 实例。

(1)首先将实例绑定浮动 ip192.168.253.66, floating IP 是配置在 router 的外网 interface 上的,再查看 router 的 interface 配置:

(2)在实例中ping 192.168.253.3 外网地址,在路由的qr-7b56f58b-b5 接口上,实例访问外网ip,外网ip将数据包转发回实例ip;但在路由的qg-8df29d32-d6 接口上,始终是通过 floating IP 192.168.253.66 与外网通信。

(3) 原因是在路由中iptables做了DNA T(基于目的地址转发),查看 router 的 NAT 规则

当 router 接收到从外网发来的包,如果目的地址是 floating IP 192.168.254.66,将目的地址修改为实例的 IP 192.168.101.3。这样外网的包就能送达到实例;

当实例发送数据到外网,源地址 192.168.101.3 将被修改为 floating IP 192.168.253.66;

4.搭建neutron服务

1)环境准备

(1)数据库准备

  1. create database neutron;
  2.  
  3. grant all privileges on neutron.* to 'neutron'@'localhost' identified by 'NEUTRON_DBPASS';
  4. grant all privileges on neutron.* to 'neutron'@'%' identified by 'NEUTRON_DBPASS';

(2)创建用户、服务

创建neutron用户

  1. openstack user create --domain default --password=neutron neutron
  2. +---------------------+----------------------------------+
  3. | Field | Value |
  4. +---------------------+----------------------------------+
  5. | domain_id | default |
  6. | enabled | True |
  7. | id | 99d0fc3a849a4951b92135799fed0673 |
  8. | name | neutron |
  9. | options | {} |
  10. | password_expires_at | None |
  11. +---------------------+----------------------------------+

将cinder用户角色设置为admin

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

创建cinder服务

  1. openstack service create --name neutron --description "OpenStack Networking" network
  2. +-------------+----------------------------------+
  3. | Field | Value |
  4. +-------------+----------------------------------+
  5. | description | OpenStack Networking |
  6. | enabled | True |
  7. | id | 3e79c5a9080043d2b49d06e58affeb76 |
  8. | name | neutron |
  9. | type | network |
  10. +-------------+----------------------------------+

(3)创建neutron服务的endpoint

  1. openstack endpoint create --region RegionOne network public http://node1:9696
  2. +--------------+----------------------------------+
  3. | Field | Value |
  4. +--------------+----------------------------------+
  5. | enabled | True |
  6. | id | 14cf89b4812a44e9ba657bb04f4b058d |
  7. | interface | public |
  8. | region | RegionOne |
  9. | region_id | RegionOne |
  10. | service_id | 3e79c5a9080043d2b49d06e58affeb76 |
  11. | service_name | neutron |
  12. | service_type | network |
  13. | url | http://node1:9696 |
  14. +--------------+----------------------------------+
  15.  
  16. openstack endpoint create --region RegionOne network internal http://node1:9696
  17. +--------------+----------------------------------+
  18. | Field | Value |
  19. +--------------+----------------------------------+
  20. | enabled | True |
  21. | id | e521a19f51f44a9a823361cb570b982f |
  22. | interface | internal |
  23. | region | RegionOne |
  24. | region_id | RegionOne |
  25. | service_id | 3e79c5a9080043d2b49d06e58affeb76 |
  26. | service_name | neutron |
  27. | service_type | network |
  28. | url | http://node1:9696 |
  29. +--------------+----------------------------------+
  30.  
  31. openstack endpoint create --region RegionOne network admin http://node1:9696
  32. +--------------+----------------------------------+
  33. | Field | Value |
  34. +--------------+----------------------------------+
  35. | enabled | True |
  36. | id | b2a4f6dc0289426291317b80265145fc |
  37. | interface | admin |
  38. | region | RegionOne |
  39. | region_id | RegionOne |
  40. | service_id | 3e79c5a9080043d2b49d06e58affeb76 |
  41. | service_name | neutron |
  42. | service_type | network |
  43. | url | http://node1:9696 |
  44. +--------------+----------------------------------+

2)配置网络相关

(1)安装相关软件包

  1. yum install openstack-neutron openstack-neutron-ml2 openvswitch openstack-neutron-openvswitch ebtables -y

(2)修改neutron配置文件

  1. vim /etc/neutron/neutron.conf
  2. [DEFAULT]
  3. state_path = /var/lib/neutron
  4. auth_strategy = keystone
  5. core_plugin = ml2
  6. service_plugins = router
  7. dhcp_agent_notification = true
  8. allow_overlapping_ips = True
  9. notify_nova_on_port_status_changes = true
  10. notify_nova_on_port_data_changes = true
  11. transport_url = rabbit://openstack:admin@node1
  12. ...
  13. [database]
  14. connection = mysql+pymysql://neutron:NEUTRON_DBPASS@node1/neutron
  15. ...
  16. [keystone_authtoken]
  17. auth_uri = http://node1:5000
  18. auth_url = http://node1:35357
  19. memcached_servers = node1:11211
  20. auth_type = password
  21. project_domain_name = default
  22. user_domain_name = default
  23. project_name = service
  24. username = neutron
  25. password = neutron
  26. ...
  27. [nova]
  28. region_name = RegionOne
  29. auth_url = http://node1:35357
  30. auth_type = password
  31. project_domain_name = default
  32. project_name = service
  33. user_domain_name = default
  34. username = nova
  35. password = nova
  36. ...
  37. [oslo_concurrency]
  38. lock_path = $state_path/lock
  39. ...

(3)修改Modular Layer 2 (ML2) plug-in配置文件

  1. vim /etc/neutron/plugins/ml2/ml2_conf.ini
  2. [ml2]
  3. type_drivers = flat,vxlan
  4. tenant_network_types = vxlan
  5. mechanism_drivers = openvswitch,l2population
  6. extension_drivers = port_security
  7. ...
  8. [ml2_type_vxlan]
  9. vni_ranges = 1:1000
  10. ...
  11. [securitygroup]
  12. enable_ipset = true

(4)修改openvswitch_agent配置文件

  1. vim /etc/neutron/plugins/ml2/openvswitch_agent.ini
  2. ...
  3. [agent]
  4. tunnel_types = vxlan
  5. l2_population = True
  6. ...
  7. [ovs]
  8. tunnel_bridge = br-tun
  9. local_ip = 192.168.192.134(租户网的网卡ip
  10. bridge_mappings =
  11. ...
  12. [securitygroup]
  13. firewall_driver = iptables_hybrid
  14. enable_security_group = true
  15. ...

(5)修改layer-3 agent配置文件

  1. vim /etc/neutron/l3_agent.ini
  2. [DEFAULT]
  3. interface_driver = openvswitch
  4. external_network_bridge = br-ex
  5. ...

(6)修改metadata_agent配置文件

  1. vim /etc/neutron/metadata_agent.ini
  2. [DEFAULT]
  3. nova_metadata_ip = node1
  4. metadata_proxy_shared_secret = METADATA_SECRET
  5. ...

(7)修改dhcp_agent配置文件

  1. vim /etc/neutron/dhcp_agent.ini
  2. [DEFAULT]
  3. interface_driver = openvswitch
  4. dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
  5. enable_isolated_metadata = true
  6. ...

3)配置计算服务使用网络服务

  1. vim /etc/nova/nova.conf
  2. ...
  3. [neutron]
  4. url = http://node1:9696
  5. auth_url = http://node1:35357
  6. auth_type = password
  7. project_domain_name = default
  8. user_domain_name = default
  9. region_name = RegionOne
  10. project_name = service
  11. username = neutron
  12. password = neutron
  13. service_metadata_proxy = true
  14. metadata_proxy_shared_secret = METADATA_SECRET
  15. ...

4)创建软连接

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

5)同步数据库

  1. su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
  2. --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

6)启动服务

  1. systemctl restart openstack-nova-api.service
  2.  
  3. systemctl start neutron-server.service neutron-dhcp-agent.service openvswitch \
  4. neutron-openvswitch-agent neutron-metadata-agent.service
  5.  
  6. systemctl enable neutron-server.service neutron-dhcp-agent.service openvswitch \
  7. neutron-openvswitch-agent neutron-metadata-agent.service

7)添加一块网卡并设置禁止获取IP、建立网桥

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens38
  2. TYPE=Ethernet
  3. NAME=ens38
  4. UUID=be119028-7b80-312f-85cd-ed1ea343254e
  5. ONBOOT=yes
  6. DEVICE=ens38
  7. IPV6INIT=no
  1. ovs-vsctl add-br br-ex
  2. ovs-vsctl add-port br-ex ens38
  3.  
  4. ovs-vsctl show
  5. f6f8d962-bbe0-4dc8-9582-a5d041145cc8
  6. Manager "ptcp:6640:127.0.0.1"
  7. is_connected: true
  8. Bridge br-tun
  9. Controller "tcp:127.0.0.1:6633"
  10. is_connected: true
  11. fail_mode: secure
  12. Port br-tun
  13. Interface br-tun
  14. type: internal
  15. Port patch-int
  16. Interface patch-int
  17. type: patch
  18. options: {peer=patch-tun}
  19. Bridge br-int
  20. Controller "tcp:127.0.0.1:6633"
  21. is_connected: true
  22. fail_mode: secure
  23. Port patch-tun
  24. Interface patch-tun
  25. type: patch
  26. options: {peer=patch-int}
  27. Port br-int
  28. Interface br-int
  29. type: internal
  30. Bridge br-ex
  31. Port "ens38"
  32. Interface "ens38"
  33. Port br-ex
  34. Interface br-ex
  35. type: internal
  36. ovs_version: "2.9.0"

8)配置计算节点

(1)安装相关软件包

  1. yum install openvswitch openstack-neutron-openvswitch ebtables ipset -y

(2)配置neutron配置文件

  1. vim /etc/neutron/neutron.conf
  2. [DEFAULT]
  3. auth_strategy = keystone
  4. transport_url = rabbit://openstack:admin@node1
  5. ...
  6. [keystone_authtoken]
  7. auth_uri = http://node1:5000
  8. auth_url = http://node1:35357
  9. memcached_servers = node1:11211
  10. auth_type = password
  11. project_domain_name = default
  12. user_domain_name = default
  13. project_name = service
  14. username = neutron
  15. password = neutron
  16. ...
  17. [oslo_concurrency]
  18. lock_path = $state_path/lock
  19. ...

(3)配置网络相关服务

  1. vim /etc/neutron/plugins/ml2/openvswitch_agent.ini
  2. ...
  3. [agent]
  4. tunnel_types = vxlan
  5. l2_population = True
  6. ...
  7. [ovs]
  8. tunnel_bridge = br-tun
  9. local_ip = 192.168.192.135
  10. bridge_mappings =
  11. ...
  12. [securitygroup]
  13. firewall_driver = iptables_hybrid
  14. enable_security_group = true

(4)配置计算服务使用网络服务

  1. vim /etc/nova/nova.conf
  2. ...
  3. [neutron]
  4. url = http://node1:9696
  5. auth_url = http://node1:35357
  6. auth_type = password
  7. project_domain_name = default
  8. user_domain_name = default
  9. region_name = RegionOne
  10. project_name = service
  11. username = neutron
  12. password = neutron
  13. service_metadata_proxy = true
  14. metadata_proxy_shared_secret = METADATA_SECRET
  15. ...

(5)启动相关服务

  1.   systemctl restart openstack-nova-compute.service
  2.  
  3.   systemctl enable openvswitch neutron-openvswitch-agent
  4.   systemctl start openvswitch neutron-openvswitch-agent

OpenStack组件——Neutron网络服务(2)的更多相关文章

  1. OpenStack组件——Neutron网络服务(1)

    1.neutron 介绍: 1)Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  2. openstack核心组件——neutron网络服务(8)

    云计算openstack核心组件——neutron网络服务(8)   一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云 ...

  3. openstack核心组件——neutron网络服务 抓取ip(9)

    云计算openstack核心组件——neutron网络服务(9)   一.虚拟机获取 ip: 用 namspace 隔离 DHCP 服务   Neutron 通过 dnsmasq 提供 DHCP 服务 ...

  4. OpenStack核心组件-neutron网络服务

    1. neutron 介绍 1.1 Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能 ...

  5. OpenStack之Neutron网络服务(一)

    1.Neutron概要 OpenStack网络服务提供了一个API接口,允许用户在云上设置和定义网络连接和地址.这个网络服务的项目代码名称是Neutron.OpenStack网络处理虚拟设备的创建和管 ...

  6. openstack核心组件--neutron网络服务(4)

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  7. 云计算openstack核心组件——neutron网络服务(8)

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  8. 云计算OpenStack核心组件---neutron网络服务(8)*****

    一.neutron介绍 1.Neutron概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建. ...

  9. 云计算openstack核心组件——neutron网络服务(9)

    一.虚拟机获取 ip: 用 namspace 隔离 DHCP 服务   Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Namespa ...

随机推荐

  1. Vue 实现 登陆后打开主页面(登陆组件 + 主页面组件)

    本次演示,项目所需iview,router 首先 在 views 目录 新建 两个 组件 ( login.vue ,index.vue ) login.vue <template> < ...

  2. python面向对象基础(二)反射

    1.反射 前言 如何动态输入一个模块名,可以随时访问到导入模块中的方法或者变量? in= input(“请输入你想导入的模块名:”) CC = __import__(in) #這种方式就是通过输入字符 ...

  3. guava的一些用法

    package guavaTest; import com.google.common.base.CharMatcher; import com.google.common.base.Joiner; ...

  4. Oracle之:查询锁表,删除锁表

    -- 查询当前哪个表被锁 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo. ...

  5. mysql router使用配置

    mysql router使用配置 参考资料: https://www.jianshu.com/p/7fc8d77bea59 一.架构图 介绍: MySQL Router是处于应用client和dbse ...

  6. 题解 POJ1149 Pigs

    先翻译一下吧(题面可以在原OJ上找) Mirko在一个由M个锁着的猪舍组成的养猪场工作,Mirko无法解锁任何猪舍,因为他没有钥匙.客户纷纷来到农场.他们每个人都有一些猪舍的钥匙,并想购买一定数量的猪 ...

  7. 燕化迷你ACDP程序FEM / BDC

    带有BMW FEM / BDC模块的Mini ACDP可通过ICP或OBP模式支持FEM / BDC IMMO键编程.与传统的接线方式相比,它们有什么区别? 方法1:通过其他设备通过焊接进行FEM / ...

  8. 31. ClustrixDB 分布式架构/查询优化器

    ClustrixDB查询优化器有何不同 ClustrixDB查询优化器的核心是能够执行一个具有最大并行性的查询和多个具有最大并发性的并发查询.这是通过分布式查询规划器和编译器以及分布式无共享执行引擎实 ...

  9. 26.Python三目运算符(三元运算符)用法详解

    Python 可通过 if 语句来实现三目运算符的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: True_statements if expres ...

  10. linux 上修改了nginx.conf 怎么重新加载配置文件生效

    步骤如下先利用/usr/local/nginx/sbin/nginx -t测试配置文件修改是否正常/usr/local/nginx/sbin/nginx -s reload重新加载 nginx 更改配 ...