Docker Swarm cho Container dàn nhạc

Tất cả về Docker Swarm và cách nó quản lý và sắp xếp tất cả các container trong một cụm.


Docker Swarm là gì?

Docker swarm là một chế độ xử lý một cụm Công cụ Docker, do đó có tên Swarm. Các cụm máy chủ Docker chạy trong chế độ swarm bao gồm các nhà quản lý và công nhân. Các trường hợp động cơ docker tham gia vào bầy được gọi là các nút.

Một triển khai cấp độ sản xuất bao gồm các nút docker trải rộng trên nhiều máy chủ.

Tại sao sử dụng nó? – Dàn nhạc container

Khi bạn đang làm việc trong môi trường sản xuất, 100 container container sẽ chạy nhiều ứng dụng trong đó. Quản lý tất cả các container này có thể là một nỗi đau lớn cho tất cả các kỹ sư DevOps; đây là nơi Docker Swarm giúp bạn ra ngoài. Nó quản lý và điều phối cụm chạy nhiều container docker dễ dàng.

Dưới đây là một số tính năng của nó:

  • Tính sẵn sàng cao – nhằm mục đích không cung cấp thời gian chết hoặc mất điện.
  • Cân bằng tải – tự động phân bổ tài nguyên và yêu cầu trên các nút khác trong cụm nếu bất kỳ nút nào bị lỗi.
  • Không tập trung – nhiều nút quản lý chạy trong môi trường sản xuất; do đó cụm không bao giờ phụ thuộc vào một nút quản lý.
  • Khả năng mở rộng – bằng cách sử dụng một lệnh docker swarm duy nhất, bạn có thể dễ dàng mở rộng hoặc thu nhỏ các container trong cụm.

Sắp xếp Docker Container

Bây giờ bạn đã biết những điều cơ bản của Docker Swarm, chúng ta hãy xem xét một ví dụ về việc thực hiện nó.

Trong ví dụ này, tôi có ba máy chạy trong một cụm với các chi tiết dưới đây:

người quản lý1: 192.168.56.104

công nhân1: 192.168.56.105

công nhân2: 192.168.56.102

Để khởi tạo chế độ swarm trong docker, hãy chạy lệnh bên dưới trên nút trình quản lý. Cờ –ad Advertising-addr được sử dụng để tự quảng cáo đến các nút có thể tham gia cụm.

[email được bảo vệ]: ~ $ docker swarm init –ad Advertising-addr 192.168.56.104

Swarm khởi tạo: nút hiện tại (lssbyfzuiuh3sye1on63eyixf) hiện là người quản lý.

Để thêm một công nhân vào bầy này, hãy chạy lệnh sau:

docker swarm tham gia –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5.1.1

Để thêm người quản lý vào bầy này, hãy chạy ‘trình quản lý mã thông báo tham gia của docker swarm’ và làm theo hướng dẫn.

Lệnh trên sẽ tạo mã thông báo sẽ được sử dụng bởi các nút khác để tham gia cụm này. Sao chép lệnh với mã thông báo được tạo và chạy nó trên các nút worker.

Chạy mã thông báo trên nút worker1.

[email được bảo vệ]: ~ $ docker swarm tham gia –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq5

Nút này tham gia một bầy như một công nhân.

Chạy mã thông báo trên nút worker2.

[email được bảo vệ]: ~ $ docker swarm tham gia –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq5

Nút này tham gia một bầy như một công nhân.

Bây giờ, trên nút trình quản lý, bạn có thể kiểm tra các nút nào đang chạy trong cụm.

[email được bảo vệ]: ~ $ nút docker ls

ID HOSTNAME STATUS AVAILABILITY QUẢN LÝ TÌNH TRẠNG TÌNH TRẠNG

lssbyfzuiuh3sye1on63eyixf * manager1 Lãnh đạo hoạt động sẵn sàng 18.09.6

utdr3dnngqf1oy1spupy1qlhu worker1 Sẵn sàng hoạt động 18.09.6

xs6jqp95lw4cml1i1npygt3cg worker2 Sẵn sàng hoạt động 18.09.6

Hãy để xây dựng hình ảnh docker geekflare_mongodb mà chúng tôi đã sử dụng trong Hướng dẫn Dockerfile.

xây dựng docker -t geekflare_mongodb .

Chạy một thùng chứa hình ảnh docker MongoDB bằng cách tạo một dịch vụ swarm. 27017 là số cổng mà MongoDB được hiển thị.

[email được bảo vệ]: ~ $ dịch vụ docker tạo –name "Mongo-Container" -trang 27017: 27017 geekflare_mongodb

hình ảnh geekflare_mongodb: không thể truy cập mới nhất trên sổ đăng ký để ghi lại thông báo của nó. Mỗi nút sẽ truy cập geekflare_mongodb: mới nhất một cách độc lập, có thể dẫn đến các nút khác nhau chạy các phiên bản khác nhau của hình ảnh.

kok58xa4zi05psh3uy6s5x9e6

tiến độ tổng thể: 1 trên 1 nhiệm vụ

1/1: đang chạy

