15
บรการเว็บไซต์ SSL ด้วยโปรแกรม HAproxy Load - balancer (Pass - through SSL และ SSL offloading) 1

SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

บริการเว็บไซต์ SSL ด้วยโปรแกรม HAproxy Load-balancer (Pass-through SSL และ SSL offloading)

1

Page 2: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

บริการเว็บขนานใหญ่ในยุคปัจจุบัน

2

Private Public

Opensource

Page 3: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy

• Frontend เครื่องแม่ข่ายเว็บส่วนหน้า ติดตั้งโปรแกรม Haproxy

• Backend เครื่องแม่ข่ายส่วนหลัง ติดตั้งแม่ข่ายบริการเว็บ

3

Page 4: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

โปรแกรม HAproxy

จากเว็บไซต์ http://www.haproxy.org/ รุ่นปัจจุบันคือ 1.8 และ 1.9(ก าลังพัฒนา) โครงสร้างของเว็บแบบ Large scale ซ่ึงถูกเรียกว่า Load balancer

4

Page 5: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การใช้งาน Haproxy ร่วมกับ SSL

เนื่องจากเว็บไซต์ขนาดใหญ่ปัจจบุันพัฒนามาถึงการบริการเฉพาะ HTTPS หรือการเข้ารหัสด้วย SSL ด้วยรูปแบบที่นิยมคือ

• SSL-offload ส าหรับ Haproxy แบบ Reverse proxy

• SSL-passthrough ส าหรับ Haproxy แบบ Reverse proxy

5

Page 6: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การท างาน Haproxy ร่วมกับ SSL-offload

ออกแบบให้ Frontend ติดตั้ง HAproxy ท าหน้าที่เข้ารหัส และส่งค าขอเว็บจริงหรือข้อมูลจริงของเว็บไปยังแม่ข่ายเว็บจริงส่วนหลัง การทดสอบเลือกใช้ H2load เพ่ือร้องขอหน้าเว็บแบบ HTTPS

6

Nginx HTTP/2

Nginx HTTP/2

Nginx HTTP/2

Backend

HAproxy

Frontend

Port 81

H2load benchmark

HTTP/2+SSL

SSL-offload

Page 7: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การท างาน Haproxy ร่วมกับ SSL-offload

….frontend www-https

bind haproxy_www_public_IP:443 ssl crt /etc/ssl/private/example.com.pem

reqadd X-Forwarded-Proto:\ https

default_backend www-backend

backend www-backend

redirect scheme https if !{ ssl_fc }

server www-1 www_1_private_IP:80 check

server www-2 www_2_private_IP:80 check

7

Page 8: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การท างาน Haproxy ร่วมกับ SSL-passthrough

รูปแบบ SSL-passthrough เป็นการก าหนด SSL ให้กับแม่ข่ายเว็บที่ใช้ไฟล์ SSL key เดียวกัน โดยก าหนดให้จาก HAproxy ไปสู่เครื่องแม่ข่ายเว็บผ่านพอร์ต 443

8

Nginx HTTP/2

Nginx HTTP/2

Nginx HTTP/2

Backend

HAproxy

FrontendPort 443

H2load benchmark

HTTP/2+SSL

SSL-passthrough

Page 9: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การท างาน Haproxy ร่วมกับ SSL-passthrough

….frontend www-https

bind *:443

option tcplog

mode tcp

default_backend www-backend

backend www-backend

balance roundrobin

option ssl-hello-chk

server www-1 www_1_private_IP:443 check

server www-2 www_2_private_IP:443 check

9

Page 10: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

การวัดประสิทธิภาพการให้บริการ

น าเว็บไซต์ตัวอย่างจากหนา้เว็บ https://freshdesignweb.com/ustora/ จ านวน 16 หน้า เพ่ือใช้สร้างเป็นภาระงาน Workload เพ่ือใช้โปรแกรม H2load แบบ multiple page เรียกเข้าสู่เว็บไซต์

10

Page 11: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

ค่าเวลาเฉล่ียในการตอบสนองหน้าเว็บ Bootstrap

SSL-passthrough มีเวลาตอบสนองที่ดีกว่า SSL-offload ด้วยเส้นกราฟ เมื่อเพ่ิมจ านวนลูกข่าย

11

100 200 300 400 500SSL-passthrough 208.21 409.81 554.81 715.88 1,019.33SSL-offload 192.01 513.71 670.15 963.13 1,055.13

-

200.00

400.00

600.00

800.00

1,000.00

1,200.00av

erag

e la

tenc

y tim

e (m

s)

Page 12: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

ค่าแบนด์วิดธ์ของบริการเว็บ Bootstrap

SSL-passthrough ให้ค่าแบนด์วิดธ์คงที่ทุกจ านวนลูกข่าย และให้ค่าที่สูงกว่า SSL-offload ที่มีค่าไม่คงที่

12

100 200 300 400 500SSL-passthrough 301.40 302.00 312.24 312.02 310.27SSL-offload 302.38 216.13 223.03 199.64 275.99

-

50.00

100.00

150.00

200.00

250.00

300.00

350.00Ba

ndwi

dth

(MB/

s)

Page 13: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

ค่าปริมาณการให้บริการเว็บ Bootstrap

ส าหรับปริมาณการร้องขอหน้าเว็บ พบว่ามีค่าคงที่ส าหรับ SSL-passthrough ซ่ึง SSL-offload ให้ผลลัพธ์แตกต่างตามจ านวนลูกข่าย

13

100 200 300 400 500SSL-passthrough 4,109.87 4,066.70 4,268.93 4,213.75 4,089.63SSL-offload 4,123.33 2,910.55 3,049.30 2,696.08 3,637.77

-

500.00

1,000.00

1,500.00

2,000.00

2,500.00

3,000.00

3,500.00

4,000.00

4,500.00

Perfo

rman

ce (R

eq/s

)

Page 14: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

บทสรุป

SSL-offload

ประสิทธิภาพของ SSL-offload การรวมศูนย์ของการเข้ารหัสไว้ ณ HAproxy ซ่ึงมีผลกระทบที่ส าคัญคือ ท าให้มีการใช้ CPU บนเครื่องส่วนหน้าสูงกว่าปกติ

SSL-passthrough

จ าเป็นต้องแยกการเข้ารหัส SSL ไว้บนเครื่องแม่ข่ายเว็บ และลดภาระของ HAproxy ส่วนหน้าได้อย่างชัดเจนและเพ่ิมประสิทธิภาพแบนด์วิดธ์ได้เต็มที่

14

Page 15: SSL ด้วยโปรแกรม - WUNCA · Private Public Opensource. บริการเว็บไซต์แบบแบ่งภาระงาน HAproxy •Frontend

ค าถาม/ข้อเสนอแนะ

15