‫Trước khi chúng tôi mở rộng các dịch vụ của mình để bắt đầu chạy trên một loạt các nút và tất cả các dịch vụ đang nói
‫chuyện với nhau, chúng ta hãy xem xét một vài khái niệm mới mà Swarm đưa ra bàn.
‫Cái đầu tiên là một trình điều khiển mạng mới có tên là Overlay và bạn thực sự chỉ cần tạo một
‫mạng như bạn
‫đã quen với việc tạo nó, tạo mạng docker và bạn đặt một lớp phủ --driver.
‫Điều đó giống như về cơ bản là tạo ra một mạng cầu nối trên toàn bộ Swarm nơi các vùng chứa trên các máy
‫chủ trên cùng một mạng ảo có thể truy cập lẫn nhau giống như chúng trên một VLAN.
‫Điều này chỉ dành cho giao tiếp trong bầy đàn.
‫Trình điều khiển lớp phủ không đóng một lượng lớn lưu lượng truy cập vào bên trong, vì nó đang cố gắng
‫có một cái nhìn tổng thể về mạng để bạn không liên tục làm rối tung các cài đặt mạng trên
‫các nút riêng lẻ.
‫Bạn cũng có thể kích hoạt mã hóa toàn bộ mạng bằng cách sử dụng IP mảnh SEC, nơi nó sẽ thực sự thiết lập các đường hầm IPSec
‫giữa tất cả các nút khác nhau trong nhóm của bạn.
‫Nhưng nó tắt theo mặc định thực sự chỉ vì lý do hiệu suất.
‫Khi tạo dịch vụ của mình, bạn có thể thêm chúng vào không có mạng Lớp phủ hoặc một hoặc nhiều mạng Lớp phủ.
‫Nó thực sự phụ thuộc vào thiết kế của ứng dụng của bạn.
‫Bạn biết đấy, rất nhiều thiết kế truyền thống sẽ có cơ sở dữ liệu trên mạng phụ trợ và
‫máy chủ Web trên mạng giao diện người dùng. Sau đó, có thể bạn sẽ có một API giữa hai thứ sẽ nằm trên cả hai mạng
‫hoặc một cái gì đó tương tự.
‫Và bạn hoàn toàn có thể làm được điều đó trong Swarm.
‫Hãy xem điều này trong hành động. Điều tôi muốn làm là tôi muốn cho bạn
‫thấy nó sẽ như thế nào nếu chúng tôi triển khai ví dụ Drupal từ nhiệm vụ trước đó với Cơ sở dữ liệu Postgres, dưới dạng các dịch vụ, sau
‫đó tạo mạng Lớp phủ để chúng nói chuyện với nhau.
‫Trước tiên, chúng ta cần tạo một mạng, vì vậy, hãy tạo mạng docker và điều này không thay đổi đối với
‫Swarm ngoài việc chúng ta sẽ sử dụng một trình điều khiển mới.
‫Tôi sẽ gọi nó là mydrupal.
‫ĐƯỢC RỒI.
‫Vì vậy, tôi sẽ tạo một mạng docker và bạn sẽ thấy tôi có một lớp phủ mới. Đường xâm nhập ở đó theo mặc định.
‫Bạn cũng sẽ thấy một mạng mới bởi vì một bầy, thực sự là một mạng gửi đi mà chúng ta không cần phải làm
‫gì cả.
‫Vì vậy, hãy tạo dịch vụ Postgres của chúng tôi ... dịch vụ docker tạo tên ... chúng ta hãy gọi nó là mạng psql.
‫Chúng tôi sẽ kết nối nó với mạng mydrupal.
‫Thực sự có hoàn thành tab trên tên mạng.
‫Sau đó, hãy nhớ rằng tôi cần thêm vào đó biến môi trường cho mật khẩu Postgres.
‫Vì vậy, chúng tôi có thể kết nối với nó sau này.
‫Sau đó, chúng ta sẽ sử dụng hình ảnh Postgres. Có vẻ tốt.
‫Bạn sẽ nhận thấy ở đây rằng chúng tôi không tải xuống toàn bộ hình ảnh và tất cả những thứ đó, bởi vì các dịch vụ không thể
‫chạy ở nền trước, vì chúng phải thông qua trình điều phối và lập lịch. Vì vậy, chúng ta có thể thực hiện
‫một dịch vụ docker ls, và chúng ta có thể thấy rằng một trong số chúng đang chạy.
‫Nếu chúng ta thực hiện một psql dịch vụ docker, chúng ta có thể thấy rằng nó thực sự đang chạy trên Node 1.
‫Vì vậy, tôi có thể thực hiện psql bản ghi của docker container và sau đó tôi có thể xem nhật ký của nó.
‫Chuẩn rồi. Có vẻ như nó đang chạy.
‫Được rồi.
‫Hãy tạo dịch vụ khác của chúng tôi, vì vậy tôi sẽ tiếp tục
‫và chỉ cần gọi nó là drupal.
‫Chúng tôi cũng cần phải gắn vào cùng một mạng. Sau đó, chúng tôi muốn xuất bản cổng 80:80 giống như
‫chúng tôi đã làm với lệnh chạy docker. Và chúng tôi sẽ sử dụng hình ảnh Drupal.
‫ĐƯỢC RỒI.
‫Chúng ta có thể thấy rằng nó đang bắt đầu từ đó.
‫Có một mẹo nhỏ. Bạn thực sự có thể sử dụng lệnh watch trong Linux để xem. Về cơ bản nó
‫sẽ ... những gì nó làm là nó chạy đi chạy lại một lệnh. Nó được cài đặt theo mặc
‫định trên Ubuntu.
‫Nếu bạn chỉ đặt đồng hồ trước ls dịch vụ docker, nó sẽ tiếp tục chạy hai giây một lần theo mặc định cho
‫đến khi ... à, thấy không?
‫Bây giờ chúng tôi có từng cái một.
‫Được rồi, và sau đó tôi sẽ kiểm soát c ra khỏi đó. Chúng ta có thể thực hiện
‫dịch vụ docker ps drupal và thấy rằng drupal thực sự đang chạy trên Node 2.
‫Chúng tôi có cơ sở dữ liệu đang chạy trên Node 1.
‫Chúng tôi có trang web Drupal đang chạy trên Node 2.
‫Vì vậy, làm thế nào để họ biết làm thế nào để nói chuyện với nhau?
‫Vâng, bằng cách sử dụng các tên dịch vụ.
‫Nếu tôi dán vào một trong các địa chỉ IP, địa chỉ đó sẽ xuất hiện trong quá trình cài đặt Drupal. Và nếu tôi cho nó biết cơ sở dữ liệu ở đây,
‫tên cơ sở dữ liệu, chúng tôi sẽ thực hiện lại
‫postgres, postgres, mật khẩu của tôi.
‫Đối với máy chủ lưu trữ, giống như khi chúng ta sử dụng Soạn thư, chúng ta đã tạo tên dịch vụ trong tệp Soạn, ở đây, chúng ta sẽ
‫sử dụng tên dịch vụ mà chúng ta đã tạo cho máy chủ cơ sở dữ liệu. Vì vậy, đó là psql.
‫Về cơ bản, màn hình này cho chúng ta biết rằng nó có thể nói chuyện với cơ sở dữ liệu qua các
‫nút và thiết lập hệ thống.
‫Đó là điều tuyệt vời về Overlay là nó thực sự hoạt động giống như mọi thứ trên cùng một mạng con.
‫Được rồi.
‫Vì vậy, chúng tôi không cần điều này nữa.
‫Tôi sẽ kết thúc nhanh chóng ví dụ này chỉ để cho bạn thấy điều thú vị tiếp theo về Swarm. ĐƯỢC RỒI.
‫Bây giờ, trang web này đang chạy. Nhưng tôi có ba nút, vậy làm cách nào để biết nút nào sẽ
‫ở trên và cổng nào tôi cần đảm bảo rằng DNS của tôi trỏ đến khi tôi tạo tên trang web này?
‫Trong trường hợp của tôi, tôi có ba địa chỉ IP và tôi có thể sao chép cả ba địa chỉ đó và đưa cả ba
‫địa chỉ IP
‫đó vào và ... ối... Tôi đã nhận sai ở đó.
‫Vì vậy, nếu bạn thấy, có vẻ như trang web đang chạy trên cả ba nút vì tôi đang xem cả
‫ba địa chỉ IP.
‫Nhưng nếu tôi đến đây và thực hiện dịch vụ ps drupal này, tôi biết nó chỉ đang chạy nút 2.
‫Tôi thậm chí có thể thực hiện kiểm tra dịch vụ docker và thấy rằng thực sự nó chỉ có một địa chỉ IP trên mạng lớp
‫phủ đó ... ngay tại đây.
‫Vì vậy, tại sao nó lại phản hồi trên cả ba máy chủ?
‫Điều đó dẫn chúng tôi đến tính năng mới, tiếp theo của chúng tôi.