Railgun trong Cloudflare – Kết hợp Railgun với Load Balancer

Railgun trong Cloudflare dùng để tối ưu hóa đường truyền kết nối giữa server/vps của bạn với hạ tầng mạng của Cloudflare một cách nhanh nhất.

Railgun nén các object web không thể truy cập trước đây bằng cách tận dụng các kỹ thuật tương tự như các kỹ thuật được sử dụng để nén video chất lượng cao. Điều này có thể làm tăng hiệu suất lên rất cao.

Nếu bạn đang muốn sử dụng CloudFlare Railgun để tối ưu hóa thời gian tải của nội dung động (không được lưu trong bộ nhớ cache) và bạn hiện đang sử dụng bộ cân bằng tải, tường lửa hoặc NAT cho ứng dụng của mình. Vui lòng xem các cấu hình bên dưới và các thông số tốt nhất trong mỗi thiết lập.

Một origin, nhiều web servers, một Railgun listener.

(Dưới đây là cấu hình được khuyến cáo)

railgun trong cloudflare - v1

Mình khuyến cáo cài đặt Railgun client trước load balancer/firewall/NAT theo hình minh họa ở trên.

Khi đã kích hoạt Railgun client, bạn phải cấu hình railgun.conf địa chỉ IP public của server, nó được cài đặt trên (3.3.3.3) trong cấu hình activation.railgun_host. Cloudflare sẽ điều hướng tất cả yêu cầu thông qua rg-sende. Những nội dung không xử lý được từ edge servers của Cloudflare đến server này thay vì origin của bạn (1.1.1.1)

Mỗi yêu cầu được nhận bởi server ở 3.3.3.3 trên cổng 2045 sau đó sẽ được xử lý bởi rg-listener. Kiểm tra header và điều hướng đến địa chỉ IP của server origin của bạn theo hostname mà bạn đã cấu hình ở Cloudflare DNS. Địa chỉ IP được gửi từ rg-sender như một HTTP header – “CF-ORIGIN-IP”. rl-listener sẽ phân tích header và điều hướng yêu cầu đến server origin của bạn thông qua HTTP/S.

Lý do mà mình khuyến cáo theo cài đặt này là bởi vì Railgun, theo thiết kế, nó giữ một kết nối ổn định và được mã hóa trên cổng 2408. Sử dụng Railgun cho hạ tầng mạng sẽ mang lại giữ lại những chức năng sau như trước khi có Railgun:

  • Cho phép những load balancers (cân bằng tải) phân phối một cách chính xác những yêu cầu đến web servers
  • Cho phép tường lửa phân tích những lưu lượng mã hóa để đề phòng nguy cơ tiềm ẩn.
  • Cho phép một thiết bị NAT có thể xử lý những yêu cầu gửi đến.

Nếu kết nối đến rg-listener không thể được thiết lập từ Cloudflare edge servers. Cloudflare sẽ tự động fallback để gửi yêu cầu trực tiếp đến origin của bạn (1.1.1.1) thông qua HTTP 1.1. Chức năng nén nội dung động sẽ bị tạm ngưng.

Một origin, nhiều web servers, nhiều Railgun listeners.

Các bạn có thể đặt nhiều rg-listener sau load balancer và Railgun để tăng tốc cho nội dung động. Cài đặt này cung cấp khả năng xử lý lỗi bổ sung cho dịch vụ Railgun trong Cloudflare.

railgun trong cloudflare - v2

Để cấu hình này có thể hoạt động, bạn cần tạo một “Railgun Server” ở Cloudflare. Cài đặt rg-listener trên cả 3 web servers (2.2.2.1, 2.2.2.2, 2.2.2.3) và kích hoạt tất cả sử dụng chung một Railgun token.

Với mỗi file railgun.conf, bạn cũng cần chỉ định địa chỉ IP public của load balancer (1.1.1.1) trong ” activation.railgun_host”.

Cloudflare khuyến cáo rằng. Chỉ những sys admin và kỹ sư có kinh nghiệm mới nên sử dụng thiết lập này. Chỉ khi việc duy trì nén nội dung liên tục trong tình trạng xuống cấp là cấp thiết. Việc sử dụng Railgun sau Balancer/Firewall/NAT có thể:

  • Làm tăng độ phức tạp cho cấu hình các thiết bị mạng. Luồng inbound trên cổng 2408 cần phải được phân phối giữa các rg-listeners.
  • Ngăn cản một Load Balancer phân phối các yêu cầu chính xác. Tất cả các yêu cầu sẽ được chuyển hướng từ Load Balancer đến Railgun listener trong layer 4 (TCP). Lưu lượng truy cập không được mã hóa cho đến khi nó tới được servers.
  • Ngăn cản tường lửa khỏi việc phân tích những lưu lượng incomming. Tất cả những lưu lượng inbound từ Cloudflare đều được mã hóa với chứng chỉ của Railgun.
  • Cần nhiều tài nguyên của server hơn để phù hợp với việc chạy các Railgun listener trên clients.

Lưu ý rằng, tường lửa của server sẽ cần được chỉnh sửa để cho phép các lưu lượng inbound trên cổng 2408 . Phải đảm bảo kết nối với instance của memcached được thiết lập.

Hướng dẫn thiết lập cấu hình Railgun

Cài đặt Railgun phía sau load balancer yêu cầu file “railgun-nat.conf ” (trong thư mục Railgun) được chỉnh sửa. Đảm bảo rằng mỗi rg-listeners biết nơi cần chuyển hướng yêu cầu đến. Cấu hình mặc định mỗi client sẽ điều hướng yêu cầu đến “CF-ORIGIN-IP” (1.1.1.1) có thể không hoạt động. Nhưng nhiều khả năng bạn sẽ muốn yêu cầu được xử lý bởi máy chủ web trên cùng một máy chủ với rg-listener nhận yêu cầu.

railgun trong cloudflare - console

File railgun-nat.conf sẽ ghi đè lên các xử lý khác. Bạn có thể thêm vào hostname của bạn với địa chỉ IP phù hợp (trong ví dụ là localhost IP). Hoặc đơn giản là mở comment “default=127.0.0.1”. Giá trị “default” ở đây cho biết là bất kỳ yêu cầu nào cho hostname mà không được định nghĩa trong file sẽ được điều hướng tới IP này.

Cloudflare khuyến cáo rằng cần một memcached tập trung duy nhất được sử dụng bởi tất cả các máy chủ chạy rg-listener. Trong cấu hình cluster H/A cho thời gian hoạt động tối đa. Nhiều nhà cung cấp dịch vụ cung cấp các dịch vụ lưu trữ trong bộ nhớ có sẵn. Hỗ trợ memcached để bạn không phải xây dựng và duy trì cluster của riêng mình. Điều này giúp cải thiện tốc độ bộ đệm khi truy vấn rg-listener cho phiên bản được nén trước đó. Các memcached riêng biệt cho mỗi rg-listener cũng hoạt động nhưng hiệu quả của việc nén sẽ bị ảnh hưởng.

Cuối cùng, để đăng ký dịch vụ Railgun trong Cloudflare. Các bạn có thể vào link sau để biết thêm chi tiết cũng như giá thành: https://www.cloudflare.com/website-optimization/railgun

Have fun!

Write a comment