Nomad là một hệ thống lập lịch và sắp xếp khối lượng công việc nguồn mở cung cấp một giải pháp thay thế đơn giản và linh hoạt cho Kubernetes. Nomad có thể triển khai và quản lý cả ứng dụng có chứa và không chứa trên các cụm hiệu quả, có khả năng mở rộng cao. Nomad là một phần của hệ sinh thái HashiCorp, cung cấp khả năng tích hợp sẵn với các công cụ như Consul, Terraform và Vault. Tìm hiểu thêm về Nomad và cách so sánh với Kubernetes trong hướng dẫn Kubernetes so với Nomad: Cái nào tốt hơn? của chúng tôi .
Trong hướng dẫn này, hãy tìm hiểu cách bắt đầu hiểu và sử dụng Nomad hiệu quả. Bắt đầu bằng cách cài đặt một phiên bản Nomad duy nhất để hiểu giao diện và cấu trúc cụm của nó. Sau đó, hãy xem cách tận dụng Terraform và Consul để triển khai cụm Nomad đầy đủ với Docker cho các ứng dụng được chứa trong container.
Cách cài đặt Nomad
Phần này trình bày cách cài đặt Nomad và cách truy cập giao diện của Nomad để bạn làm quen với phương pháp xử lý công việc của Nomad.
Ngược lại, nếu bạn đã sẵn sàng triển khai cụm Nomad ngay bây giờ, hãy chuyển đến phần Cách triển khai cụm bằng Nomad .
Triển khai Nomad từ Linode Marketplace
Giải pháp dễ tiếp cận nhất để thiết lập phiên bản Nomad với Linode là thông qua Linode Marketplace. Tại đó, phiên bản Linode với Nomad đã được cài đặt và cấu hình có thể được thiết lập nhanh chóng. Để thực hiện, hãy xem hướng dẫn của chúng tôi về Triển khai HashiCorp Nomad thông qua Linode Marketplace .
Trước tiên, hãy làm theo hướng dẫn đó để chuẩn bị một phiên bản Nomad. Sau đó chuyển đến phần Nomad hoạt động như thế nào để làm quen với phiên bản Nomad mới.
Cài đặt Nomad thủ công
Thực hiện theo các bước ở đây để cài đặt Nomad theo cách thủ công. Các bước này hướng dẫn mọi thứ cần thiết để cấu hình phiên bản Nomad và có thể truy cập giao diện Nomad.
Trước khi bạn bắt đầu
- Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tô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ần có phiên bản Linode để chạy Nomad, vì vậy hãy làm theo hướng dẫn được liên kết tại đây để khởi động và cấu hình phiên bản của riêng bạn:
Ghi chú: Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu quyền nâng cao được thêm tiền tố sudo
. Nếu bạn không quen với sudo
lệnh này, hãy xem hướng dẫn Người dùng và Nhóm .
Cài đặt Nomad trên Debian và Ubuntu
Để cài đặt Nomad trên Debian hoặc Ubuntu, hãy làm theo các bước dưới đây:
1.Cài đặt các gói tiên quyết để thêm kho lưu trữ HashiCorp vào trình quản lý gói APT:
sudo apt install wget gpg coreutils
2.Thêm khóa GPG cho kho lưu trữ HashiCorp:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
3.Thêm kho lưu trữ HashiCorp vào trình quản lý gói APT:
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
4.Cập nhật chỉ mục của APT và cài đặt Nomad:
sudo apt update
sudo apt install nomad
Cài đặt Nomad trên Alma, CentOS, Fedora và Rocky
Để cài đặt Nomad trên AlmaLinux, CentOS Stream, Fedora hoặc Rocky Linux, hãy làm theo các bước dưới đây:
1.Cài đặt trình quản lý cấu hình cho trình quản lý gói DNF:
sudo dnf install dnf-plugins-core
2.Sử dụng trình quản lý cấu hình để thêm kho lưu trữ HashiCorp vào DNF:
Trên AlmaLinux, CentOS Stream và Rocky Linux, hãy sử dụng URL RHEL:
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
Trên Fedora, hãy sử dụng URL Fedora:
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo
3.Cài đặt Nomad:
sudo dnf install nomad
Xác minh cài đặt Nomad của bạn
Sau khi hoàn tất các bước cài đặt trên, hãy xác minh cài đặt Nomad bằng lệnh sau:
nomad --version
Nomad v1.5.2
Cài đặt CNI Plugins cho Nomad
Nomad sử dụng plugin CNI để hỗ trợ một số tính năng mạng, đặc biệt là chế độ cầu nối. Các plugin CNI là bắt buộc khi sử dụng không gian tên mạng trong các cụm Nomad.
Việc hoàn tất phần thiết lập này là tùy chọn nhưng nhìn chung là được khuyến khích.
1.Cài đặt plugin CNI bằng bộ lệnh sau:
curl -L -o cni-plugins.tgz "https://github.com/containernetworking/plugins/releases/download/v1.0.0/cni-plugins-linux-$( [ $(uname -m) = aarch64 ] && echo arm64 || echo amd64)"-v1.0.0.tgz
sudo mkdir -p /opt/cni/bin
sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
2.Để hỗ trợ thêm lưu lượng mạng qua kết nối cầu nối, hãy điều chỉnh hệ thống của bạn iptables
. Nomad cung cấp các cấu hình được triển khai bên dưới cho mục đích này. Các dòng này đặt iptables
các giá trị cần thiết và thêm chúng vào tệp để đảm bảo chúng tồn tại khi khởi động hệ thống. Chạy lệnh sau để tạo bridge.conf
tệp trong /etc/sysctl.d/
thư mục:
sudo tee /etc/sysctl.d/bridge.conf > /dev/null <<EOF
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
3.Tải tệp mới vào sysctl
cấu hình hiện tại:
sudo modprobe br_netfilter
sudo sysctl -p /etc/sysctl.d/bridge.conf
Nomad hoạt động như thế nào
Với phiên bản Nomad đã hoạt động, đã đến lúc bắt đầu khám phá cách Nomad hoạt động. Phần này cung cấp những điều cơ bản để điều hướng các tính năng của Nomad.
Sử dụng Nomad
1.Đầu tiên, hãy khởi động một tác nhân phát triển Nomad:
nomad agent -dev
Ghi chú: Các phiên bản Nomad được tạo thông qua Linode Marketplace đã chạy tác nhân Nomad khi khởi động, do đó không cần lệnh trên.
2.Tác nhân tạo ra một giao diện web Nomad khả dụng, phục vụ nó trên localhost:4646
. Sử dụng đường hầm SSH để truy cập giao diện này trong trình duyệt web từ một máy từ xa:
- Trên Windows , sử dụng công cụ PuTTY để thiết lập đường hầm SSH. Thực hiện theo phần PuTTY trong hướng dẫn của chúng tôi về cách Tạo đường hầm SSH cho MySQL Remote Access . Sử dụng
4646
làm cổng Nguồn và127.0.0.1:4646
làm cổng Đích . - Trên macOS hoặc Linux , hãy sử dụng lệnh sau để thiết lập đường hầm SSH. Thay thế
example-user
bằng tên người dùng của bạn trên máy chủ từ xa và192.0.2.0
bằng địa chỉ IP của máy chủ từ xa:
ssh -L4646:localhost:4646 example-user@192.0.2.0
3.Điều hướng đến localhost:4646
trình duyệt web để xem giao diện Nomad.

