zoukankan      html  css  js  c++  java
  • [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/24
            finance = 10.0.2.0/24
          }
        }

    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

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

  • 相关阅读:
    Python—Socket
    python-—计算器
    Python—I-O多路复用
    Python—redis
    《Python数据分析常用手册》一、NumPy和Pandas篇
    python--Selenium-模拟浏览器
    python--selenium简单模拟百度搜索点击器
    关于selenium实现滑块验证
    python 读写、创建 文件的方法(必看)
    Python 爬虫的工具列表大全
  • 原文地址:https://www.cnblogs.com/hugetong/p/10894758.html
Copyright © 2011-2022 走看看