keepalived https健康检查性能优化

本文探讨了线上环境中LVS使用keepalived进行https健康检查时遇到的CPU利用率高问题。主要原因是SSL连接的握手阶段消耗过多资源。通过线下测试,优化后CPU使用率显著下降,但每隔300秒因后端Nginx SSL session超时导致CPU飙升,这提示我们需要调整session超时设置以维持稳定性能。

       转载请注明出处: http://blog.csdn.net/hliyuxin/article/details/43018309

       之前线上LVS如果https健康检查的rs 配置较多,会出现cpu利用率高的问题。通过工具测试发现,整个https健康检查过程中,cpu耗时主要发生在SSL_connect()函数上,也就是握手阶段。

      下面我们来看ssl协议,主要有以下几个步骤:
1. Client -> Server:Client Hello
2. Server -> Client:Server Hello, Certificate, Server Hello Done
3. Client -> Server:Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
4. Server -> Client:Change Cipher Spec, Encrypted Handshake Message
5. Client -> Server:Application data
6. Server -> Client:Application data
      在这几个阶段中,算法复杂度最高的就是第3步,这一步也是整个ssl协议中的关键,这一步是客户端使用服务器的公钥加密,将生成的会话密钥传给服务器。这个加密方式是非对称加密算法(RSA或DH),非对称加密有致命的缺点就是加解密效率太低,很少应用在实际通信中应用,所以SSL协议只在握手阶段使用,用于协商传输阶段的对称密钥。
所以,要提高https健康检查的性能,首先需要减少交换会话密钥的动作,因为ssl会话有reuse的功能,所以我们对每个rs的健康检查,保存一个ssl_session的数据结构,每次通讯尽量reuse上一次发起健康检查的session。

      在线下环境进行了测试,keepalived使用rr算法,配置2540个rs,使用https健康检查。测试结果如下:


       图中可以看出,CPU使用率在优化之后有了很大的改善,但是隔300s又有一次飙高,这是由于后端nginx中ssl session的默认超时时间是5min, 超时之后要重新协商key, 引发cpu升高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值