Cấu trúc du mục
Một trong những cách tốt nhất để làm quen với Nomad là thông qua việc điều hướng các tùy chọn có sẵn trong giao diện của nó. Tuy nhiên, Nomad có một tập hợp các khái niệm cốt lõi mà các hoạt động của nó được cấu trúc xung quanh. Làm quen với những khái niệm đó là điều cần thiết để sử dụng Nomad hiệu quả.
Sau đây là tổng quan ngắn gọn về những điều cốt yếu quan trọng này để nắm bắt kiến trúc cụm Nomad. Tìm thêm thông tin chi tiết và thông tin cụ thể hơn trong tài liệu từ vựng của Nomad .
- Một tác nhân Nomad chạy trên mỗi Node trong cụm Nomad và có thể là tác nhân máy chủ hoặc tác nhân máy khách . Các tác nhân thực hiện tất cả công việc đằng sau Nomad và sự hiện diện của mạng tác nhân này tạo nên cụm Nomad.
- Một tác nhân máy chủ Nomad quản lý các công việc và máy khách. Mỗi nút máy chủ giao tiếp với các nút máy chủ khác để có tính khả dụng cao và nhận thức trên nhiều vùng. Máy chủ cũng quản lý lịch trình công việc và phân phối công việc đến các nút máy khách phù hợp khi công việc cần được thực hiện.
- Một tác nhân máy khách Nomad theo dõi các công việc từ các nút máy chủ của vùng và thực hiện bất kỳ tác vụ nào trong các công việc đó. Về cơ bản, máy khách là các đơn vị thực hiện công việc, chạy các tác vụ cần thiết, cho dù là quy trình hàng loạt, dịch vụ hay các loại khác.
- Một công việc Nomad là một tập hợp một hoặc nhiều nhiệm vụ được xử lý bởi một khách hàng . Các nhiệm vụ được tập hợp thành các nhóm trong công việc của họ . Mỗi nhiệm vụ lần lượt chứa một đơn vị công việc duy nhất được thực hiện bởi một tác nhân khách hàng .
Cách triển khai cụm với Nomad
Các phần trên sẽ cung cấp hiểu biết cơ bản vững chắc về Nomad. Tuy nhiên, Nomad thường được triển khai trong một cụm với một mảng các nút máy chủ và máy khách để thực hiện công việc.
Phần còn lại của hướng dẫn này sẽ phác thảo phương pháp đơn giản để triển khai cụm Nomad hoàn chỉnh bằng cách sử dụng Terraform để cung cấp và Consul để kết nối mạng.
Thiết lập này có mục đích làm cơ sở cho trường hợp sử dụng cụ thể của riêng bạn. Vì lý do đó, thiết lập này ưu tiên một cách tiếp cận rõ ràng và đơn giản. Làm như vậy sẽ để lại một vài tính năng cần thêm vào và các cải tiến cần theo đuổi. Phần kết luận của hướng dẫn này cung cấp một số gợi ý để thiết lập này phù hợp nhất với nhu cầu cụ thể của bạn.
Tổng quan về Terraform Provisioning
Có lẽ cách hiệu quả nhất để triển khai cụm Nomad là thông qua Terraform , một công cụ khác của HashiCorp. Với Terraform, bạn có thể cung cấp cơ sở hạ tầng dưới dạng mã, tự động hóa quy trình triển khai. Điều này đặc biệt tiện lợi với Nomad. Terraform phối hợp cấu hình và triển khai giữa tất cả các nút trong cụm, ngoài việc tiết kiệm thời gian cài đặt và thiết lập thủ công trên mỗi nút. Tìm hiểu thêm về cách sử dụng Terraform, đặc biệt là để cung cấp các phiên bản Linode, trong Hướng dẫn dành cho người mới bắt đầu về Terraform của chúng tôi .
Hướng dẫn này tận dụng tập lệnh Terraform tùy chỉnh của chúng tôi để triển khai cụm Nomad. Tập lệnh Terraform ở đây nhấn mạnh tính đơn giản và dễ đọc, hữu ích để bắt đầu sử dụng riêng của bạn.
Sau đây là tóm tắt về những gì tập lệnh Terraform thực hiện:
- Tạo một số lượng nhất định các nút máy chủ và máy khách Nomad. Tất cả các phiên bản triển khai trong một vùng duy nhất và tận dụng tính năng VLAN của Linode để giao tiếp đám mây riêng ảo (VPC) giữa các nút.
- Thực thi một tập lệnh trên mỗi nút để cài đặt Nomad, Consul và Docker.
- Chạy một tập lệnh trên mỗi nút máy chủ để cung cấp cấu hình máy chủ Consul và Nomad ban đầu. Lặp lại quy trình cho mỗi nút máy khách, thiết lập cấu hình để giao tiếp với các nút máy chủ.
- Khởi động Consul và Nomad để cụm có thể hoạt động và truy cập được vào cuối quá trình Terraform.
Triển khai cụm với Terraform
Thực hiện theo các bước được nêu ở đây khi bạn đã sẵn sàng triển khai cụm Nomad của riêng mình. Các bước này sẽ thiết lập Terraform, chuẩn bị tập lệnh và bắt đầu cung cấp cụm.
Cảnh báo: Cấu hình và lệnh được sử dụng trong hướng dẫn này sẽ thêm nhiều phiên bản Linode vào tài khoản của bạn. Hãy đảm bảo theo dõi chặt chẽ tài khoản của bạn trong Linode Cloud Manager để tránh các khoản phí không mong muốn.
1.Cài đặt Terraform bằng cách làm theo hướng dẫn cài đặt chính thức . Hướng dẫn này thiết lập cho bạn giao diện dòng lệnh Terraform (CLI).
2.Tải xuống .zip
kho lưu trữ tập lệnh Terraform của chúng tôi để triển khai cụm Nomad và các tệp đi kèm.
Sau khi tải xuống, hãy giải nén tệp lưu trữ bằng unzip
chương trình. Bộ lệnh bên dưới đặt thư mục Terraform vào thư mục home của người dùng hiện tại của bạn:
mv example-nomad-terraform.zip ~/
cd ~/
unzip example-nomad-terraform.zip
Điều này sẽ tạo ra một ~/example-nomad-terraform/
thư mục, hãy điều hướng vào đó:
cd ~/example-nomad-terraform/
Ghi chú: Bất kỳ lệnh và tham chiếu tệp nào khác đều giả định rằng bạn đang thao tác ngoài thư mục này.
3.Mở terraform.tfvars
tệp và cấu hình các biến ở đó. Sau đây là phân tích các biến và cách thiết lập chúng:
token
cần mã thông báo API Linode của bạn. Terraform sử dụng mã thông báo này để cung cấp các phiên bản Linode. Làm theo hướng dẫn Nhận mã thông báo truy cập API của chúng tôi để tạo mã thông báo truy cập cá nhân. Đảm bảo cấp cho mã thông báo quyền “Đọc/Ghi”.ssh_keys
lấy danh sách khóa công khai SSH. Các khóa này được thêm vào các máy chủ đã biết trên mỗi nút, cho phép SSH truy cập vào các nút. Nhập khóa công khai đầy đủ cho máy cục bộ của bạn trong một dòng.root_password
được sử dụng để thiết lập mật khẩu gốc cho mỗi nút.server_count
vàclient_count
chỉ định số lượng nút máy chủ và máy khách Nomad để cung cấp tương ứng. Nomad đề xuất ba hoặc năm nút máy chủ cho mỗi vùng. Hướng dẫn này sử dụng ba nút máy chủ và ba nút máy khách.region
xác định vùng Linode mà các nút sẽ được tạo trong đó. Danh sách đầy đủ các vùng và tên gọi của chúng có sẵn thông qua API vùng Linode . Tuy nhiên, hướng dẫn này sử dụng tính năng VLAN của Linode, tính năng này chỉ khả dụng cho một số vùng nhất định. Các vùng đó được liệt kê trên trang Tổng quan về VLAN .linode_image
trỏ đến một hình ảnh để sử dụng cho mỗi nút. Mặc định cho hướng dẫn này là hình ảnh Ubuntu 20.04 LTS. Tìm danh sách các hình ảnh có thể có thông qua API hình ảnh Linode . Lưu ý rằng việc thay đổi hình ảnh yêu cầu phải điều chỉnh các tập lệnh để cài đặt Consul, Nomad và Docker.server_type
vàclient_type
chỉ ra các loại phiên bản Linode để sử dụng cho các nút máy chủ và máy khách tương ứng. Mặc định cung cấp một phiên bản Chuyên dụng 4GB cho mỗi máy chủ Nomad, theo khuyến nghị, và một phiên bản Linode (chia sẻ) 4GB cho mỗi máy khách Nomad. Tìm danh sách đầy đủ các chỉ định loại phiên bản thông qua API loại Linode .
Cảnh báo: Dữ liệu cơ sở hạ tầng nhạy cảm, chẳng hạn như mật khẩu và mã thông báo, được hiển thị dưới dạng văn bản thuần túy trong terraform.tfvars
tệp. Xem lại Quản lý bí mật với Terraform để biết hướng dẫn về cách bảo mật các bí mật này.
4.Khởi tạo tập lệnh Terraform để cài đặt các trình cung cấp cần thiết, sau đó áp dụng tập lệnh để bắt đầu quá trình cung cấp:
erraform init
terraform apply
Quá trình này chạy trong một thời gian khi Terraform thiết lập các phiên bản máy chủ trước, sau đó là các phiên bản máy khách và sau đó chạy các tập lệnh cần thiết. Khi quá trình hoàn tất, một thông báo như thế này sẽ xuất hiện:
Apply complete! Resources: 12 added, 0 changed, 0 destroyed.
5.Tại thời điểm này, hãy truy cập giao diện Nomad để kiểm tra xem cụm có đang chạy và được kết nối hay không. Trong trình duyệt web, hãy điều hướng đến cổng 4646
trên địa chỉ IP công khai cho một trong các nút máy chủ của cụm. Ví dụ, nếu nomad-server-1
có địa chỉ IP công khai 192.0.2.0
, hãy điều hướng đến 192.0.2.0:4646
trong trình duyệt của bạn.
6.Sử dụng menu bên trái để điều hướng đến trang Máy chủ để xem danh sách các máy chủ Nomad được triển khai trong cụm:

