‫Vì vậy, một chút ma thuật thực sự không phải là ma thuật. Đó là Lưới định tuyến. Lưới định tuyến là một mạng đến
‫hoặc đi vào phân phối các gói cho dịch vụ của chúng tôi cho các tác vụ cho dịch vụ đó, bởi vì chúng tôi
‫có thể có nhiều hơn một tác vụ.
‫Điều này thực sự kéo dài tất cả các nút và nó sử dụng các nguyên thủy Kernel đã tồn tại một thời gian
‫thực sự được gọi là IPVS.
‫Vì vậy, chúng tôi không nói về một số dịch vụ mới lạ. Chúng tôi thực sự chỉ đang
‫nói về các tính năng cốt lõi của Nhân Linux. Những gì nó thực sự đang làm ở đây là cân bằng tải trên
‫tất cả các nút và lắng nghe lưu lượng truy cập trên tất cả các nút.
‫Có một số cách chúng ta có thể nói về cách hoạt động của nó.
‫Ví dụ đầu tiên là từ vùng chứa này sang vùng chứa khác.
‫Nếu hệ thống phụ trợ của chúng tôi, chẳng hạn như cơ sở dữ liệu, được tăng lên thành hai bản sao, các giao diện người dùng nói chuyện với các
‫phụ trợ, sẽ không
‫thực sự nói chuyện trực tiếp với địa chỉ IP của chúng.
‫Họ thực sự sẽ nói chuyện với một thứ gọi là VIP, hoặc IP ảo, mà Swarm đặt trước tất cả
‫các dịch vụ.
‫Đây là một IP riêng bên trong mạng ảo của Swarm và nó đảm bảo rằng tải được phân phối giữa tất cả
‫các tác vụ cho một dịch vụ.
‫Vì vậy, nếu bạn có thể tưởng tượng nếu bạn có một vai trò công nhân trong ứng dụng của mình và nó có 10 vùng chứa khác nhau, bạn không cần phải
‫đặt một bộ cân bằng tải trước điều đó.
‫Điều này làm điều đó cho bạn.
‫Khi bạn đang nói về lưu lượng truy cập từ một dịch vụ bên trong mạng ảo của mình nói chuyện với một dịch vụ khác
‫bên trong mạng ảo của bạn.
‫Và ví dụ thứ hai về cách lưới định tuyến hoạt động là lưu lượng truy cập bên ngoài vào nhóm của bạn thực sự
‫có thể chọn để truy cập bất kỳ nút nào trong nhóm của bạn.
‫Bất kỳ nút công nhân nào cũng sẽ mở cổng đã xuất bản đó và lắng nghe lưu lượng truy cập của vùng chứa đó, sau đó
‫nó sẽ định tuyến lại lưu lượng truy cập đó đến vùng chứa thích hợp dựa trên cân bằng tải của nó.
‫Điều này có nghĩa là khi bạn đang triển khai các vùng chứa trong một bầy, bạn không cần phải quan tâm đến
‫máy chủ của nó vì nó có thể di chuyển, phải không?
‫Nếu một vùng chứa không thành công và nhiệm vụ được tạo lại bởi bầy, nó có thể đặt nó vào một nút khác. Và bạn chắc chắn không muốn phải thay đổi tường
‫lửa xung quanh hoặc cài đặt DNS của mình để làm cho vùng chứa đó hoạt động
‫trở lại.
‫Lưới định tuyến giải quyết rất nhiều vấn đề đó bằng cách cho phép trang web Drupal của chúng tôi trên cổng 80 có
‫thể truy cập được từ bất kỳ nút nào trong nhóm. Và ở chế độ nền, nó lấy các gói đó từ máy
‫chủ đó rồi định tuyến chúng đến vùng chứa. Nếu nó nằm trên một nút khác, nó sẽ định tuyến nó
‫qua các mạng ảo.
‫Nếu nó nằm trên cùng một nút, nó sẽ chỉ định tuyến lại đến cổng của vùng chứa đó.
‫Và chúng tôi không phải làm bất cứ điều gì để kích hoạt điều này.
‫Đây là tất cả ra khỏi hộp.
‫Hãy xem sơ đồ về cách thức hoạt động của điều này.
‫Nếu tôi tạo một dịch vụ dạng tin tức và tôi bảo nó có ba bản sao. Và nó tạo ra ba nhiệm
‫vụ, với ba vùng chứa, trên ba nút. Bên trong mạng lớp phủ đó, nó thực sự tạo ra một IP ảo được
‫ánh xạ tới tên DNS của dịch vụ, phải không? Và dịch vụ, theo mặc định, tên DNS, là tên của dịch
‫vụ.
‫Trong trường hợp này, tôi đã tạo một dịch vụ có tên là web của tôi và bất kỳ vùng chứa nào khác mà tôi có trong
‫mạng lớp phủ của mình cần giao tiếp với dịch vụ đó bên trong nhóm, họ
‫chỉ phải lo lắng về việc sử dụng DNS web của tôi. IP ảo tải đúng cách sẽ trả lại lưu
‫lượng truy cập giữa tất cả các tác vụ trong dịch vụ đó.
‫Đây không thực sự là DNS Round Robin. Đó thực sự là một cấu hình hơi khác. Chúng tôi có thể kích
‫hoạt điều đó nếu chúng tôi muốn. Thực tế có một tùy chọn để sử dụng DNS Round Robin.
‫Lợi ích của các VIP so với Round Robin là rất nhiều lần các bộ nhớ cache DNS bên trong ứng dụng của chúng tôi ngăn
‫chúng tôi phân phối tải đúng cách.
‫Thay vì chiến đấu với các máy khách DNS của chúng tôi trong cấu hình DNS, chúng tôi chỉ dựa vào VIP,
‫giống như những gì bạn sẽ có nếu mua một bộ cân bằng tải phần cứng chuyên dụng.
‫Trong ví dụ thứ hai, điều này thực sự cho thấy nó sẽ như thế nào khi có lưu lượng truy cập bên
‫ngoài.
‫Điều này tương tự như những gì chúng tôi vừa làm với Drupal, nơi khi tôi tạo các hộp màu vàng đó, bằng cách tạo
‫một dịch vụ, được gọi là web của tôi, và nó tạo ra hai tác vụ và áp dụng chúng cho hai nút khác nhau, mỗi một trong những nút đó
‫có một -trong bộ cân bằng tải trên địa chỉ IP bên ngoài. Đối với tôi, vì tôi đang sử dụng DigitalOcean nên địa chỉ
‫IP đó là địa chỉ mà DigitalOcean đã cấp cho tôi. Khi tôi sử dụng -p và xuất bản nó trên một
‫cổng, trong ví dụ này, nó đang sử dụng cổng 80:80, mọi lưu lượng truy cập đến bất kỳ nút nào trong ba
‫nút này đều truy cập vào bộ cân bằng tải trên cổng 80:80. Bộ cân bằng tải quyết định vùng chứa nào sẽ nhận được lưu lượng truy cập và
‫lưu lượng truy cập đó có nằm trên nút cục bộ hay không, hay nó cần gửi lưu lượng truy
‫cập qua mạng đến một nút khác.
‫Một lần nữa, điều này thực sự xảy ra trong nền mà không có bất kỳ nỗ lực đặc biệt nào từ phía chúng tôi.
‫Được rồi. Hãy xem Lưới định tuyến này hoạt động.
‫Chúng ta đã xem ví dụ với Drupal và cách nó lắng nghe trên cả ba nút.
‫Nhưng điều gì sẽ xảy ra nếu chúng ta có nhiều tác vụ mà bộ cân bằng tải đó hoạt động.
‫Nếu chúng tôi tạo một dịch vụ docker,
‫những gì chúng tôi sẽ làm là, chúng tôi sẽ sử dụng một vùng chứa Elasticsearch. Chúng tôi sẽ gọi nó là tìm kiếm và cung
‫cấp cho nó ba bản sao. Và muốn xuất bản nó trên cổng 9200, đó là cổng mặc định của nó.
‫Trong trường hợp này, chúng tôi chắc chắn muốn có: 2 trong đó vì đây là phiên bản dễ triển
‫khai nhất ngay bây giờ. Trong khi đang tạo, tôi sẽ
‫chỉ đề cập rằng Elasticsearch thực sự là một cơ sở dữ liệu tìm kiếm có thể truy cập thông qua API web
‫JSON.
‫Vì vậy, nó thực sự dễ dàng để đánh xoăn và cho chúng ta những ví dụ điển hình về cách hoạt động của cách này.
‫Tôi thực hiện tìm kiếm ps dịch vụ docker, chúng ta có thể thấy rằng nó được tạo một cách thông minh cho mỗi tác vụ trên một nút khác nhau.
‫Nếu tôi chỉ thực hiện một vòng trên máy chủ cục bộ của mình, trên nút một trên cổng 9200 vì tôi đã xuất bản cổng đó,
‫tôi sẽ lấy lại thông tin cơ bản về Elasticsearch. Một phần là nó sẽ thực sự tạo ra một tên ngẫu
‫nhiên.
‫Đó chỉ là một tính năng của Elasticsearch.
‫Nếu tôi cuộn nó nhiều lần, bạn sẽ thấy trên cái này là Patch, máy chủ Patch, và sau
‫đó là
‫lần thứ ba, Jane Foster, và sau đó nó sẽ bắt đầu lặp lại như vậy.
‫Đó thực sự là IP ảo hoạt động như một bộ cân bằng tải và phân phối tải của tôi qua
‫ba tác vụ.
‫Thêm một số lưu ý về lưới định tuyến. Trong 17. 03, đó là bản phát hành mà tôi đang cho bạn
‫xem điều này, lưới định tuyến và cân bằng tải hiện là bộ cân bằng tải không trạng thái.
‫Nếu bạn đã từng xử lý Trạng thái bên trong có thể là bộ cân bằng tải cổ điển của Amazon hoặc các công nghệ cân bằng
‫tải khác, bạn biết điều này là gì.
‫Về cơ bản, điều này nói lên rằng nếu bạn phải sử dụng cookie phiên trên ứng dụng của mình hoặc nó yêu cầu một vùng chứa
‫nhất quán đang nói chuyện với một khách hàng nhất quán, thì bạn có thể cần thêm một số thứ khác để giúp giải
‫quyết vấn đề đó.
‫Ngoài ra, mỗi khi bạn nhấn một dịch vụ với nhiều tác vụ, nó sẽ cho bạn một kết quả có
‫khả năng khác.
‫Ngoài ra, nếu bạn tìm hiểu chi tiết về điều này, nó thực sự là một bộ cân bằng tải lớp 3 và thực
‫sự hoạt động ở lớp IP và lớp cổng.
‫Nó không thực sự hoạt động ở lớp DNS.
‫Nếu bạn đã từng chạy nhiều trang web trên cùng một cổng, trên cùng một máy chủ, thì điều này sẽ không làm được điều
‫đó.
‫Bạn vẫn sẽ cần một mảnh ghép khác trên
‫đó nếu bạn thực sự muốn chạy nhiều trang web trên cùng một cổng, trên cùng một nhóm.
‫May mắn thay, đó là một yêu cầu khá phổ biến và bạn có thể thực hiện một số tùy chọn để giải quyết cả
‫hai vấn đề này.
‫Một trong số đó là sử dụng Nginx hoặc HAProxy, có những ví dụ khá tốt về các vùng chứa sẽ nằm trước lưới định tuyến của
‫bạn và thực sự hoạt động như một bộ cân bằng tải trạng thái hoặc một lớp cho bộ cân bằng tải, cũng có thể thực
‫hiện bộ nhớ đệm và rất nhiều thứ khác. Nếu bạn cần, bạn có thể muốn kiểm tra
‫một số trong số đó trong các tài nguyên của phần này.
‫Tôi cũng nên đề cập rằng nếu bạn phải trả tiền cho một đăng ký phiên bản Docker Enterprise, đi kèm với nó là một thứ
‫gọi là UCP hoặc Trung tâm dữ liệu Docker, là một giao diện web. Nhưng tôi nên đề cập đến phiên bản Docker Enterprise, nếu
‫bạn đăng ký phiên bản đó cho các nút bầy đàn của mình, nó thực sự đi kèm với một
‫lớp tích hợp cho proxy web cho phép bạn chỉ cần đưa tên DNS vào cấu hình web của các dịch vụ bầy đàn của
‫bạn và mọi thứ chỉ hoạt động.