
Trước khi bạn bắt đầu
- Để hoàn thành hướng dẫn này, bạn cần có ít nhất hai Linodes nằm trong cùng một trung tâm dữ liệu. Các hướng dẫn trong hướng dẫn này được viết cho Ubuntu 16.04, nhưng có thể sử dụng các bản phân phối khác; Linodes không cần sử dụng cùng một bản phân phối.
- Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.
- Cài đặt Docker trên mỗi Linode. Xem hướng dẫn Cài đặt Docker và Triển khai LAMP Stack hoặc tài liệu cài đặt Docker để biết thêm thông tin.
Ghi chú: Các bước trong hướng dẫn này yêu cầu quyền root. Hãy đảm bảo chạy các bước bên dưới dưới dạng root
hoặc với sudo
tiền tố. Để biết thêm thông tin về quyền, hãy xem hướng dẫn Người dùng và Nhóm của chúng tôi .
Tăng sức mạnh của Docker bằng cách tạo một cụm máy chủ Docker, được gọi là Docker Swarm. Bạn cần một Linode để làm Docker Swarm Manager và một vài máy chủ Docker để tham gia Swarm dưới dạng Nodes.
Trong hướng dẫn này, bạn sẽ thiết lập Docker Swarm Manager và kết nối các Node để triển khai container có thể mở rộng. Điều này yêu cầu nhiều Linode có Docker được cài đặt và chạy trong cùng một trung tâm dữ liệu. Chúng không cần phải chạy cùng một bản phân phối.
Tạo Trình quản lý Docker Swarm
Mục đích của Docker Swarm Manager là nhận lệnh thay mặt cho cụm và chỉ định container cho các nút. Swarm Manager sử dụng Raft Consensus Algorithm để quản lý trạng thái Swarm. Raft Consensus Algorithm đảm bảo rằng tất cả các nút quản lý chịu trách nhiệm quản lý và lên lịch tác vụ trong cụm đều lưu trữ cùng một trạng thái nhất quán. Nếu xảy ra lỗi, một nút duy nhất sẽ đảm nhận các tác vụ và khôi phục trạng thái ổn định.
Trong hướng dẫn này, chúng tôi tạo một Swarm Manager duy nhất. Nếu mục tiêu của bạn là tính khả dụng cao, bạn có thể tạo nhiều trình quản lý.
1.Đăng nhập vào Linode bạn đã chọn cho trình quản lý Swarm và khởi tạo trình quản lý. Thay thế trong ví dụ này bằng địa chỉ IP công khaiPUBLIC_IP
của Linode :
docker swarm init --advertise-addr PUBLIC_IP
Docker phản hồi bằng lệnh cần thiết để các nút tham gia Swarm:
2.Sử dụng docker info
để xác minh rằng Swarm của bạn đang chạy và hoạt động:
docker info
Kết nối các nút với Trình quản lý
Ở Bước 1 của phần trước, docker swarm init
lệnh sẽ đưa ra hướng dẫn về cách tham gia trình quản lý.
docker swarm join --token TOKEN PUBLIC_IP:2377
TOKEN
Chuỗi ký tự dài được hiển thị cho bạn khi bạn khởi tạo Swarm là gì và PUBLIC_IP
là địa chỉ IP công khai của Swarm Manager Linode của bạn. Nếu bạn không nhớ mã thông báo, hãy chạy join-token
trên trình quản lý để xem thông tin từ swarm init
lệnh:
docker swarm join-token worker
1.Để tham gia nút vào Swarm, hãy chạy docker swarm join
từ nút. Thay đổi TOKEN
thành mã thông báo từ Bước 1 trong phần trước và PUIBLIC_IP
thành IP công khai của người quản lý:
docker swarm join --token TOKEN PUBLIC_IP:2377
Đầu ra cho thấy nút đã tham gia vào bầy đàn với tư cách là một công nhân. Bây giờ bạn có một cụm Docker Swarm nhỏ, với một trình quản lý và một nút:
2.Lặp lại Bước 1 để nối nhiều nút vào Swarm tùy theo nhu cầu.
3.Trên trình quản lý, sử dụng docker node ls
để xem thông tin về trình quản lý và danh sách tất cả các nút:
docker node ls
Triển khai dịch vụ với Docker Swarm
Để triển khai dịch vụ với Docker Swarm, hãy sử dụng trình quản lý để chuẩn bị một nút duy nhất, sau đó mở rộng cấu hình để phù hợp với nhu cầu của bạn. Trong ví dụ này, bạn sẽ cài đặt NGINX trên một nút, sau đó mở rộng thành một cụm (swarm) gồm ba nút.
1.Từ Swarm Manager, sử dụng service create
để triển khai dịch vụ tới một nút. Thay đổi nginxexample
thành bất kỳ thứ gì bạn thích:
docker service create -p 80:80 --name nginxexample nginx
2.Mở rộng dịch vụ NGINX thành ba nút:
docker service scale nginxexample=3
3.Xác minh rằng dịch vụ đã được triển khai docker ps -a
từ bất kỳ nút nào:
docker ps -a
4.Để dừng nginxexample
dịch vụ, hãy sử dụng service remove
lệnh:
docker service remove nginxexample
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/how-to-create-a-docker-swarm-manager-and-nodes-on-linode/