‫Được rồi, bây giờ chúng ta đã tìm hiểu tất cả về quy mô Swarm với mạng và lưới định tuyến lớp phủ, tôi muốn
‫bạn thực sự trải qua quá trình tạo tài sản hoặc đối tượng mà bạn cần triển khai
‫trong kịch bản Swarm.
‫Vì vậy, chúng tôi không còn sử dụng lệnh docker run nữa, nhưng mạng và khối lượng
‫giống nhau nhưng hơi khác một chút.
‫Tôi muốn cung cấp cho bạn một kịch bản trong thế giới thực về một ứng dụng nhiều tầng và chúng tôi sẽ sử dụng Ứng dụng bỏ phiếu phân
‫tán của Docker.
‫Nó thực sự được gọi là Ứng dụng bỏ phiếu mẫu.
‫Bạn có thể đã thấy nó trong các bài phát biểu của Docker, hoặc trong các phòng thí nghiệm hoặc hướng dẫn khác.
‫Đó là một ứng dụng khá phổ biến và tôi nghĩ, đó là một ứng dụng tuyệt vời, bởi vì nó có ít nhất năm vai trò đối với nó hoặc các
‫vùng chứa khác nhau mà bạn cần triển khai.
‫Và tất cả chúng đều phục vụ một chức năng đặc biệt và chúng thực sự đang làm những thứ thực sự hoạt động, thực sự làm
‫những gì nó phải làm.
‫Vì vậy, bạn có thể chơi với nó và nó có các thành phần kiến trúc phân tán, rất điển hình như giao diện
‫người dùng web và chương trình phụ trợ
‫công nhân, và giá trị khóa trong cơ sở dữ liệu. Tôi nghĩ rằng nó thực sự hữu ích để làm. Trong trường hợp này, bạn sẽ
‫sử dụng thư mục swarm-app-1. Nó thực sự nằm trong repo khóa học của chúng tôi. Trong đó không có
‫gì ngoài một readme và một hình ảnh. Từ readme đó, bạn sẽ cần tạo khối lượng và một vài mạng và
‫năm dịch vụ cần thiết để ứng dụng này hoạt động đầy đủ.
‫Nó có thể giúp bạn thử một số lệnh này cục bộ hoặc thực sự viết chúng trong trình soạn thảo văn bản của bạn và sắp xếp chúng, bởi
‫vì chúng sẽ hơi phức tạp, phải không. Khi bạn tạo dịch vụ docker
‫đó, bạn sẽ phải kết nối nó với một mạng cụ thể, mở các cổng và gọi nó bằng một cái
‫tên cụ thể và sử dụng một hình ảnh cụ thể. Vì vậy, có thể dễ dàng hơn để chỉnh sửa nó cục bộ và sau đó chỉ
‫cần cắt và dán vào shell của bạn, cho dù Swarm của bạn ở đâu.
‫Nhưng đó chỉ là tôi.
‫Mọi thứ sẽ sử dụng hình ảnh Docker Hub vì trong quá trình sản xuất Swarm, bạn không muốn xây dựng.
‫Đó không phải là một quy trình bạn muốn trên Swarm sản xuất của mình, điển hình.
‫Thông thường, bạn muốn xây dựng công trình của mình thông qua một số dịch vụ trực tuyến tự động
‫như Docker Hub hoặc Docker Cloud hoặc một nơi nào đó trong đường dẫn CI / CD của bạn không ăn tài nguyên trên Swarm sản xuất của bạn.
‫Trong trường hợp này, chúng ta có thể tưởng tượng rằng hình ảnh của chúng ta đang được xây dựng ở nơi khác
‫và được lưu trữ trên Docker Hub và chúng ta chỉ cần kéo chúng xuống, cho dù phiên bản mới nhất là gì, vào Swarm của chúng ta.
‫Và tôi sẽ chỉ nói điều này, giống như nhiều thứ trong Khoa học Máy tính, đây là một nửa khoa học, một nửa hình thức nghệ thuật.
‫Các lệnh của bạn có thể theo các lệnh hoàn toàn khác hoặc có các lệnh tùy chọn hoàn toàn khác với lệnh của tôi.
‫Bạn có thể gọi các mạng của mình là những thứ khác nhau.
‫Tốt rồi.
‫Kết quả cuối cùng là ứng dụng hoạt động, chúng có thể nói chuyện với nhau theo cách thích hợp,
‫rằng bạn đã xuất bản tất cả các cổng và bạn đã có dữ liệu được bảo vệ trong một ổ đĩa.
‫Hãy xem nhanh những gì bạn đang chống lại.
‫Hãy tưởng tượng bạn đang phải thiết kế các lệnh và kiến trúc cho việc này.
‫Và đây là những gì nhà phát triển sẽ cung cấp cho bạn đã viết ứng dụng này.
‫Trong trường hợp này, có lẽ rất nhiều nhà phát triển đã viết ứng dụng này, phải không?
‫Bởi vì chúng tôi thực sự có một giao diện người dùng web bằng Python nên chúng tôi có một phần mềm phụ trợ
‫Web đang chạy trong Node.
‫Chúng tôi có một quy trình công nhân đang chạy. NET và sau đó chúng tôi đã có một kho lưu trữ giá
‫trị khóa Redis và một cơ sở dữ liệu PostgreSQL.
‫Đây thực sự là điều tôi thấy ngày càng thường xuyên hơn, nơi các nhóm khác nhau đang viết các phần khác nhau của
‫một giải pháp và họ có thể chỉ cần chọn ngôn ngữ mà họ nghĩ là tốt nhất cho tình huống đó.
‫Và trong thế giới của các thùng chứa, loại ứng dụng này thực sự tỏa sáng. Bởi vì tất cả các ứng dụng của chúng tôi đều
‫được phân đoạn, về
‫mặt kỹ thuật, chúng vẫn có thể chạy trên cùng một máy nhưng tất cả chúng đều được bảo vệ lẫn
‫nhau để bạn không bị Node xung đột với các phụ thuộc vào Python hoặc bất cứ thứ gì.
‫Bạn cũng sẽ nhận thấy ở đây luồng lưu lượng truy cập và ứng dụng bỏ phiếu không có, nhưng nó sẽ
‫có một mũi tên nhỏ xuất hiện rằng đây là nơi người dùng sẽ đến trong phần ứng dụng
‫bỏ phiếu.
‫Và bạn có thể thấy rằng ứng dụng bỏ phiếu thực sự phải đẩy phiếu bầu của bạn cho ứng dụng này, bằng cách này,
‫bạn sẽ bỏ phiếu cho mèo và chó.
‫Nó sẽ đẩy điều đó vào Redis và sau đó nhân viên sẽ thực sự kiểm tra hệ thống Redis
‫để tìm bất kỳ thứ gì trong hàng đợi và sau đó đẩy kết quả vào Postgres, sau đó sẽ được hiển thị
‫trên phần phụ trợ WebSockets thực sự cập nhật trực tiếp khi bạn biểu quyết.
‫Nếu chúng ta thực sự nhanh chóng vào Thư mục, tôi đã đưa một số ghi chú vào đây để giúp bạn trong quá
‫trình thực hiện vì có một số điều hơi khác và mới.
‫Tuy nhiên, khu vực dịch vụ sẽ được viết giống như được viết từ một người biết ứng dụng của họ nhưng thực sự không
‫biết cách triển khai điều này trong Docker. Và đó là một kịch bản khá phổ biến.
‫Bạn có thể thấy rằng trong các dịch vụ mà tôi đã liệt kê hình ảnh nào bạn cần triển khai, tên
‫thực tế mà bạn cần đặt cho nó, bởi vì chúng rất quan trọng.
‫Thật không may, đây là những hình ảnh được mã hóa khó cho những cái tên mà họ sẽ tìm kiếm trên mạng.
‫Lý tưởng nhất là bạn muốn các ứng dụng mà bạn có thể định cấu hình nhanh cho những gì chúng cần làm đối với tên, nhưng trong
‫trường hợp này, cuộc bỏ phiếu sẽ đặc biệt tìm kiếm một bản ghi DNS có tên là redis. Bạn có thể thấy rằng thực sự có
‫hai mạng ở đây. Chúng tôi có một giao diện người dùng và một mạng lưới phụ trợ. Điều đó cũng khá điển hình của
‫một ứng dụng lớn hơn mà bạn có thể muốn bảo vệ cơ sở dữ liệu của mình trên mạng phụ trợ để ứng dụng
‫người dùng giao diện người dùng không có quyền truy cập trực tiếp vào nó.
‫Và đó là những gì chúng tôi đang hiển thị ở đây và bạn sẽ nhận thấy rằng nhân viên thực sự được kết nối với hai mạng.
‫Vì vậy, khi bạn sử dụng lệnh tạo của mình, hãy nhớ rằng bạn đang sử dụng dịch vụ docker, tạo không chạy docker.
‫Vì vậy, khi bạn sử dụng lệnh tạo dịch vụ docker của mình, bạn sẽ cần chỉ định --network hai
‫lần, một lần cho giao diện người dùng và một lần cho chương trình phụ trợ.
‫Rõ ràng, bạn biết tạo mạng của mình trước.
‫Vì vậy, một số trong số đó được chỉ định ở đây. Và nếu bạn cần hình ảnh một lần nữa, sơ đồ kiến trúc
‫cũng ở đây, chỉ trong trường hợp giúp ích về mặt khái niệm cho cách bạn sẽ triển khai điều này.
‫Và, tất nhiên, bạn sẽ có tài liệu Docker. Bạn có thể cần sử dụng --help trên lệnh tạo
‫dịch vụ sẽ cung cấp cho bạn tất cả các tùy chọn khác nhau mà bạn có thể cần.
‫Bạn sẽ chỉ cần ba hoặc bốn trong số đó. Nếu bạn gặp khó khăn với chính các lệnh,
‫bạn có thể muốn xem lại tài liệu thực tế mà tôi sẽ đưa vào tài nguyên của phần này.
‫Nhưng tài liệu cụ thể này trong Swarm thực sự đi vào việc tạo dịch vụ và cấu hình dịch vụ.
‫Vì vậy, nó hơi dài dòng, nhưng có rất nhiều thông tin trong đó có thể giúp ích cho bạn nếu bạn gặp khó khăn
‫ở đây.
‫Video tiếp theo tôi sẽ thực sự tự mình chạy qua toàn bộ vấn đề này như thể tôi là bạn.
‫Chúc may mắn và có một số niềm vui.