Điểm:1

Sử dụng luân phiên nhiều IP cho các kết nối gửi đi trên một giao diện

lá cờ us

vấn đề của tôi: Tôi có một quy trình tạo hơn 10k Kết nối TCP tới cùng một IP & Cổng đích mỗi giây. Sau một khoảng thời gian ngắn, không thể tạo kết nối mới nào nữa vì không còn cổng nguồn nào nữa.

Tôi đã cố gắng giảm thiểu điều này bằng cách thiết lập net.ipv4.ip_local_port_rangenet.ipv4.tcp_fin_timeout nhưng nó không giải quyết được vấn đề.

Bây giờ suy nghĩ của tôi là: Nếu tôi có thể yêu cầu hạt nhân làm tròn các Địa chỉ IP nguồn, thì tôi có thể dễ dàng thêm nhiều IP hơn vào một giao diện của mình và do đó có giới hạn kết nối gửi đi cao hơn.

Tôi đã thử thêm nhiều tuyến đến cùng một đích thông qua cùng một giao diện nhưng chỉ định các IP nguồn khác nhau:

tuyến ip thêm mặc định qua 10.1.1.1 dev eth0 src 10.1.1.10
tuyến ip thêm mặc định qua 10.1.1.1 dev eth0 src 10.1.1.11

Nhưng tôi nhận được RTNETLINK trả lời: Tệp tồn tại.

Tôi có đang đi đúng hướng ở đây không? Việc thêm một IP nguồn khác có phải là "họ nên làm" trong những trường hợp đó không?

Có cách nào để làm tròn cân bằng/cân bằng tải việc sử dụng IP nguồn thông qua kernel không?

Hy vọng của tôi là, trong trường hợp tôi quản lý để đặt hai tuyến đường có cùng trọng số nhưng khác địa chỉ src vào cùng một mạng, hạt nhân sẽ làm tròn điều đó.

(Bối cảnh: Tôi đang chạy HAproxy trên máy đó và phải cân bằng tải hơn 10 nghìn kết nối tới một máy chủ phụ trợ)

Điểm:3
lá cờ iq

Không dễ dàng thông qua hạt nhân, không.

Tôi đang chạy HAproxy trên máy đó và phải cân bằng tải hơn 10 nghìn kết nối tới một máy chủ phụ trợ

Bạn có thể yêu cầu haproxy sử dụng một địa chỉ IP nguồn cụ thể cho các kết nối gửi đến máy chủ, ví dụ:

  ứng dụng máy chủ1_s1 10.0.1.1:80 nguồn 10.1.1.10
  máy chủ app1_s2 10.0.1.1:80 nguồn 10.1.1.11
  máy chủ app2_s1 10.0.1.2:80 nguồn 10.1.1.10
  máy chủ app2_s2 10.0.1.2:80 nguồn 10.1.1.11
lá cờ us
Điều đó ít nhất sẽ ngăn chặn vấn đề của tôi, vì vậy cảm ơn vì điều đó cho đến nay :) Hy vọng của tôi là để kernel xử lý việc đó, nhưng nếu điều đó là không thể, thì tôi sẽ thực hiện điều đó. Khi bạn nói "Không dễ dàng thông qua kernel, không.", điều đó có nghĩa là, không có cách nào dễ dàng, hay nó có nghĩa là, thực sự không có cách nào cả? Tôi thực sự không thích thực tế là sau đó tôi phải xác định mọi máy chủ phụ trợ hai lần, nhưng tôi sẽ giải quyết vấn đề này với HAProxy và đặt một yêu cầu tính năng để thêm nhiều hơn một IP nguồn vào một dòng máy chủ/vào một khối cấu hình phụ trợ.
lá cờ iq
đó là điều tôi nhớ và có sẵn trên các sản phẩm khác - khả năng chỉ định nhiều địa chỉ hoặc một dải địa chỉ để sử dụng ở đây thay vì một địa chỉ duy nhất.
Điểm:2
lá cờ za

Bạn vẫn không. net.ipv4.ip_local_port_range là đủ ngay cả với cài đặt mặc định. Vì vậy, tôi cá là bạn có hơn 10 nghìn kết nối hoặc bạn chẩn đoán sai.

Xem, các "ipsrc:cổng ipdst:cổng" bộ tứ là duy nhất trong toàn bộ ngăn xếp IP của máy và vì tổng số cổng trong ngăn xếp mạng là 65536, điều này mang lại cho bạn khả năng có 65536 kết nối theo lý thuyết. Được rồi, chúng tôi đã trừ đi khối WKS (-1024), nhưng điều này vẫn mang lại cho bạn 55536 kết nối bị giả mạo net.ipv4.ip_local_port_range. Bạn chỉ cần sử dụng các IP/giao diện bổ sung nếu bạn cần nhiều hơn thế.

Và thường thì vấn đề này được giải quyết bằng cách thêm nhiều IP máy khách hơn và/hoặc IP máy chủ nếu đích cũng nằm trong ngăn xếp của bạn hoặc bằng cách sử dụng nhiều bảng định tuyến nếu không.

lá cờ us
Tôi có 10 nghìn kết nối mới mỗi giây và chúng tồn tại khá ngắn. Nhưng: Khi các kết nối bị đóng (theo như tôi hiểu), chúng sẽ chuyển sang trạng thái TIME_WAIT. Vì vậy, chúng không thể sử dụng được trong 60 giây. Và đó là lý do tại sao tôi dường như cũng sử dụng hết `net.ipv4.ip_local_port_range` đã tinh chỉnh :/ Máy chủ không thực sự nằm trong ngăn xếp của tôi, vì vậy tôi không có tùy chọn để thực hiện các điều chỉnh. Đó là lý do tại sao tôi muốn sử dụng tùy chọn sử dụng nhiều địa chỉ IPv4 trên cùng một giao diện và để cân bằng tải hạt nhân giữa các địa chỉ đó
drookie avatar
lá cờ za
Tổng số lượng kết nối quan trọng, không chỉ những kết nối ĐÃ THIẾT LẬP. Kết nối là một kết nối bất kể trạng thái của nó.
lá cờ us
Vâng, tôi nhận thức được điều đó. Và do số lượng kết nối vượt quá số cổng khả dụng, ngay cả sau khi điều chỉnh `net.ipv4.ip_local_port_range`, tôi vẫn đang tìm cách đạt được sự cân bằng nhân giữa nhiều IP nguồn trên một giao diện một cách lý tưởng. (Vì tôi không thể chỉnh sửa bất cứ thứ gì ở phía máy chủ) Chỉ khi hạt nhân không thể làm điều đó, tôi mới chọn tùy chọn khác để HAProxy tự xử lý nhiều IP nguồn.

Đă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.