Làm cách nào tôi có thể cân bằng lưu lượng truy cập web đến giữa các máy chủ N apache?


12

Tôi đang tìm cách sử dụng một cái gì đó như Heartbeat / Squid / Varnish / etc để cân bằng lượng lưu lượng đến giữa các trường hợp apache nội bộ. Đây sẽ phải là phần mềm chứ không phải phần cứng vì tất cả nội dung của tôi đều chạy trên VPS. Tôi không có nhiều kinh nghiệm trong lĩnh vực này vì vậy xin lỗi nếu tôi sử dụng sai thuật ngữ và chọn sai gói.

Tôi đã rút ra một cái gì đó để minh họa những gì tôi đang theo đuổi. Phía màu xanh lá cây là thiết lập ban đầu sẽ trông như thế nào và bên màu xanh là giao diện sau khi thêm nhiều trường hợp apache do tăng lưu lượng truy cập. Đây có thể không phải là cách những thứ này hoạt động, nhưng lý tưởng nhất là tôi sẽ thêm IP của bộ cân bằng / s vào DNS của tên miền. Sau đó, bộ cân bằng sẽ thấy có bao nhiêu kết nối trên mỗi phiên bản apache (thông qua một số danh sách cấu hình của IP bên trong hoặc IP vĩnh cửu) và phân phối các kết nối như nhau. Trong màu xanh có một bộ cân bằng thứ hai vì tôi chắc chắn một lúc nào đó bộ cân bằng cũng sẽ cần sự giúp đỡ.

Có thể tôi đang sai về điều này, nhưng tôi đang tìm kiếm sự giúp đỡ về "cân bằng / s" nên là gì và thực hành tốt nhất về cách thiết lập chúng.

Bất kỳ sự trợ giúp nào đều sẽ là tuyệt vời. văn bản thay thế


1
tha thứ cho tôi nhưng bạn đã sử dụng chương trình nào cho bản vẽ của mình?
Giải thưởng

1
@Prix - Trông giống như visio ( office.microsoft.com/en-us/visio )
malonso

Câu trả lời:


4

Chỉ cần bất kỳ "proxy ngược" sẽ làm những gì bạn yêu cầu.

Ví dụ, Varnish, Pound và HAProxy đều giỏi trong những gì họ làm, nhưng họ cũng có những điểm khác biệt - tuy nhiên, đối với những gì bạn đang hỏi, bất kỳ ai trong số họ sẽ làm. Cá nhân, tôi nghĩ bạn sẽ tốt nhất với HAProxy, nhưng đó chỉ là dự đoán.

Bạn có thể tốt nhất nên đọc một bài viết về cân bằng tải để giúp bạn quyết định loại bạn cần: http://1wt.eu/articles/2006_lb/

Ngoài ra, bạn có thể cân nhắc sử dụng dịch vụ dựng sẵn cho việc này - như chạy phần mềm của bạn trên Đám mây điện toán đàn hồi của Amazon và sử dụng Cân bằng tải đàn hồi của họ.


2

Đầu tiên, có một câu hỏi quan trọng cần được trả lời:
bạn có cần các phiên người dùng được xử lý bởi (các) bộ cân bằng tải và luôn được điều khiển đến cùng một máy chủ web (nếu còn sống) không?

  • phiên không bắt buộc : trong trường hợp này, bạn nên sử dụng chương trình nginx hiệu quả làm bộ cân bằng tải. Cấu hình rất dễ cài đặt, về cơ bản bạn chỉ phải chỉ ra danh sách các máy chủ web trong một upstream upstream_name { server1, ..., serverN }câu lệnh, sau đó, đối với một miền nhất định, bạn cần một lệnh đơn giản proxy_pass upstream_name.
    Xem wiki Nginx .

  • phiên yêu cầu có một cài đặt tương tự cho bảng Anh , nơi bạn cho biết tên của cookie sẽ lưu trữ ID phiên ( ID MYCOOKIENAME), sau đó là danh sách BACKENDcho tất cả các máy chủ của bạn.
    Xem ví dụ thiết lập Pound mẫu .