7.Điều hướng đến trang Khách hàng từ cùng menu để xem danh sách các khách hàng Nomad đã triển khai:

Tạo một công việc Docker
Để xem cụm Nomad hoạt động, hãy tạo và thực hiện một tác vụ đơn giản trên đó. Thực tế, bạn có thể thực hiện tác vụ này ngay từ trong giao diện web Nomad.
Ví dụ này sử dụng một hình ảnh Docker đơn giản để mỗi nút máy khách phản hồi “Hello, world!” thông qua máy chủ HTTP.
1.Mở giao diện web Nomad từ một trong các nút máy chủ, như đã mô tả ở phần trước.
2.Điều hướng đến trang Việc làm từ menu bên trái và chọn nút Chạy việc làm ở góc trên bên phải.
3.Điều này nhắc nhở về Định nghĩa công việc , trong đó có thể chèn tập lệnh HCL để định nghĩa công việc. Đối với ví dụ này, hãy sử dụng tập lệnh công việc được cung cấp bên dưới:
job "example-docker-job" {
datacenters = ["dc-us-southeast-1"]
type = "service"
group "docker-example" {
count = 3
task "docker-server" {
driver = "docker"
config {
image = "hashicorp/http-echo:latest"
args = [
"-listen",
":3030",
"-text",
"Hello, world!",
]
}
resources {
network {
mbits = 10
port "http" {
static = "3030"
}
}
}
}
}
}
Thao tác này sẽ tạo ra một công việc có tên example-docker-job
và một nhóm gồm ba docker-server
tác vụ để khởi động http-echo
hình ảnh Docker của HashiCorp trên ba nút máy khách.
4.Chọn nút Plan ở cuối trang. Nếu được cung cấp tóm tắt về công việc, hãy chấp nhận bằng nút Run ở cuối trang.

