问题描述:

原生的基于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

除了前边我整理的,篇首的两端对应一般问题描述,也值得阅读。

最新文章

  1. kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件
  2. 使用joi来验证数据模型
  3. zmNgFrameWork 架构升级ng1.5和md5静态资源缓存方案【angular1.x】
  4. ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets(转)
  5. oracle case when 在查询时候的用法。
  6. [汇编] 从键盘输入一个一位数字,然后响铃n声
  7. C#局域网聊天工具_UDP广播
  8. 多态VI的创建
  9. 【算法系列学习】Dijkstra算法变形 [kuangbin带你飞]专题四 最短路练习
  10. 【开源社交系统研发日记】利用 Docker 包 Laradock 服务器部署 Laravel & ThinkSNS+ 等程序实战(多项目)
  11. java servlet的执行流程
  12. 201902<<百岁人生>>
  13. 即速应用_微信小程序开发 http://www.jisuapp.cn/
  14. vux安装中遇到的坑(转)
  15. pom.xml复制过来的代码报错-Maven expected START_TAG or END_TAG not TEXT (positionTEXT se
  16. 【Linux】shell数组
  17. 以中间件,路由,跨进程事件的姿势使用WebSocket--Node.js篇
  18. 《大象Think in UML》阅读笔记之二
  19. 微服务前端开发框架React-Admin
  20. Asp.Net 自定义 httpmodel 中间件 管道

热门文章

  1. 【2B设计】途牛商旅全案设计
  2. 【JS新手教程】JS获取当前星期几的几种方法
  3. easyui datagrid 让某行复选框置灰不能选
  4. 【Leetcode_easy】892. Surface Area of 3D Shapes
  5. luffy项目搭建流程(Django前后端分离项目范本)
  6. composer安装扩展包异常
  7. Maven工具-简介
  8. 网络爬虫基本概念与Scrapy工具包使用
  9. ZooKeeper 相关问题
  10. [转帖]“腾百万”之后,腾讯的云操作系统VStation单集群调度达10万台