Bằng việc chạy các agent đầu tiên và các job trong chế độ development, Nomad đã cho thấy được sự dễ sử dụng và chỉ ra được quy trình làm việc. Tuy nhiên, việc cấu hình này không phù hợp cho môi trường production. Trong phần này sẽ là những hướng dẫn để tạo cluster với nhiều nodes.
Starting the Server
Tải tập tin từ repository và hoặc tạo file mới server.hcl và paste vào nội dung bên dưới, để tạo tập tin cấu hình cho máy chủ:
# Increase log verbosity
log_level = "DEBUG"
# Setup data dir
data_dir = "/tmp/server1"
# Enable the server
server {
enabled = true
# Self-elect, should be 3 or 5 for production
bootstrap_expect = 1
}
Đây là một tệp cấu hình máy chủ khá ngắn gọn, nhưng nó đủ để chạy agent với vai trò Leader. Sự khác biệt lớn đối với môi trường Production là sẽ có nhiều server hơn, và giá trị của tham số bootstrap_expect cũng bị thay đổi tương ứng.
Một khi tập tin đã được tạo, hãy start agent ở tab mới:
$ nomad agent -config server.hcl
==> WARNING: Bootstrap mode enabled! Potentially unsafe operation.
==> Starting Nomad agent...
==> Nomad agent configuration:
Client: false
Log Level: DEBUG
Region: global (DC: dc1)
Server: true
Version: 0.9.6
==> Nomad agent started! Log data will stream in below:
[INFO] serf: EventMemberJoin: nomad.global 127.0.0.1
[INFO] nomad: starting 4 scheduling worker(s) for [service batch _core]
[INFO] raft: Node at 127.0.0.1:4647 [Follower] entering Follower state
[INFO] nomad: adding server nomad.global (Addr: 127.0.0.1:4647) (DC: dc1)
[WARN] raft: Heartbeat timeout reached, starting election
[INFO] raft: Node at 127.0.0.1:4647 [Candidate] entering Candidate state
[DEBUG] raft: Votes needed: 1
[DEBUG] raft: Vote granted. Tally: 1
[INFO] raft: Election won. Tally: 1
[INFO] raft: Node at 127.0.0.1:4647 [Leader] entering Leader state
[INFO] nomad: cluster leadership acquired
[INFO] raft: Disabling EnableSingleNode (bootstrap)
[DEBUG] raft: Node 127.0.0.1:4647 updated peer set (2): [127.0.0.1:4647]
Lúc này, chúng ta chỉ thực thi với vai trò như một server, chế độ client đã bị tắt. Server sẽ quản lý trạng thái và tạo lịch nhưng không thực hiện bất kỳ tác vụ nào. Bây giờ, chúng ta cần một vài agent để thực thi các tác vụ.
Starting the Clients
Tương tự như server, chúng ta cũng cần cấu hình cho Client trước tiên. Hoặc là download file cấu hình từ Repository, hoặc copy và paste vào nội dung sau vào file client1.hcl:
# Increase log verbosity
log_level = "DEBUG"
# Setup data dir
data_dir = "/tmp/client1"
# Give the agent a unique name. Defaults to hostname
name = "client1"
# Enable the client
client {
enabled = true
# For demo assume we are talking to server1. For production,
# this should be like "nomad.service.consul:4647" and a system
# like Consul used for service discovery.
servers = ["127.0.0.1:4647"]
}
# Modify our port to avoid a collision with server1
ports {
http = 5656
}
Sao chép tập tin vừa tạo và đặt tên là client2.hcl. Bạn cần phải thay đổi những thông tin sau trước khi thực hiện bước tiếp theo:
– Thay đổi data_dir thành /tmp/client2
– Thay đổi name thành client2
– Thay đổi port http thành 5657
Những thông tin này thực hiện đối với cả client1 và client2, khi đó ta sẽ có client1.hcl và client2.hcl hoàn chỉnh. Mở tab mới cho từng agent và bắt đầu agent trên từng client:
$ sudo nomad agent -config client1.hcl
==> Starting Nomad agent...
==> Nomad agent configuration:
Client: true
Log Level: DEBUG
Region: global (DC: dc1)
Server: false
Version: 0.9.6
==> Nomad agent started! Log data will stream in below:
[DEBUG] client: applied fingerprints [host memory storage arch cpu]
[DEBUG] client: available drivers [docker exec]
[DEBUG] client: node registration complete
...
Ngược lại với server, các agent chỉ chạy client mode sẽ thực hiện các tác vụ nhưng lại không tham gia vào tiến trình quản lý trạng thái hay đưa ra các quyết định tạo lịch.
Sử dụng lệnh node status để kiểm tra tính sẵn sàng của node. Như hình bên dưới có thể thấy cả hai node đang trong trạng thái ready:
$ nomad node status
ID DC Name Class Drain Eligibility Status
fca62612 dc1 client1 <none> false eligible ready
c887deef dc1 client2 <none> false eligible ready
Sau các bước demo ở trên, ta có được 3 node cluster đơn giản đang chạy. Khi đưa vào vận hành trực tiếp với production cluster chúng ta nên có 3 hoặc 5 server thay vì chỉ 1 như hướng dẫn ở trên.
Submit a Job
Đến đây, với cluster đã tạo, bạn có thể tạo lịch job, kết hợp một tập tin công việc example.nomad đã có trước đó. Xác nhận bằng lệnh count. Sau đó, submit the job bằng nút lệnh job run.
$ nomad job run example.nomad
==> Monitoring evaluation "8e0a7cf9"
Evaluation triggered by job "example"
Evaluation within deployment: "0917b771"
Allocation "501154ac" created: node "c887deef", group "cache"
Allocation "7e2b3900" created: node "fca62612", group "cache"
Allocation "9c66fcaf" created: node "c887deef", group "cache"
Evaluation status changed: "pending" -> "complete"
==> Evaluation "8e0a7cf9" finished with status "complete"
Trên hình thể hiện hai tác vụ được gán lần lượt trên hai client.
Chúng ta xác nhận lại một lần nữa bằng nút lệnh status:
$ nomad status example
ID = example
Name = example
Submit Date = 07/26/19 16:34:58 UTC
Type = service
Priority = 50
Datacenters = dc1
Status = running
Periodic = false
Parameterized = false
Summary
Task Group Queued Starting Running Failed Complete Lost
cache 0 0 3 0 0 0
Latest Deployment
ID = fc49bd6c
Status = running
Description = Deployment is running
Deployed
Task Group Desired Placed Healthy Unhealthy
cache 3 3 0 0
Allocations
ID Eval ID Node ID Task Group Desired Status Created At
501154ac 8e0a7cf9 c887deef cache run running 08/08/19 21:03:19 CDT
7e2b3900 8e0a7cf9 fca62612 cache run running 08/08/19 21:03:19 CDT
9c66fcaf 8e0a7cf9 c887deef cache run running 08/08/19 21:03:19 CDT
Trên hình, các tác vụ đều đã được phân bổ và đang chạy, để stop sử dụng lệnh nomad job stop. Cluster được quản lý hoàn toàn bằng các dòng lệnh, giao diện người dùng web thì được sử dụng thông qua API HTTP. Bạn có thể chạy lại example job nếu đã dừng trước đó, và cũng có thể chuyển sang phần tiếp theo.
Người viết:
LK
Đăng ký liền tay Nhận Ngay Bài Mới
Subscribe ngay
Cám ơn bạn đã đăng ký !
Lỗi đăng ký !
Add Comment