xác minh: Dịch vụ hội tụ

Kiểm tra xem dịch vụ docker swarm đã bắt đầu. MODE được sao chép có nghĩa là container đã được sao chép trên tất cả các nút trong cụm và REPLICAS 1/1 có nghĩa là chỉ có một dịch vụ swarm hiện đang chạy.

[email được bảo vệ]: ~ $ dịch vụ docker ls

ID TÊN MODE REPLICAS IMAGE PORTS

kok58xa4zi05 Mongo-Container sao chép 1/1 geekflare_mongodb: mới nhất *: 27017->27017 / tcp

Hãy để chúng tôi kiểm tra nút nào trong cụm dịch vụ duy nhất này đang chạy. Nó đang chạy trên nút manager1.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: người quản lý mới nhất1 Chạy Chạy khoảng một phút trước

Chạy lệnh docker ps để biết thêm chi tiết về container đang chạy dịch vụ swarm này.

[email được bảo vệ]: ~ $ docker ps

CONTAINER ID HÌNH ẢNH TÌNH TRẠNG TÌNH TRẠNG TẠO TÊN

05d77e7b4850 geekflare_mongodb: mới nhất   "/ bin / sh -c usr / bin /"   2 phút trước Lên 2 phút 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Bạn có thể chạy dịch vụ swarm trong “toàn cầu” chế độ cũng thay vì chế độ bản sao mặc định của chế độ ăn mặc. Chế độ toàn cầu chạy một tác vụ của dịch vụ swarm trên tất cả các nút trong cụm.

Trước khi tôi chạy dịch vụ ở chế độ toàn cầu, hãy để tôi xóa vùng chứa đang chạy.

[email được bảo vệ]: ~ $ dịch vụ docker rm Mongo-Container

Mongo-Container

Bắt đầu dịch vụ swarm bên trong một container docker ở chế độ toàn cầu bằng cách sử dụng cờModemode.

[email được bảo vệ]: ~ $ dịch vụ docker tạo –name "Mongo-Container" -p 27017: 27017 –mode geekflare_mongodb toàn cầu

hình ảnh geekflare_mongodb: không thể truy cập mới nhất trên sổ đăng ký để ghi lại thông báo của nó. Mỗi nút sẽ truy cập geekflare_mongodb: mới nhất một cách độc lập, có thể dẫn đến các nút khác nhau chạy các phiên bản khác nhau của hình ảnh.

mfw8dp0zylffppkllkcjl8391

tiến độ tổng thể: 3 trên 3 nhiệm vụ

utdr3dnngqf1: đang chạy

lssbyfzuiuh3: đang chạy

xs6jqp95lw4c: đang chạy

xác minh: Dịch vụ hội tụ

Kiểm tra nếu dịch vụ swarm bắt đầu trong chế độ toàn cầu. Vì, ba nút (1 người quản lý, 2 công nhân) đang chạy trong cụm, đó là lý do tại sao số lượng bản sao là 3.

[email được bảo vệ]: ~ $ dịch vụ docker ls

ID TÊN MODE REPLICAS IMAGE PORTS

mfw8dp0zylff Mongo-Container toàn cầu 3/3 geekflare_mongodb: mới nhất *: 27017->27017 / tcp

3 dịch vụ hiện đang chạy trên 3 nút, kiểm tra nó bằng cách chạy lệnh bên dưới.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: worker mới nhất2 Chạy Chạy khoảng một phút trước

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: worker mới nhất1 Chạy khoảng một phút trước

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: người quản lý mới nhất1 Chạy khoảng một phút trước

Tiếp theo, hãy để tôi chỉ cho bạn cách xác định số lượng bản sao. Trước đó, tôi sẽ loại bỏ container hiện tại đang chạy.

[email được bảo vệ]: ~ $ dịch vụ docker rm Mongo-Container

Mongo-Container

Sử dụng cờ củarereplicas trong lệnh và đề cập đến số lượng bản sao bạn muốn của dịch vụ swarm. Ví dụ: tôi muốn có hai bản sao của dịch vụ swarm:

[email được bảo vệ]: ~ $ dịch vụ docker tạo –name "Mongo-Container" -trang 27017: 27017 –replicas = 2 geekflare_mongodb

hình ảnh geekflare_mongodb: không thể truy cập mới nhất trên sổ đăng ký để ghi lại thông báo của nó. Mỗi nút sẽ truy cập geekflare_mongodb: mới nhất một cách độc lập, có thể dẫn đến các nút khác nhau chạy các phiên bản khác nhau của hình ảnh.

4yfl41n7sfak65p6zqwwjq82c

tiến độ tổng thể: 2 trên 2 nhiệm vụ

1/2: chạy

2/2: đang chạy

xác minh: Dịch vụ hội tụ

Kiểm tra các dịch vụ swarm hiện đang chạy. Bạn có thể thấy một bản sao đang chạy trên nút manager1 và một bản sao khác trên nút worker1.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

xukodj69h79q Mongo-Container.1 geekflare_mongodb: worker mới nhất1 Chạy Chạy 9 giây trước

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: người quản lý mới nhất1 Chạy Chạy 9 giây trước

