[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
除了前边我整理的,篇首的两端对应一般问题描述,也值得阅读。
[dev][ipsec][distributed] strongswan如何做热迁移/高可用/High Availability的更多相关文章
- Mysql+Keepalived双主热备高可用操作记录
我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...
- 使用Keepalived实现Nginx的自动重启及双主热备高可用
1.概述 之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下. 1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服 ...
- mysql+keepalived 双主热备高可用
理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互 ...
- [dev][ipsec][dpdk] strongswan/dpdk源码分析之ipsec算法配置过程
1 简述 storngswan的配置里用一种固定格式的字符串设置了用于协商的预定义算法.在包协商过程中strongswan将字符串转换为固定的枚举值封在数据包里用于传输. 协商成功之后,这组被协商选中 ...
- hb_gui配置heartbeat做MariaDB的高可用
系统平台:CentOS release 6.5 (Final) Kernel:2.6.32-431.el6.x86_64 一.启动hb_gui hb_gui & 添加资源组 添加MySQL_I ...
- 华为云计算IE面试笔记-FusionCompute虚拟机热迁移定义,应用场景,迁移要求,迁移过程
*热迁移传送了什么数据?保存在哪? 虚拟机的内存.虚拟机描述信息(配置和设备信息).虚拟机的状态 虚拟机的配置和设备信息:操作系统(类别.版本号).引导方式(VM通过硬盘.光盘.U盘.网络启动)和引导 ...
- Mysql双主热备+LVS+Keepalived高可用操作记录
MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...
- Mysql双主热备+LVS+Keepalived高可用部署实施手册
MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.然而MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负 ...
- KVM虚拟机的热迁移---Live Migration
KVM虚拟机的热迁移---Live Migration: 服务器虚拟化技术是当前的热点,而虚拟机的“热迁移(Live Migration)”技术则是虚拟机的运行状态完整保存下来,同时可以快速的回复到原 ...
随机推荐
- Python - Django - session 的基本使用
urls.py: from django.conf.urls import url from app02 import views urlpatterns = [ # app02 url(r'^app ...
- WINDOWS配置WSUS。
wsus的注册表文件! Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows ...
- LODOP统计table自动分页后的每页的某列合计值
LODOP中超文本会根据打印项高度或超过纸张,自动分页.(相关博文:Lodop打印控件 超文本自动分页.LODOP中ADD_PRINT_TABLE.HTM.HTML表格自动分页测试.Lodop打印表格 ...
- MySQL报错argument out of range 1055解决办法
参考:https://www.cnblogs.com/liangbenstudy/p/10246895.html MySQL 5.7.22查询时候报错 argument out of range 报错 ...
- python解析本地HTML文件
Python使用爬虫技术时,每运行一次,本地都会访问一次主机.为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可.现在我来分享一下爬取资料 ...
- django2.x报错No module named 'django.core.urlresolvers'
解决方法如下 from django.urls import reverse 最近从django1.9迁移到django2.0中出现一个意外的报错: No module named 'django.c ...
- Python13之元组(带上枷锁的列表)
一.元组定义 元组一旦建立,元组内的元素不允许修改和删除,这就是元组和列表最大的区别 当元组中仅有一个元素时,需要将元素后面加上逗号,或者不用括号也可以. tuple1 = (12,3234,5435 ...
- python第二天---字符串的魔法
# "adcbdefg" # "a" # 判断某个东西是否在里面包含 in | not in # name = "abcdefg" # # ...
- 网络编程 - 端口 & 地址占用
1.设置地址复用(还可以设置端口复用): int enable=1; if (setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&iEnable,size ...
- 去除echarts饼状图的引导线
series: { name: "流量占比分布", type: "pie", radius: ["40%", "60%" ...