SSL加速卡的使用,对HTTPS 七层负载机的性能提升
SSL加速卡使用,编译驱动
一、编译驱动
1. 厂家提供2个SDK包,SDK与Drive,要自行编译。
DX_SDK_v2.2.2L_PUBLIC_20151225.tar.gz
DX_SDK_v2.2.2L_EXAR_20151225.tar.gz
要先解压PUBIBC包,make and make install后,
在同样的目录解压EXAR包,再make and make install。
原因是2个包都有Makefile,而exar要使用public编译出来的.o文件与头文件进行编译、链接。
2.依赖内核头文件与库:
yum install kernel-devel.x86_64 -y
# 先删除无用链接
rm /usr/lib/modules/3.10.0-514.el7.x86_64/build -f
# 再建一个软链接文件,注意此时前后版本号是不一样。
ln -s /usr/src/kernels/3.10.0-693.11.6.el7.x86_64 /usr/lib/modules/3.10.0-514.el7.x86_64/build
tar -xf DX_SDK_v2.2.2L_EXAR_20151225.tar.gz
make && make install
tar -xf DX_SDK_v2.2.2L_PUBLIC_20151225.tar.gz
make && make install
# install 后配置文件只是的个ln软链,最好是copy到etc目录下:
rm -f /etc/exar/driver.cfg.xml
sudo cp -f driver.cfg.xml /etc/exar/driver.cfg.xml
由于上面提到kernel-devel包与实际运行中的内核版本不一样,需要update kernel并重启:
yum update kernel -y
# reboot 注释,防你copy直接粘帖运行了。
重启后,在SDK的编译目录下,直接 sudo sh Load # Load文件是在编译包中的厂家加裁脚本
lsmod | grep dre_drv
# 或 modinfo dre_drv.ko查看是否加载成功
3. 编译openssl驱动–厂家提供
mkdir dx_openssl_engine ; cd dx_openssl-engine
tar -xf openssl_engine-2.0.0-20140516.tar.gz # 厂家提供的包#修改Makefile中几个目录变量:OPENSSL_INCLUDE_PATH := /usr/include/openssl/OPENSSL_LIB_PATH := /usr/lib64/openssl/engines/OPENSSL_DYN_ENGINE_PATH := /usr/lib64/openssl/engines/#由于我的系统使用的正好是openssl-1.0.2k版本,所以可以修改为系统目录。
#如果是下载源码编译,使用记得使用shared选项编译:./config shared --prefix=/usr/local/openssl-1.0.0k
# 再修改Makefile中变量路径。结果会编译出 eng_dx.so 这样一个动态库,会安装到/usr/lib64/openssl/engines/目录。
二. 几个关键的nginx配置
# 指定使用芯片厂家的引擎 eng_dx
ssl_engine eng_dx;ssl_prefer_server_ciphers on;
#设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件。
#此值默认是off话,客户端会使用SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256# 列出服务端支持的握手加密套件优先级:
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384;
#
# 一定要注意这个ssl_ciphers值的配置,配置不当,会引起浏览器报错[ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY]
# 由于加速卡说明书中,是对AES128的性能最高的,这里我稍把AES128相关的算法顺序调整在前面。
关于ssl_ciphers的配置,参考mozilla 或 cloudflare
配置以上3个值 ,就能利用加速卡,我们使用的型号DX2040, 效率是能降低CPU 10倍的使用率。
上图是一台32核服务器,当HTTPS QPS=6k时, CPU使用率对比,红框CPU接近60%,蓝框使用了加速卡后,CPU降到6~7%之间。nginx只是简单的proxy_pass到后端的http服务。
读到这里,读者有一个疑问,如果不使用加速卡,光配置:
ssl_protocols TLSv1.2 TLSv1.1 TLSv1 SSLv3;ssl_prefer_server_ciphers on;ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS:!DH:!EDH;
会否同样能降低CPU?
实际就是 把 ssl_engine eng_dx; 注释就可以测出结果 。
按我注释过的测试结果 ,是不能降CPU。
三、机器重启后,重新加载驱动的坑
官方的驱动DX_SDK_v2.2.2L_EXAR_20151225.tar.gz,解压,编译(make),安装 (make instll),3个常规步骤,外加一个 解压 出来 Load脚本,即加载驱动 。
但,在系统重启后要先Load 再make install; 原因可能是Makefile中定义对install行为会inmod 模块到内核。
需要如下执行:
sh Load # 这个Load
make install
SSL加速卡的使用,对HTTPS 七层负载机的性能提升相关推荐
- 使用nginx作为HTTPS正向代理服务器(七层透传代理、中间人代理)
[前言] 在讲解nginx正向代理https之前,我们先来解答几个小疑问. 1.nginx是什么? Java同学肯定知道apache服务器,一个很牛,但是也很庞大的web服务器.能当web服务器的不仅 ...
- f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?
年后至今这段时间工作重心都在调整公司现有API Gateway的系统架构以及对现有技术栈选型.经过对主流互联网网关所实现各种方案的调研,我们在API Gateway前置一层接入层,接入层主要用于实现限 ...
- 京东数科七层负载 | HTTPS硬件加速 (Freescale加速卡篇)
京东数科JDDLB作为京东数科最重要的公网流量入口,承接了很多重要业务的公网流量.目前,已完全接替商业设备F5承载所有的流量,并在数次618.双十一大促中体现出优越的功能.性能优势. 一.京东数科JD ...
- OSI七层 TCP/IP四层 TCP/IP协议栈: 不同的通信协议的大集合
应用层: 网络服务与最终用户的一个接口. 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP 表示层: 数据的表示.安全.压缩.(在五层模型里 ...
- FastDFS蛋疼的集群和负载均衡(十五)之lvs四层+Nginx七层负载均衡
###Interesting things lvs+nginx的拓扑图 准备环境,基于上一篇[Diary Report 2018-1-3]关于FastDFS蛋疼的集群和负载均衡(十三)之LVS-DR环 ...
- 四层和七层负载均衡的区别介绍--转
简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均 ...
- 网络中的七层协议与TCP/IP五层模型
socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...
- 网络协议入门(OSI七层和TCP/IC四层协议)
Android网络知识 Android作为一个移动端操作系统,是一定会涉及到网络知识的,会用不是我们的目标,深入了解其中的原理才是能让我们提升的根本. 1.关于网络传输 首先,在互联网中任何的数据传输 ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
最新文章
- 别光发Paper,搞点实际问题
- AlphaGo Zero,一次成功的炒作而已?
- Redis学习(2)-redis安装
- 统一修改文件下所有图片大小 Python3
- 【杂谈】如何在言有三本人的随时答疑下, 长期而系统地学习深度学习和计算机视觉,这是有三AI的完整计划...
- 《nodejs+gulp+webpack基础实战篇》课程笔记(四)-- 实战演练
- Iterator和ListIterator接口的使用和区别
- 2007年10月小记
- 1044. 火星数字(20)
- [转] 三种Python下载url并保存文件的代码
- 倒了血霉!先是贾跃亭后有罗永浩,被拖欠4400多万,最惨公司无疑了
- SAP License:搽皮鞋的提示
- sql 查询手动创建的表_学习SQL:使用SQL查询手动创建报告
- OpenCV身份证离线识别技术实战(一)
- Java设计模式—观察者模式
- 这家伙有点懒,还没有个性签名 :) --工具篇03
- 如何利用计算机打印较大的字,Word打印技巧:打印大字-word技巧-电脑技巧收藏家...
- 解决本地网络适配器的驱动程序可能出现问题(未连接,连接可用或连接不可用)
- modbus寄存器、功能码、报文结构解析
- unity 创建自己的像素地图 TileMap