Khi có nhu cầu về một số bộ cân bằng tải, bạn có thể muốn đi đến một heartbeatcấu hình, điều đó sẽ đảm bảo chỉ có một bộ cân bằng gắn IP ảo cho một miền nhất định, (nếu cần phiên, hoặc gắn cả hai và cung cấp DNS với hai địa chỉ IP cho ví dụ). Có lẽ điều này nên được chi tiết trong một câu hỏi khác tại thời điểm nó trở nên cần thiết (vì các công cụ phát triển nhanh chóng).
Xem thêm liên kết này chẳng hạn.


1

Bạn cần một lý do rất chính đáng để giới thiệu thêm độ phức tạp và một điểm thất bại duy nhất vào kiến ​​trúc của bạn.

Cân bằng tải Round-Robin

  • chi phí không có gì
  • đơn giản để thực hiện và quản lý
  • thực hiện chuyển đổi dự phòng tại máy khách - nơi duy nhất có thể được phát hiện một cách đáng tin cậy
  • ngầm hỗ trợ mối quan hệ máy chủ nhưng vẫn cho phép chuyển đổi dự phòng mà không gặp vấn đề về quản lý phiên liên quan đến phiên dính
  • không yêu cầu phần mềm / phần cứng / cấu hình bổ sung trên các nút cụm

Điều đó làm tôi ngạc nhiên về lượng thông tin sai lệch được đưa ra liên quan đến vòng tròn. Nếu tôi là một người hoài nghi, tôi có thể tự hỏi liệu có bất kỳ mối liên hệ nào với các nhà cung cấp, những người sản xuất phần cứng cân bằng tải đắt tiền.

Điểm duy nhất tôi sẽ thừa nhận là

  1. Địa chỉ IPV4 đang trở nên khan hiếm và do đó đắt đỏ - nhưng vẫn còn nhiều. rẻ hơn nhiều so với nói CSS của Cisco.

  2. Internet ngày càng chạy trên các dịch vụ web - và không phải tất cả các nhà phát triển đều triển khai hỗ trợ DNS theo thông số kỹ thuật . Nhưng mọi trình duyệt tôi từng sử dụng đều hoạt động như bình thường


"Không yêu cầu phần mềm bổ sung" - tốt, yêu cầu webapp có trạng thái phiên chia sẻ (đăng nhập, những gì trong giỏ hàng, v.v.). Và DNS RR có thể cân bằng tải không đồng đều trong thời gian dài. Đúng, DNS RR là một phương pháp khả thi, nhưng hầu như không vượt trội so với các lựa chọn thay thế ...
Jesper M


0

Đối với các bộ cân bằng, bạn có thể xem LVS tại http://www.linuxvirtualserver.org/ , có lẽ đang chạy ldirectord và heartbeat để điều hướng lưu lượng truy cập và thực hiện chuyển đổi dự phòng.


0

Nginx là một proxy tuyệt vời, tôi đã sử dụng nó rất thành công trong một cấu hình thực hiện 1M + hàng ngày


0

OK, điều này đã được hỏi một lúc trước, và tôi đến bữa tiệc muộn. Tuy nhiên, có một cái gì đó để thêm ở đây.

Jackie, bạn đã đóng đinh nó khá nhiều. Hình minh họa của bạn cho thấy cách cân bằng tải được xử lý trên hầu hết các cài đặt nhỏ hơn và trung bình.

Bạn nên đọc phần giới thiệu cân bằng tải của Willy Tarreau mà Nakedible liên kết đến. Nó vẫn còn hiệu lực, và đó là một giới thiệu tốt.

