Điểm:0

Làm cách nào để thiết lập HAProxy cho hơn 500.000 kết nối chạy bên trong Docker Container trên máy chủ Linux?

lá cờ br

Tôi muốn HAProxy Load Balancer của mình có thể xử lý ít nhất 1 triệu kết nối. Tôi cần điều này để triển khai một bài kiểm tra căng thẳng.

Tôi đã thử thiết lập:

maxconn 1000000

trong tôi haproxy.cfg nhưng HAProxy không khởi động được với:

[haproxy.main()] Không thể tăng giới hạn FD lên 2000029, giới hạn là 1048576.

Tôi đang chạy HAProxy trong Bộ chứa Docker trên Ubuntu Linux 20.04 LTS, phiên bản VPS Amazon AWS Lightsail.

Tôi đã xem nhiều câu hỏi khác nhau trên internet về cách tăng thủ công mở tập tin giới hạn (ulimit -n) và sao chép nhiều cấu hình đã dán vào Máy chủ của tôi. Không có gì hiệu quả - tôi không thể tăng giới hạn này lên bất kỳ thứ gì cao hơn 1048576.

Tôi đã tìm thấy các bài đăng liên quan sau đây về chủ đề giới hạn cứng đối với số lượng tệp đang mở:

Câu hỏi này có vẻ gần giống với câu hỏi của tôi:

Tôi đang tiếp cận vấn đề từ góc độ sai? Có cách nào khác để định cấu hình HAProxy để nó có thể xử lý một triệu kết nối (nghĩa là không tăng ulimit -n)?

Gerard H. Pille avatar
lá cờ in
Không có. Tiêu đề câu hỏi của bạn cho biết "hơn 500000", điều này dường như là có thể, nhưng không phải là gấp đôi.Bạn có nhận ra rằng với 1 triệu tệp đang mở, máy chủ của bạn sẽ bị đóng băng? Bạn có biết cần bao nhiêu bộ nhớ cho một kết nối TCP/IP không?
lá cờ br
Tôi đang xem [bài viết này](https://www.freecodecamp.org/news/how-we-fine-tuned-haproxy-to-achieve-2-000-000-concurrent-ssl-connections-d017e61a4d27/# haproxy-configuration) trong đó họ đặt `maxconn` thành 2.000.000. Các hệ thống mà họ chạy haproxy trên đó có 30GB RAM trở lên.
Gerard H. Pille avatar
lá cờ in
Họ không sử dụng vùng chứa trên máy chủ đám mây phải không?
Điểm:0
lá cờ br

Dung dịch

Các mở tập tin giới hạn có thể tăng.

… giới hạn cứng cho mỗi quá trình được đặt thành 1048576 theo mặc định nhưng có thể đã thay đổi bằng cách sử dụng hệ thống "fs.nr_open". Từ: Hướng dẫn quản lý HAProxy | 5. Các giới hạn của bộ mô tả tệp

Tôi đã vấp phải một tài nguyên hữu ích về cách tăng fs.nr_open. Đây là những gì tôi đã làm (trên máy chủ của mình):

# 0. ssh vào phiên bản đám mây của tôi

# 1. chuyển sang root
sudo su -
# 2. tăng giới hạn
sysctl -w fs.nr_open=2010000
# 3. lưu các thay đổi và thoát
sysctl -p
lối ra
# 4. bây giờ bạn đã quay lại vỏ người dùng; bạn cần đăng nhập lại
# từ shell này để các thay đổi có hiệu lực
lối ra

Lưu ý rằng những thay đổi được thực hiện không tồn tại sau khi khởi động lại. Nếu ai đó biết cách làm điều đó, vui lòng cho tôi biết và tôi sẽ chỉnh sửa câu trả lời của mình.

Tôi cũng cần nói với Docker rằng có thể mở hơn 1.048.576 tệp trong vùng chứa. Tôi đang sử dụng tệp Docker Compose để xác định các dịch vụ của mình. Tôi chỉ cần thêm đoạn mã sau vào docker-compose.yml:

dịch vụ:
  Ủy quyền:
    hình ảnh: haproxy
    # Bắt đầu đoạn trích
    giới hạn:
      không có tập tin:
        mềm: 2005000
        cứng: 2005000
    # Kết thúc đoạn trích
    #...
#...

Cuối cùng nhưng không kém phần quan trọng, hãy đảm bảo rằng phiên bản máy chủ có ít nhất 2GB RAM, nếu không bạn sẽ hết bộ nhớ khi cố gắng chạy proxy. Nếu bạn thực sự muốn xử lý 1 triệu yêu cầu bằng proxy của mình, bạn sẽ cần nhiều bộ nhớ hơn - khoảng từ 20 đến 30 GB - vui lòng tự kiểm tra. Nếu bạn biết cách tính giới hạn, vui lòng chỉnh sửa câu trả lời của tôi hoặc đăng nhận xét dưới đây!

Cơ sở lý luận về số lượng tệp đang mở

Nếu chúng tôi cần 2.000.029 tệp đang mở cho 1 triệu kết nối, thì hãy:

  • đặt giới hạn vùng chứa proxy cao hơn một chút: 2.000.029 + 4971 = 2.005.000
    • đặt giới hạn Hệ điều hành máy chủ cao hơn một chút: 2.005.000 + 5000 = 2.010.000
Gerard H. Pille avatar
lá cờ in
Bạn có biết Jeff sẽ tính bạn bao nhiêu cho việc đó không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.