Tôi có một loạt các câu hỏi liên quan đến ssl, phiên địa phương và cân bằng tải dường như được kết nối với nhau, vì vậy tôi xin lỗi trước về độ dài của câu hỏi này.
Tôi có một trang web sử dụng các phiên dựa trên tệp. Bản chất của trang web là hầu hết là http, nhưng một số phần là ssl. Hiện tại, do các phiên dựa trên tệp, nên cần có bất kỳ yêu cầu ssl nào truy cập vào cùng một máy chủ như mọi yêu cầu http trước đó.
Do hạn chế về thời gian, tôi muốn làm điều dễ nhất có thể để tải cân bằng tăng lưu lượng truy cập http và ssl.
Dường như có 2 tùy chọn cho các thuật toán cân bằng tải dính:
- dựa trên ip
- dựa trên cookie
Giải pháp dựa trên ip có thể sẽ hoạt động, nhưng thuật toán băm sẽ có khả năng thay đổi máy chủ mà người dùng truy cập khi máy chủ ngừng hoạt động hoặc được thêm vào, điều không mong muốn với thiết lập phiên dựa trên tệp hiện tại. Tôi cũng cho rằng về mặt kỹ thuật, người dùng có thể thay đổi ips một cách hợp pháp trong khi duyệt trang web.
Thuật toán dựa trên cookie có vẻ tốt hơn, nhưng không thể kiểm tra cookie khi được mã hóa bằng ssl dường như có vấn đề riêng của nó.
Tôi đã tìm hiểu các ví dụ về cách tải ssl cân bằng và dường như tôi không thể tìm thấy bất kỳ ví dụ rõ ràng nào về các thiết lập có thể thực hiện cân bằng tải dựa trên cookie VÀ có thể xử lý tải ssl tăng bằng cách thêm một bộ giải mã ssl khác.
Hầu hết các ví dụ rõ ràng tôi đã thấy có bộ giải mã ssl (thường là phần cứng, apache_mod_ssl hoặc nginx) nằm giữa trình duyệt máy khách và bộ cân bằng tải. Các ví dụ thường có vẻ như thế này (được sửa đổi từ http://haproxy.1wt.eu/doad/1.3/doc/arch architecture.txt ):
192.168.1.1 192.168.1.11-192.168.1.14 ------- + ----------- + ----- + ----- + ----- + | | | | | + - + - + + - + - + + - + - + + - + - + + - + - + + | LB1 | | Một | | B | | C | | D | + ----- + + --- + + --- + + --- + + --- + apache 4 máy chủ web giá rẻ mod_ssl haproxy
Phần giải mã ssl trong ví dụ trên dường như là một nút cổ chai tiềm năng không thể mở rộng theo chiều ngang.
Tôi đã xem haproxy và dường như có tùy chọn 'mode tcp' sẽ cho phép một cái gì đó như thế này, cho phép bạn có nhiều bộ giải mã ssl:
haproxy | ------------- | | ssl-decoder-1 ssl-decoder2 | | ------------------- | | | web1 web2 web3
Tuy nhiên, trong thiết lập như vậy, có vẻ như bạn sẽ mất ip máy khách vì haproxy không giải mã được ssl: https://cloud-support.engineyard.com/discussions/probols/335-haproxy-not-passing-x-forwarded -cho
Tôi cũng đã xem nginx và tôi cũng không thấy bất kỳ ví dụ rõ ràng nào về bộ giải mã ssl có thể mở rộng theo chiều ngang. Dường như có nhiều ví dụ về những người có nginx là một nút cổ chai tiềm năng. Và ít nhất liên kết này dường như gợi ý rằng nginx thậm chí không có tùy chọn thiết lập giống như haproxy, nơi bạn sẽ mất ip bằng cách nói rằng nginx "không hỗ trợ chuyển các kết nối TCP trong suốt sang phụ trợ" Cách vượt qua Apache Lưu lượng SSL nginx proxy? .
Câu hỏi:
- Tại sao dường như không có nhiều ví dụ về các thiết lập thêm nhiều bộ giải mã ssl để đối phó với lưu lượng truy cập tăng?
- Có phải vì bước giải mã ssl chỉ là một nút cổ chai về mặt lý thuyết và thực tế mà nói, một bộ giải mã về cơ bản sẽ là đủ ngoại trừ các trang web có lưu lượng vô lý?
- Một giải pháp khả thi khác xuất hiện trong đầu có lẽ là bất kỳ ai có nhu cầu ssl tăng cao như vậy cũng có một cửa hàng phiên tập trung, do đó, máy khách sẽ truy cập vào máy chủ nào theo yêu cầu tuần tự. Sau đó, bạn có thể kích hoạt mod_ssl hoặc tương đương trên mọi máy chủ web.
- Giải pháp haproxy được trích dẫn ở trên dường như hoạt động (bên cạnh vấn đề IP của máy khách), nhưng có ai gặp phải một giải pháp cân bằng tải phần mềm dựa trên cookie dính sẽ hoạt động bằng cách tăng số lượng bộ giải mã trong khi giữ IP của máy khách, hoặc có lẽ về mặt kỹ thuật thì không có thể (vì bạn phải giải mã yêu cầu lấy IP của máy khách, trong trường hợp đó, chúng tôi có nút cổ chai giải mã).
Giả sử rằng tất cả những gì tôi nói là đúng, những điều này dường như là lựa chọn của tôi:
- sử dụng băm ip (xấu cho người dùng có khả năng thay đổi hợp pháp ips và cho các tình huống thêm và thả máy chủ)
- sử dụng nginx hoặc mod_ssl làm chương trình đầu tiên chạm vào yêu cầu ssl, đây sẽ là một nút cổ chai giải mã ssl tiềm năng
- sử dụng haproxy làm chương trình đầu tiên chạm vào yêu cầu ssl, đạt được khả năng mở rộng ssl ngang, nhưng không có ips được ghi ở cấp máy chủ web cho các yêu cầu ssl (có thể tạm thời ok)
- trong thời gian dài hơn, hãy tiến tới một cửa hàng phiên di động hoặc tập trung, làm cho các phiên dính không cần thiết