Bạn cần xem xét làm thế nào những điều này phù hợp với nhu cầu của bạn:

  • Bộ cân bằng tải cấp TCP / IP (Linux Virtual Server et al). Thấp nhất trên mỗi kết nối, tốc độ cao nhất, không thể "nhìn thấy" HTTP.
  • Bộ cân bằng tải mức HTTP (HAProxy, nginx, Apache 2.2, Pound, Microsoft ARR, v.v.). Chi phí cao hơn, có thể thấy HTTP, có thể gzip HTTP, có thể làm SSL, có thể thực hiện cân bằng tải phiên dính.
  • Proxy ngược HTTP (Máy chủ lưu lượng truy cập Apache, Varnish, Mực). Có thể lưu trữ các đối tượng có khả năng lưu trữ bộ đệm (một số trang web, css, js, hình ảnh) trong RAM và chuyển tiếp chúng đến các máy khách tiếp theo mà không liên quan đến máy chủ web phụ trợ. Có thể thường xuyên làm một số điều tương tự mà bộ cân bằng tải L7 HTTP làm.

có một bộ cân bằng thứ hai vì tôi chắc chắn một lúc nào đó bộ cân bằng cũng sẽ cần sự giúp đỡ.

Vâng, chắc chắn rồi. Nhưng cân bằng tải rất đơn giản và thường một bộ cân bằng tải có thể đi nhanh . Tôi liên kết đến bài viết này, điều gây chú ý trên web, như một ví dụ về hiệu suất của một máy chủ hiện đại có thể cung cấp. Đừng sử dụng nhiều LB trước khi bạn cần. Khi bạn cần một cách tiếp cận phổ biến là bộ cân bằng tải cấp IP ở phía trước (hoặc Robin Round Robin), đi đến bộ cân bằng tải cấp HTTP, đến máy chủ proxy & máy chủ web.

giúp đỡ về "cân bằng / s" nên là gì và thực hành tốt nhất về cách thiết lập chúng.

Điểm rắc rối là việc xử lý trạng thái phiên, và ở một mức độ nào đó trạng thái thất bại. Thiết lập các bộ cân bằng tải tương đối đơn giản.

Nếu bạn chỉ đang sử dụng 2-4 máy chủ webapp phụ trợ, việc băm tĩnh dựa trên địa chỉ IP gốc có thể khả thi. Điều này tránh sự cần thiết cho trạng thái phiên chia sẻ giữa các máy chủ webapp. Mỗi nút webapp nhìn thấy 1 / N lưu lượng tổng thể và ánh xạ từ khách hàng đến máy chủ là tĩnh trong hoạt động bình thường. Nó không phải là một phù hợp tốt cho cài đặt lớn hơn mặc dù.

Các hai thuật toán cân bằng tải tốt nhất, theo nghĩa rằng họ có hành vi lành tính theo tải trọng cao và phân phối tải thậm chí, là round robin và đúng cân bằng tải ngẫu nhiên. Cả hai yêu cầu này là ứng dụng web của bạn có trạng thái phiên toàn cầu có sẵn trên các nút webapp. Làm thế nào điều này được thực hiện phụ thuộc vào ngăn xếp công nghệ webapp; nhưng nói chung có các giải pháp tiêu chuẩn có sẵn cho việc này.

Nếu không băm tĩnh, cũng không phải trạng thái phiên chia sẻ phù hợp với bạn, thì lựa chọn nói chung là cân bằng tải ' phiên dính ' và trạng thái phiên trên mỗi máy chủ. Trong hầu hết các trường hợp, điều này hoạt động tốt, và nó là một lựa chọn hoàn toàn khả thi.

bộ cân bằng sẽ xem có bao nhiêu kết nối trên mỗi phiên bản apache (thông qua một số danh sách cấu hình của IP bên trong hoặc IP vĩnh cửu) và phân phối các kết nối như nhau

Vâng, một số trang web sử dụng này. Có nhiều tên cho nhiều thuật toán cân bằng tải khác nhau tồn tại. Nếu bạn có thể chọn vòng tròn ngẫu nhiên hoặc vòng tròn ngẫu nhiên (hoặc vòng tròn có trọng số, ngẫu nhiên có trọng số) thì tôi khuyên bạn nên làm như vậy, vì những lý do nêu trên.

Điều cuối cùng: Đừng quên rằng nhiều nhà cung cấp (F5, Cisco và các nhà cung cấp khác trên Coyote Point và Kemp Technologies cao cấp với mức giá hợp lý hơn) cung cấp các thiết bị cân bằng tải trưởng thành .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.