Đi đến nút worker1 và kiểm tra xem container docker có đang chạy dịch vụ swarm không.

[email được bảo vệ]: ~ $ docker ps

CONTAINER ID HÌNH ẢNH TÌNH TRẠNG TÌNH TRẠNG TẠO TÊN

5042b7f161cb geekflare_mongodb: mới nhất   "/ bin / sh -c usr / bin /"   Khoảng một phút trước Up Khoảng một phút 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Để dừng container này, hãy chạy lệnh bên dưới.

[email được bảo vệ]: ~ $ docker dừng 5042b7f161cb

5042b7f161cb

Bây giờ từ nút manager1 nếu bạn kiểm tra tất cả các nút đang chạy dịch vụ, bạn sẽ thấy nó chạy trên nút manager1 và nút worker2. Nút HIỆN TẠI của nút worker1 là Shutdown (vì chúng tôi đã dừng container chạy dịch vụ). Nhưng vì hai bản sao phải chạy dịch vụ này, một dịch vụ khác đã được bắt đầu trên worker 2.

Đây là cách bạn đạt được tính sẵn sàng cao bằng cách sử dụng docker swarm.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: worker mới nhất2 Chạy Chạy 30 giây trước

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: worker mới nhất1 Tắt máy không thành công 38 giây trước    "nhiệm vụ: lối ra khác không (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: người quản lý mới nhất1 Chạy 3 phút trước

Nó rất dễ dàng để mở rộng quy mô lên hoặc xuống container. Lệnh dưới đây sẽ mở rộng vùng chứa mongo lên 5.

[email được bảo vệ]: ~ $ Docker quy mô dịch vụ Mongo-Container = 5

Mongo-Container được chia tỷ lệ thành 5

tiến độ tổng thể: 5 trên 5 nhiệm vụ

1/5: chạy

2/5: chạy

3/5: chạy

4/5: chạy

5/5: chạy

xác minh: Dịch vụ hội tụ

Kiểm tra xem có bao nhiêu bản sao của container mongo đang chạy, nó phải là 5.

[email được bảo vệ]: ~ $ dịch vụ docker ls

ID TÊN MODE REPLICAS IMAGE PORTS

4yfl41n7sfak Mongo-Container sao chép 5/5 geekflare_mongodb: mới nhất *: 27017->27017 / tcp

Kiểm tra xem 5 bản sao này đang chạy trong cụm. 1 bản sao đang chạy trên nút manager1 và 2 bản sao trên cả hai nút worker mỗi.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: worker mới nhất2 Chạy Chạy 2 phút trước

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: worker mới nhất1 Tắt máy không thành công 2 phút trước     "nhiệm vụ: lối ra khác không (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: người quản lý mới nhất1 Chạy Chạy 5 phút trước

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: worker mới nhất2 Chạy Chạy 47 giây trước

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: worker mới nhất1 Chạy Chạy 46 giây trước

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: worker mới nhất1 Chạy Chạy 44 giây trước

Trong cụm của bạn, nếu bạn không muốn các dịch vụ của mình chạy trên (các) nút của người quản lý và chỉ muốn giữ nó để quản lý các nút, bạn có thể rút nút quản lý ra.

[email được bảo vệ]: ~ $ Cập nhật nút docker – trình quản lý cống khả dụng1

quản lý1

Kiểm tra tính khả dụng của nút quản lý.

[email được bảo vệ]: ~ $ nút docker ls

ID HOSTNAME STATUS AVAILABILITY QUẢN LÝ TÌNH TRẠNG TÌNH TRẠNG

lssbyfzuiuh3sye1on63eyixf * manager1 Lãnh đạo cống sẵn sàng 18.09.6

utdr3dnngqf1oy1spupy1qlhu worker1 Sẵn sàng hoạt động 18.09.6

xs6jqp95lw4cml1i1npygt3cg worker2 Sẵn sàng hoạt động 18.09.6

Bạn sẽ thấy các dịch vụ không chạy trên nút người quản lý nữa; chúng được trải rộng trên các nút worker trong cluster.

[email được bảo vệ]: ~ $ dịch vụ docker ps Mongo-Container

TÊN ID IMAGE NODE MÔ TẢ NHÀ NƯỚC HIỆN TẠI

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: worker mới nhất2 Chạy Chạy 5 phút trước

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: worker mới nhất1 Tắt máy 5 phút trước      "nhiệm vụ: lối ra khác không (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: worker mới nhất1 Chạy Chạy 41 giây trước

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: người quản lý mới nhất1 Tắt máy Tắt máy 44 giây trước

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: worker mới nhất2 Chạy 3 phút trước

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: worker mới nhất1 Chạy 3 phút trước

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: công nhân mới nhất1 Chạy 3 phút trước

Đó là tất cả về Docker Swarm và cách sắp xếp các container trong chế độ bầy docker. Hãy thử những điều này trên môi trường phi sản xuất của bạn để có ý tưởng về cách thức hoạt động của nó.

THẺ

  • Docker

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map