5.Thao tác này sẽ mở trang Việc làm , với bản tóm tắt về quá trình thực hiện. Trang này cung cấp số liệu về công việc, bao gồm phân tích nhóm công việc và nhiệm vụ của nhóm. Trang này cũng cung cấp tùy chọn dừng công việc.

6.Để xem kết quả được phục vụ bởi Docker, hãy điều hướng đến cổng 3030
trên địa chỉ IP công khai của một trong các nút máy khách. Ví dụ, nếu một trong các máy khách có địa chỉ IP công khai 192.0.2.12
, hãy điều hướng đến 192.0.2.12:3030
trong trình duyệt web.
Hello, world!
Phần kết luận
Bây giờ bạn đã biết cách bắt đầu sắp xếp khối lượng công việc với Nomad. Hướng dẫn này bao gồm các bước cho mọi thứ, từ chạy một phiên bản Nomad duy nhất đến triển khai toàn bộ cụm Nomad.
Triển khai Terraform ở trên được coi là một cơ sở đơn giản, dễ tiếp cận. Tiếp tục cải tiến để đáp ứng tốt hơn nhu cầu cụ thể của riêng bạn. Sau đây là một số ý tưởng ban đầu để bắt đầu:
- Sử dụng Packer để xây dựng hình ảnh ban đầu. Điều này tiết kiệm thời gian triển khai và sẽ thay thế các bước trong
nomad-installations.sh
tập lệnh. Tìm hiểu thêm về Packer và sử dụng nó để tạo hình ảnh Linode trong hướng dẫn của chúng tôi Sử dụng Linode Packer Builder để tạo hình ảnh tùy chỉnh . - Tận dụng các tính năng Access Control List (ACL) của Consul để tăng cường bảo mật cho cụm. Các tính năng này có thể bảo mật các điểm truy cập của cụm thông qua các chính sách ACL. Tìm hiểu thêm trong tài liệu Secure Consul with Access Control Lists của HashiCorp .
- Triển khai nhiều vùng trong cụm Nomad. Nomad hỗ trợ liên kết nhiều vùng, cho phép cấu hình cụm một cách đáng tin cậy để phối hợp giữa các trung tâm dữ liệu ở các vùng khác nhau. Tìm hiểu thêm về quy trình này trong tài liệu Liên kết nhiều vùng của Nomad .
Ngoài các liên kết được cung cấp ở trên và trong suốt hướng dẫn này, hãy tham khảo các hướng dẫn Nomad của HashiCorp được liên kết bên dưới. Những hướng dẫn này có thể giúp bạn mở rộng hiểu biết về Nomad và các khả năng của nó để tận dụng tối đa cụm của riêng bạn.
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.
- Nhà phát triển HashiCorp: Nomad Tutorials – Bắt đầu
- Kevin Wang: Cụm du mục đầu tiên của tôi
- Pavel Sklenar: Tạo cụm Nomad hai nút
Nguồn : https://www.linode.com/docs/guides/using-nomad-for-orchestration/