一种解决SLB做SNAT时IP地址冲突的方法与流程

文档序号:20376655发布日期:2020-04-14 14:06阅读:1410来源:国知局
一种解决SLB做SNAT时IP地址冲突的方法与流程

本发明属于网络集群技术领域,特别是涉及一种解决slb做snat时ip地址冲突的方法。



背景技术:

负载均衡(loadbalance)是一种服务器或网络设备的集群技术。负载均衡将特定的业务分担给多个服务器或网络设备,从而提高了业务能力,保证了业务的高可用性。

请参阅图2所示,为现有负载均衡功能实现方式及流量走向;云网络环境中,防火墙和lb设备旁挂在border两侧。当客户使用了负载均衡功能以后,从外网访问lb时,报文进入border,然后进入防火墙,在防火墙上做一次dnat,将目的地址由slb绑定的eip转换为vip。之后报文进入lb设备,在lb上需要做一次snat+dnat转换,snat将公网ip(源ip)转换为一个从snat-pool里分出的vip(现有实现snat-pool里只有一个slb的vip),dnat将目的地址由虚服务ip转换为后端实服务器的ip地址;报文再经border,最终到达后端实服务器vm里面。由后端实服务器vm对request请求做出响应并将response包经由border送回给lb;在lb上再做一次dnat+snat,目的地址由snat-pool分出的ip(vip)转换为请求时的公网ip,源ip由后端实服务器的ip转换为lb实例的vip,报文通过租户承载网由lb送达防火墙,在防火墙上再做一个snat;源ip由lb的vip转换为lb实例绑定的eip,报文从防火墙到达border,最后经border送到internetacc和外网路由器送出外网。

但实际使用中存在较大漏洞,snat-pool地址使用的租户slb虚服务的ip地址,这样在同一个vpc内部可以将vip区分开来。但是到了lb设备上,因为在snat_pool在lb设备上的配置是全局性的,并不支持vrf隔离;这样就会出现相同的vip只有第一个配置时会生效;如果遇到相同的vip,第二个lb的snat_pool的配置在设备上无法下发,导致除第一个lb以外的lb都无法实现源地址转换功能,使整个lb实例流量不通,负载均衡功能不能正常使用。

本发明提供一种解决slb做snat时ip地址冲突的方法,用以解决上述问题。



技术实现要素:

本发明的目的在于提供一种解决slb做snat时ip地址冲突的方法,通过sdn控制器自动为snat_pool分发ip地址,解决了现有的lb设备上配置snat_pool时,ip地址冲突的问题。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明为一种解决slb做snat时ip地址冲突的方法,包括如下步骤:

a00:sdn控制器预先配置一个地址池,并通过api初始化数据;

a01:创建虚服务ip时,所述sdn控制器根据地址池中ip地址的状态从未分配状态的ip中取出id最小的ip入库备用,并与vip的id绑定;

a02:在创建实服务器组时,将ip加入到snat_pool中替换原来的vip,并将snat_pool的配置下发到lb设备;

a03:在border上新增一条目的地址作为snat_pool的ip,下一跳到lb的路由,保证后端服务器回包时,流量从border到达lb上;

a04:lb实例被安全释放后,snat_pool中的ip被地址池回收,实现地址池ip重复利用。

优选地,当所述lb设备使用snat转换功能时,将原来的snat_pool中固定模式的vip替换为地址池中由sdn控制器根据算法分发出来的ip地址,再将snat_pool的配置下发到lb设备。

本发明具有以下有益效果:

1、本发明通sdn控制器自动为snat_pool分发ip地址,snat_pool中的ip地址可进行动态维护,实现高可控性;解决了lb设备上配置snat_pool时,ip地址冲突的问题;

2、本发明为防止ip不够用,地址池ip数量可随时新增,实现了高扩展性;snat_pool的地址由原来固定的vip变成了sdn控制器分发,使ip地址高可控;地址池ip不够用时,可动态扩展;同时不影响旧的lb的使用,对旧数据做到很好的兼容性;

3、本发明lb实例被释放后,snat_pool中的地址被地址池回收;ip地址可重复利用,避免了线上ip资源浪费;地址池ip地址可被回收重复利用,避免线上可用ip资源的浪费,使地址池的ip地址的重复利用率大大增强,用很少的资源就可实现原来使用大量ip资源达到的效果。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的一种解决slb做snat时ip地址冲突的方法的流程图;

图2为本发明背景技术中介绍的现有负载均衡功能实现方式及流量走向的结构框图;

图3为本发明中负载均衡功能实现方式及流量走向的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1所示,本发明为一种解决slb做snat时ip地址冲突的方法,包括如下步骤:

a00:sdn控制器预先配置一个地址池,并通过api初始化数据;

a01:创建虚服务ip时,所述sdn控制器根据地址池中ip地址的状态从未分配状态的ip中取出id最小的ip入库备用,并与vip的id绑定;

a02:在创建实服务器组时,将ip加入到snat_pool中替换原来的vip,并将snat_pool的配置下发到lb设备;

a03:在border上新增一条目的地址作为snat_pool的ip,下一跳到lb的路由,保证后端服务器回包时,流量从border到达lb上;

a04:lb实例被安全释放后,snat_pool中的ip被地址池回收,实现地址池ip重复利用。

请参阅图3所示,当所述lb设备使用snat转换功能时,将原来的snat_pool中固定模式的vip替换为地址池中由sdn控制器根据算法分发出来的ip地址,再将snat_pool的配置下发到lb设备;因为由sdn控制器控制的地址池中分出来的ip不会冲突,这样就可以保证每个snat_pool配置都能正常下发到设备。

本发明实际使用时:利用sdn控制器自动为snat_pool分发ip地址的方案;解决了lb设备上配置snat_pool时,ip地址冲突的问题;snat_pool的地址由原来固定的vip变成了sdn控制器分发,使ip地址高可控,地址池ip不够用时,可动态扩展;同时不影响旧的lb的使用,对旧数据做到很好的兼容性;地址池ip地址可被回收重复利用,避免线上可用ip资源的浪费,使地址池的ip地址的重复利用率大大增强,用很少的资源就可实现原来使用大量ip资源达到的效果。

值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1