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/目錄。

4. 幾個關鍵的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的配置,參考mozillacloudflare

配置以上3個值 ,就能利用加速卡,我們使用的型號DX2040, 效率是能降低CPU 10倍的使用率。
HTTPS QPS=6k, CPU使用率對比

上圖是一臺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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章