Sunday, September 29, 2024

[Docker] Phần 13 – Triển khai Docker Swarm

-

1. Docker Swarm là gì?

Docker Swarm là một công cụ được tích hợp trong Docker để quản lý và triển khai các ứng dụng phân tán. Nó cho phép các máy tính chạy Docker kết hợp với nhau để tạo thành một cụm (cluster) Docker, giúp triển khai và quản lý các dịch vụ trên cụm này dễ dàng hơn. Swarm cung cấp tính năng như phân phối tải (load balancing), độ tin cậy, tự động khởi động lại các dịch vụ khi xảy ra lỗi, tăng tính sẵn sàng và giảm thời gian tải ứng dụng. Swarm cũng cho phép người dùng triển khai ứng dụng trên nhiều máy tính cùng lúc, giúp tận dụng tối đa tài nguyên và tăng hiệu quả.

Để triển khai một Docker Swarm với 3 node, bạn có thể làm theo các bước sau:

Bước 1: Cài đặt Docker trên 3 máy tính node của bạn. Bạn có thể làm điều này bằng cách tải xuống và cài đặt Docker từ trang chủ Docker.

Bước 2: Khởi động Docker trên tất cả các máy tính node. Bạn có thể sử dụng lệnh systemctl start docker để khởi động Docker trên các hệ thống sử dụng systemd.

Bước 3: Tạo một máy chủ chủ động (manager node) bằng cách sử dụng lệnh sau trên một trong các máy tính node của bạn:docker swarm init --advertise-addr <IP address của máy tính>Lưu ý rằng địa chỉ IP cần phải là địa chỉ IP của máy tính đó.

Trên Node 1:

root@docker-swarm-1:~# docker swarm init --advertise-addr 192.168.13.181
Swarm initialized: current node (sekiubazwv6gh140vr52dhrox) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-5au80exrsj7ympz4m1v6zlodgg89aa2c5lx1suqs1rci3zkv8w-5n9c11osttglnar9zqnkxynz1 192.168.13.181:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Bước 4: Bạn sẽ nhận được một mã token từ lệnh trên, sao chép mã này.

docker swarm join --token SWMTKN-1-5au80exrsj7ympz4m1v6zlodgg89aa2c5lx1suqs1rci3zkv8w-5n9c11osttglnar9zqnkxynz1 192.168.13.181:2377

Bước 5: Sử dụng token này để kết nối các máy tính node còn lại với máy chủ chủ động bằng cách chạy lệnh sau trên từng máy tính node:docker swarm join --token <mã token> <địa chỉ IP của máy chủ chủ động>

Trên node 2:

root@docker-swarm-2:~# docker swarm join --token SWMTKN-1-5au80exrsj7ympz4m1v6zlodgg89aa2c5lx1suqs1rci3zkv8w-5n9c11osttglnar9zqnkxynz1 192.168.13.181:2377
This node joined a swarm as a worker.

Trên node 3:

root@docker-swarm-3:~# docker swarm join --token SWMTKN-1-5au80exrsj7ympz4m1v6zlodgg89aa2c5lx1suqs1rci3zkv8w-5n9c11osttglnar9zqnkxynz1 192.168.13.181:2377
 swarm as a worker.This node joined a swarm as a worker.

Bước 6: Sau khi tất cả các node đã tham gia Swarm, bạn có thể kiểm tra trạng thái của các node bằng lệnh docker node ls.

root@docker-swarm-1:~# docker node ls
ID                            HOSTNAME             STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
sekiubazwv6gh140vr52dhrox *   docker-swarm-1.com   Ready     Active         Leader           23.0.1
c9g4dwb0ovx1vyf4241lz908v     docker-swarm-2.com   Ready     Active                          23.0.1
5dlvlofezbuimkuwep1ctvnnz     docker-swarm-3.com   Ready     Active                          23.0.1

Bước 7: Bây giờ bạn đã có thể triển khai các dịch vụ trên Docker Swarm của mình bằng cách sử dụng lệnh docker service create. Bạn có thể tạo ra các dịch vụ phức tạp hơn bằng cách cấu hình các tùy chọn khác nhau như tham số số lượng replica, mạng, khối lượng dữ liệu, …

Lưu ý rằng để triển khai Docker Swarm thành công, bạn nên hiểu rõ về cách hoạt động của Docker Swarm, các lệnh liên quan và các thao tác cơ bản trong Docker.

Để rời khởi Swarm bạn hãy vào Node mà bạn ý định rời khỏi Swarm sử dụng lệnh:

root@docker-swarm-2:~# docker swarm leave
Node left the swarm.

Lên Node Leader show node, bạn thấy trạng thái docker-swarm-2.com đã trạng thái Down.

root@docker-swarm-1:~# docker node ls
ID                            HOSTNAME             STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
8klvv4ju6j255m1kunfb565bf *   docker-swarm-1.com   Ready     Active         Leader           23.0.1
pf6s9sq1s9jzr7he41615q1mj     docker-swarm-2.com   Down      Active                          23.0.1
v4p46u9t9yqgp484db4efdrpm     docker-swarm-3.com   Ready     Active                          23.0.1

Để vào lại Swarm, chúng ta sử dụng lại lệnh join.

root@docker-swarm-2:~# docker swarm join --token SWMTKN-1-4lwhzcn0hrgz803y4une234xby3avjr3h7bmtxibmnijshbvh9-bjl8wykwvkajfmb8w9usp2wb3 192.168.13.181:2377
This node joined a swarm as a worker.

Kết quả trong Node Leader, bạn thấy Node 2 đã gia nhập lại Swarm nhưng vẫn còn tồn tại Node 2 cũ mà trước đó đã rời khỏi Swarm đang ở trạng thái Down.

root@docker-swarm-1:~# docker node ls
ID                            HOSTNAME             STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
8klvv4ju6j255m1kunfb565bf *   docker-swarm-1.com   Ready     Active         Leader           23.0.1
3kge4ycltpric8xn8krbf1ov7     docker-swarm-2.com   Ready     Active                          23.0.1
pf6s9sq1s9jzr7he41615q1mj     docker-swarm-2.com   Down      Active                          23.0.1
v4p46u9t9yqgp484db4efdrpm     docker-swarm-3.com   Ready     Active                          23.0.1

Trong trường hợp này chúng ta có thể vào Node Leader để xóa nó đi bằng lệnh docker node rm <id_node>

root@docker-swarm-1:~# docker node rm pf6s9sq1s9jzr7he41615q1mj
pf6s9sq1s9jzr7he41615q1mj

Giả sử chúng ta tắt Node 03 đi để xem trạng thái của nó sau khi shutdown thì như thế nào. Và dưới đây là kết quả.

$ docker node ls
ID                            HOSTNAME             STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
8klvv4ju6j255m1kunfb565bf *   docker-swarm-1.com   Ready     Active         Leader           23.0.1
3kge4ycltpric8xn8krbf1ov7     docker-swarm-2.com   Ready     Active                          23.0.1
v4p46u9t9yqgp484db4efdrpm     docker-swarm-3.com   Down     Active                          23.0.1

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories