[dev][ipsec][distributed] strongswan如何做热迁移/高可用/High Availability
问题描述:
原生的基于kernel 的 strongswan 如何做高可用,HA,High Availability
问题分析:
基于我们已知的,ipsec,strongswan的知识。问题分解如下:
1. IKE SA的同步,CHILD SA的同步。
2. ESP包是有序列号的,序列号的同步问题。
3. 隧道不能断,业务也不能断。所以还有一个隧道IP的同步问题。
解决方案:
strongswan是这样解决的。
1. 问题1)与strongswan软件进行解决,可以通过配置,配置一个高可用的组,组内彼此会进行IKE SA和CHILD SA的同步。
首先启用HA Plugin。 然后,做一个大概这样的配置,如下:
ha {
# ...
pools {
sales = 10.0.1.0/
finance = 10.0.2.0/
}
}
2. 问题2)和问题3)由linux iptables的 cluster IP功能解决。
cluster IP的做法是,在高可用组内,对交换机进行ARP欺骗,让交换机将tunnel IP的包组播给高可用组内的所有机器。
每一个机器会使用源IP算一个hash,命中自己的包会留下,其他包会丢弃。这样就把所有的连接均分到了不同的节点上面。
ipsec使用一个定制过的cluster IP module。它与原版cluster IP的区别是:
1,使用源IP加SPI做hash。
2. 不命中hash的包,在被丢弃前,会被用来维护standby child SA的ESP sequence number。 这样seq是实时同步,用来解决问题2)
节点之间通过HA plugin交互各种消息,包括heartbeat等。从而完成,同步,主备,failover等。
参考资料:
https://wiki.strongswan.org/projects/strongswan/wiki/HighAvailability
除了前边我整理的,篇首的两端对应一般问题描述,也值得阅读。
最新文章
- kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件
- 使用joi来验证数据模型
- zmNgFrameWork 架构升级ng1.5和md5静态资源缓存方案【angular1.x】
- ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets(转)
- oracle case when 在查询时候的用法。
- [汇编] 从键盘输入一个一位数字,然后响铃n声
- C#局域网聊天工具_UDP广播
- 多态VI的创建
- 【算法系列学习】Dijkstra算法变形 [kuangbin带你飞]专题四 最短路练习
- 【开源社交系统研发日记】利用 Docker 包 Laradock 服务器部署 Laravel &; ThinkSNS+ 等程序实战(多项目)
- java servlet的执行流程
- 201902<;<;百岁人生>;>;
- 即速应用_微信小程序开发 http://www.jisuapp.cn/
- vux安装中遇到的坑(转)
- pom.xml复制过来的代码报错-Maven expected START_TAG or END_TAG not TEXT (positionTEXT se
- 【Linux】shell数组
- 以中间件,路由,跨进程事件的姿势使用WebSocket--Node.js篇
- 《大象Think in UML》阅读笔记之二
- 微服务前端开发框架React-Admin
- Asp.Net 自定义 httpmodel 中间件 管道