Neutron分析(7)—— neutron-l3-agent HA solutions

1. keepalived vrrp/conntrackd

High availability features will be implemented as extensions or drivers.A first extension/driver will be based on VRRP.

A new scheduler will be also added in order to be able to spawn multiple instances of a same router in many places.

Conntrackd will be used to maintain the TCP sessions going through the router. One instance of conntrackd per virtual router, then one per namespace.

Blueprints:  https://blueprints.launchpad.net/neutron/+spec/l3-high-availability
wiki:        https://wiki.openstack.org/wiki/Neutron/L3_High_Availability_VRRP
analysis:    http://blog.csdn.net/quqi99/article/details/18799877

2. neutron DVR based multi-host l3-agent

Provide Distributed Virtual Routing functionality with OVS, to improve the performance.

在Openstack中L3router会造成流量集中的问题。不论东西向还是南北向的流量都需要流过网络节点的虚拟路由器。为了解决流量集中的问题,社区正在开打分布式虚拟路由器(DVR)的feature。

https://blueprints.launchpad.net/neutron/+spec/neutron-ovs-dvr
    https://wiki.openstack.org/wiki/Neutron/DVR_L2_Agent
    http://m.blog.csdn.net/blog/maoliping455mlp455/36899391
    http://blog.csdn.net/quqi99/article/details/20711303

3. Neutron Multi-host DHCP and L3

Goal here is to have a DHCP implementation that provides the same properties as nova-network‘s "multi_host" functionality, where the DHCP server for a particular VM runs directly on the same hypervisor as the VM itself (with the exception of when a VM migrates).

This blueprints is in drafting, and will not merge in upstream.

https://blueprints.launchpad.net/neutron/+spec/quantum-multihost

4. crontab using neutron-client

http://m.blog.csdn.net/blog/maoliping455mlp455/23428897

So this when we neutron-l3-agent is down, we can see that it will not affect the existed VMs. And we can easily use monitd to make process "neutron-l3-agent" is always alive. We can use the following script, and run a crontab(every 10 sec) on the server which installed neutronclient (But not on the controller nodes):

#!/usr/bin/python
from neutronclient.v2_0 import client as neutronclient

TENANT_NAME="admin"
USERNAME="admin"
PASSWORD="admin"
AUTH_URL="https://10.224.159.107:443/v2.0/"

neutron = neutronclient.Client(auth_url=AUTH_URL,
                               username=USERNAME,
                               password=PASSWORD,
                               tenant_name=TENANT_NAME)

agents = neutron.list_agents()
alive_l3_agents = []
dead_l3_agents = []

for agent in agents[‘agents‘]:
    if agent[‘binary‘] == ‘neutron-l3-agent‘ and agent[‘alive‘] == True:
        alive_l3_agents.append(agent)
    if agent[‘binary‘] == ‘neutron-l3-agent‘ and agent[‘alive‘] != True:
        dead_l3_agents.append(agent)

if len(alive_l3_agents) == 0 :
    print "No active L3"

if len(dead_l3_agents) == 0 :
    print "No dead L3"

routers = neutron.list_routers()
dead_routers = []

for dead_l3_agent in dead_l3_agents:
    dead_routers = neutron.list_routers_on_l3_agent(dead_l3_agent[‘id‘])
    for dead_router in dead_routers[‘routers‘]:
        neutron.remove_router_from_l3_agent(dead_l3_agent[‘id‘], dead_router[‘id‘])
        print "remove_router_from_l3_agent : L3 id is %s, router id is %s" %(dead_l3_agent[‘id‘], dead_router[‘id‘])
        # Currently, only add to the first alive agent
        neutron.add_router_to_l3_agent(alive_l3_agents[0][‘id‘], {"router_id":dead_router[‘id‘]})
        print "add_router_to_l3_agent : L3 id is %s, router id is %s" %(alive_l3_agents[0][‘id‘], dead_router[‘id‘])

5. HA of other components

(1) Database: active-passive (pacemarker + DRBD); active-active (Galera)
    http://blog.csdn.net/quqi99/article/details/9392789

(2) MQ: MQ cluster
    http://blog.csdn.net/quqi99/article/details/9394121

