Docker Swarm là một công cụ cho phép bạn triển khai một cụm Docker Host. Đây là một công cụ cụm gốc do Docker cung cấp, cung cấp tính khả dụng cao và hiệu suất cao cho ứng dụng của bạn bằng cách phân phối nó cho tất cả các nút bên trong cụm swarm.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn từng bước cách tạo một cụm Swarm bằng Ubuntu 16.04. Chúng tôi sẽ tạo một cụm swarm bằng cách sử dụng 2 máy chủ Ubuntu, 1 nút máy chủ làm trình quản lý và 1 nút khác làm công nhân. Sau đó, chúng ta sẽ thử triển khai dịch vụ Nginx đơn giản cho cụm swarm.
Chạy các lệnh bên dưới trên tất cả các máy chủ, 'manager' và 'worker01'.
Chỉnh sửa tệp '/etc/hosts' bằng trình soạn thảo vim.
Thêm cấu hình sau vào cuối dòng.
Lưu và thoát.
Bây giờ hãy ping tất cả các nút bằng 'hostname' thay vì sử dụng địa chỉ IP.
Và đảm bảo rằng nó đang hoạt động trên tất cả các máy chủ.
Cài đặt các phụ thuộc Docker-ce bằng lệnh apt bên dưới.
Bây giờ hãy thêm khóa Docker và kho lưu trữ Docker-ce vào máy chủ của chúng ta.
Cập nhật kho lưu trữ và cài đặt các gói Docker-ce bằng lệnh apt install bên dưới.
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ docker và cho phép dịch vụ này khởi chạy mỗi khi khởi động hệ thống.
Docker-ce hiện đã được cài đặt trên các nút máy chủ của chúng tôi.
Tiếp theo, chúng tôi sẽ cấu hình docker để chạy như một người dùng bình thường hoặc người dùng không phải root.
Tạo một người dùng mới có tên là 'mohammad' và thêm người dùng đó vào nhóm 'docker'.
Bây giờ hãy đăng nhập vào người dùng 'mohammad' và chạy Lệnh docker hello-world như bên dưới.
Và bạn sẽ nhận được hello world từ docker như hiển thị bên dưới.
Khởi tạo chế độ Docker Swarm bằng cách chạy lệnh docker bên dưới trên nút 'manager'.
Và bạn sẽ nhận được kết quả như hiển thị bên dưới.
Bạn sẽ thấy 'join-token' đã được tạo bởi nút 'manager'.
Tiếp theo, chúng ta cần thêm nút 'worker01' vào cụm 'manager'. Và để làm được điều đó, chúng ta cần một 'join-token' từ nút 'manager' của cụm, vì vậy hãy đảm bảo ghi nó vào ghi chú của bạn.
Chạy lệnh docker swarm join trên nút 'worker01'.
Bây giờ bạn sẽ nhận được kết quả như hiển thị bên dưới.
Nút 'worker01' đã được join vào cụm.
Kiểm tra bằng cách chạy lệnh sau trên nút 'manager'.
Bây giờ bạn thấy nút 'worker01' đã được tham gia vào cụm swarm.
Cụm Swarm đã được tạo.
Và khi nó được tạo, hãy kiểm tra bằng lệnh docker service bên dưới.
Và bạn sẽ nhận được kết quả như hiển thị bên dưới.
Dịch vụ Nginx đã được tạo và triển khai đến cụm swarm dưới dạng dịch vụ có tên là 'my-web', dịch vụ này dựa trên Nginx Alpine Linux, hiển thị cổng HTTP của dịch vụ container tới cổng '8080' trên máy chủ và chỉ có 1 bản sao.
Để sao chép dịch vụ 'my-web', hãy chạy lệnh sau.
Sau khi hoàn tất, hãy kiểm tra lại bằng lệnh docker service.
Và bây giờ máy chủ có 2 bản sao.
Mở trình duyệt web của bạn và nhập địa chỉ IP của nút quản lý với cổng 8080.
Và bạn sẽ nhận được trang mặc định của Nginx.
Dưới đây là kết quả từ 'worker01' node.
Cụm Swarm đã được tạo và dịch vụ Nginx đã được triển khai hoàn tất cho Cụm Swarm của chúng tôi.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn từng bước cách tạo một cụm Swarm bằng Ubuntu 16.04. Chúng tôi sẽ tạo một cụm swarm bằng cách sử dụng 2 máy chủ Ubuntu, 1 nút máy chủ làm trình quản lý và 1 nút khác làm công nhân. Sau đó, chúng ta sẽ thử triển khai dịch vụ Nginx đơn giản cho cụm swarm.
Điều kiện tiên quyết
- 2 hoặc nhiều hơn - Ubuntu 16.04 Servermanager 132.92.41.4
- worker01 132.92.41.5
Chúng ta sẽ làm gì?
- Cấu hình máy chủ
- Cài đặt Docker-ce
- Khởi tạo Docker Swarm
- Triển khai dịch vụ đầu tiên cho cụm
Bước 1 - Cấu hình máy chủ
Trước khi cài đặt bất kỳ gói nào cho cụm swarm, chúng ta sẽ cấu hình tệp hosts trên cả hai máy chủ.Chạy các lệnh bên dưới trên tất cả các máy chủ, 'manager' và 'worker01'.
Chỉnh sửa tệp '/etc/hosts' bằng trình soạn thảo vim.
Mã:
vim /etc/hosts
Mã:
132.92.41.4 manager
132.92.41.5 worker01
Bây giờ hãy ping tất cả các nút bằng 'hostname' thay vì sử dụng địa chỉ IP.
Mã:
ping -c 3 manager
ping -c 3 worker01
Bước 2 - Cài đặt Docker-ce
Để tạo cụm swarm, chúng ta cần cài đặt docker trên tất cả các nút máy chủ. Trong bước này, chúng ta sẽ cài đặt Docker-ce Community Edition trên cả máy chủ manager và worker01.Cài đặt các phụ thuộc Docker-ce bằng lệnh apt bên dưới.
Mã:
sudo apt install apt-transport-https software-properties-common ca-certificates -y
Mã:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list
Mã:
sudo apt update
sudo apt install docker-ce -y
Mã:
systemctl start docker
systemctl enable docker
Tiếp theo, chúng tôi sẽ cấu hình docker để chạy như một người dùng bình thường hoặc người dùng không phải root.
Tạo một người dùng mới có tên là 'mohammad' và thêm người dùng đó vào nhóm 'docker'.
Mã:
useradd -m -s /bin/bash mohammad
sudo usermod -aG docker mohammad
Mã:
su - mohammad
docker run hello-world
Bước 3 - Tạo cụm Swarm
Trong bước này, chúng ta sẽ tạo Cụm Swarm cho các nút của mình. Và để tạo các nút cụm swarm, chúng ta cần khởi tạo chế độ swarm trên nút 'manager' rồi join nút 'worker01' vào cụm.Khởi tạo chế độ Docker Swarm bằng cách chạy lệnh docker bên dưới trên nút 'manager'.
Mã:
docker swarm init --advertise-addr 132.92.41.4
Bạn sẽ thấy 'join-token' đã được tạo bởi nút 'manager'.
Tiếp theo, chúng ta cần thêm nút 'worker01' vào cụm 'manager'. Và để làm được điều đó, chúng ta cần một 'join-token' từ nút 'manager' của cụm, vì vậy hãy đảm bảo ghi nó vào ghi chú của bạn.
Chạy lệnh docker swarm join trên nút 'worker01'.
Mã:
docker swarm join --token SWMTKN-1-5p5ujrr67rl2rlmyvrj56fksblbcrtaeirf7fj5r4snid2vn6y-918gbqr02m64xct43i2ssi4qs 132.92.41.4:2377
Nút 'worker01' đã được join vào cụm.
Kiểm tra bằng cách chạy lệnh sau trên nút 'manager'.
Mã:
docker node ls
Cụm Swarm đã được tạo.
Bước 4 - Triển khai dịch vụ đầu tiên vào cụm
Trong bước này, chúng ta sẽ tạo và triển khai dịch vụ đầu tiên cho cụm swarm. Chúng tôi muốn tạo dịch vụ máy chủ web Nginx mới chạy trên cổng http mặc định 80, sau đó hiển thị dịch vụ này trên cổng 8080 trên máy chủ lưu trữ, sau đó thử sao chép dịch vụ nginx bên trong cụm swarm.Tạo dịch vụ
Tạo dịch vụ Nginx mới có tên là 'my-web' và hiển thị cổng HTTP của container đến cổng 8080 trên máy chủ.
Mã:
docker service create --name my-web --publish 8080:80 nginx:1.13-alpine
Mã:
docker service ls
Dịch vụ Nginx đã được tạo và triển khai đến cụm swarm dưới dạng dịch vụ có tên là 'my-web', dịch vụ này dựa trên Nginx Alpine Linux, hiển thị cổng HTTP của dịch vụ container tới cổng '8080' trên máy chủ và chỉ có 1 bản sao.
Bản sao và mở rộng quy mô dịch vụ
Bây giờ chúng ta sẽ tạo bản sao cho dịch vụ 'my-web'. Chúng tôi sẽ tạo 2 bản sao của dịch vụ 'my-web' để dịch vụ có thể truy cập được trên các nút 'manager' và 'worker01'.Để sao chép dịch vụ 'my-web', hãy chạy lệnh sau.
Mã:
docker service scale my-web=2
Mã:
docker service ls
Mở trình duyệt web của bạn và nhập địa chỉ IP của nút quản lý với cổng 8080.
Và bạn sẽ nhận được trang mặc định của Nginx.
Dưới đây là kết quả từ 'worker01' node.
Cụm Swarm đã được tạo và dịch vụ Nginx đã được triển khai hoàn tất cho Cụm Swarm của chúng tôi.