(3) Cinder: Local File System (Raid10 + LVM); Distrubte File System (Ceph)
    http://blog.csdn.net/quqi99/article/details/9396413
     http://blog.csdn.net/quqi99/article/details/10894833

(4) All stateless services, like (keystone|glance|nova|neutron)-api, nova-schedule etc (haproxy + pacemarker)

(5) l3-agent: VRRP + keeplived + ip conntracked
    https://blueprints.launchpad.net/neutron/+spec/l3-high-availability
    http://blog.csdn.net/quqi99/article/details/18799877

Neutron分析(7)—— neutron-l3-agent HA solutions

时间: 2024-12-29 11:21:51

Neutron分析(7)—— neutron-l3-agent HA solutions的相关文章

理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)

本系列会分析OpenStack 的高可用性(HA)解决方案: (1)概述 (TBD,写完整个系列在回来写这块) (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)Neutron L3 Agent HA - DVR (分布式虚机路由器) (4)TBD 1. 基础知识 1.1 虚拟路由冗余协议 - VRRP 1.1.1 概念 路由器是整个网络的核心.一个网络内的所有主机往往都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器,从

Neutron分析(5)—— neutron-l3-agent中的iptables

一.iptables简介 1.iptables数据包处理流程 以本机为目的的包,由上至下,走左边的路 本机产生的包,从local process开始走左边的路 本机转发的包,由上至下走右边的路 简化流程如下: 2.iptables表结构 在neutron中主要用到filter表和nat表 filter表: Chain INPUT Chain FORWARD Chain OUTPUT filter表用于信息包过滤,它包含INPUT.OUTPUT和FORWARD 链. nat表: Chain PRE

Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]

学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7)Neutron LBaas Neutron 对虚拟三层网络的实现是通过其 L3 Agent (ne

openstack Neutron分析(3)—— neutron-dhcp-agent源码分析

1.neutron dhcp3个主要部件分别为什么?2.dhcp模块包含哪些内容?3.Dnsmasq配置文件是如何创建和更新的?4.DHCP agent的信息存放在neutron数据库的哪个表中? 扩展: neutron-dhcp-agent在neutron的作用是什么? 一.概述 neutron dhcp为租户网络提供DHCP服务,即IP地址动态分配,另外还会提供metadata请求服务. 3个主要的部件:DHCP agent scheduler:负责DHCP agent与network的调度

Neutron分析(3)—— neutron-l3-agent

一.Layer-3 Networking Extension neutron l3作为一种API扩展,向租户提供了路由和NAT功能. l3扩展包含两种资源: router:在不同内部子网中转发数据包:通过指定内部网关做NAT.每一个子网对应router上的一个端口,这个端口的ip就是子网的网关. floating ip:代表一个外部网络的IP,映射到内部网络的端口上.当网络的router:external属性为True时,floating ip才能定义. 这两种资源都对应有不同的属性.支持CRU

Neutron分析(4)—— neutron-dhcp-agent

一.概述 neutron dhcp为租户网络提供DHCP服务,即IP地址动态分配,另外还会提供metadata请求服务. 3个主要的部件: DHCP agent scheduler:负责DHCP agent与network的调度 DHCP agent:为租户网络提供DHCP的功能,提供metadata request服务. DHCP driver:即dnsmasq,用于管理DHCP server. 二.REST API neutron dhcp提供2类REST API接口,这两类API都是ext

Neutron分析(6)—— neutron-openvswitch-agent

neutron-openvswitch-agent代码分析 neutron.plugins.openvswitch.agent.ovs_neutron_agent:main # init ovs first by agent_config:# setup plugin_rpc, state_rpc, msgq consumer, periodically state report# setup br-int, br-tun, bridge_mapping# start sg_agent agen

Neutron分析(2)——neutron-server启动过程分析

neutron-server启动过程分析 1. /etc/init.d/neutron-server DAEMON=/usr/bin/neutron-server DAEMON_ARGS="--log-file=$LOGFILE" DAEMON_DIR=/var/run ... case $1 in start) test "$ENABLED" = "true" || exit 0 log_daemon_msg "Starting ne

Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

原文:http://www.cnblogs.com/sammyliu/p/4622563.html 学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7