DevOPS Nomad

Hướng dẫn Nomad Phần 3: Start Nomad Agent

Nomad phụ thuộc nhiều vào các agent được cài đặt trên mỗi máy trong Cluster. Các agent có thể chạy ở chế độ server hoặc client. Các server trong Cluster chịu tránh nhiệm quản lý Cluster. Còn tất cả các agent còn lại sẽ chạy ở chế độ client. Tiến trình của Nomad client khá nhẹ, thực hiện việc heartbeating và chạy các tác vụ do server giao phó. Agent phải chạy trên mỗi Node và nó là một phần của Cluster để Server có thể giao tác vụ cho những máy này. 
Trong bài này, bạn sẽ khởi tạo một Nomad agent trong chế độ phát triển ( development mode ). Chế độ này được dùng để Start nhanh một agent, có vai trò như client và server, phục vụ cho việc test cấu hình hoặc tương tác với các loại giao thức. Bạn cũng sẽ sử dụng câu lệnh  nomad  để xem các trạng thái và mối quan hệ của server và agent. Cuối cùng, bạn sẽ Stop agent.

Start the agent

Start một Nomad agent trong chế độ phát triển với câu lệnh nomad agent . Đây là câu lệnh không nên được sử dụng trong môi trường Production, bởi vì nó sẽ không giữ được trạng thái bền vững cho process.

$ sudo nomad agent -dev

Với câu lệnh này, agent sẽ start với cả 2 chế độ là server và client. Hãy đợi cho đến khi nhìn thấy  cụm từ “acquired leadership”.

==> No configuration files loaded
==> Starting Nomad agent...
==> Nomad agent configuration:

       Advertise Addrs: HTTP: 127.0.0.1:4646; RPC: 127.0.0.1:4647; 
Serf: 127.0.0.1:4648
            Bind Addrs: HTTP: 127.0.0.1:4646; RPC: 127.0.0.1:4647; 
Serf: 127.0.0.1:4648
                Client: true
             Log Level: DEBUG
                Region: global (DC: dc1)
                Server: true
               Version: 0.10.4

==> Nomad agent started! Log data will stream in below:

  [DEBUG] agent.plugin_loader.docker: using client connection 
initialized from environment: plugin_dir=
  [DEBUG] agent.plugin_loader.docker: using client connection 
initialized from environment:  plugin_dir=
  [INFO]  agent: detected plugin: name=raw_exec type=driver
 plugin_version=0.1.0
  [INFO]  agent: detected plugin: name=exec type=driver
 plugin_version=0.1.0
  [INFO]  agent: detected plugin: name=qemu type=driver 
plugin_version=0.1.0
  [INFO]  agent: detected plugin: name=java type=driver 
plugin_version=0.1.0
  [INFO]  agent: detected plugin: name=docker type=driver 
plugin_version=0.1.0
  [INFO]  nomad: raft: Initial configuration (index=1):
 [{Suffrage:Voter ID:127.0.0.1:4647 Address:127.0.0.1:4647}]
  [INFO]  nomad: raft: Node at 127.0.0.1:4647 [Follower] 
entering Follower state (Leader: "")
  [INFO]  nomad: serf: EventMemberJoin: Kaitlins-MBP.global 127.0.0.1
  [INFO]  nomad: starting scheduling worker(s): num_workers=8 
schedulers=[service, batch, system, _core]    
2020-03-21T12:37:19.707-0500 [INFO]  client: node registration complete
  [INFO]  nomad: adding server: server="Kaitlins-MBP.global
(Addr: 127.0.0.1:4647) (DC: dc1)"
  [DEBUG] nomad: lost contact with Nomad quorum, falling 
back to Consul for server list
  [INFO]  client: using state directory: state_dir=/private/var/folders/92/
 ctgjkbzx3718ws9q0vmp3v700000gp/T/NomadClient596211523
  [ERROR] nomad: error looking up Nomad servers in Consul: 
error="server.nomad: unable to query Consul datacenters: 
Get http://127.0.0.1:8500/v1/catalog/datacenters: 
 dial tcp 127.0.0.1:8500: connect: connection refused"
  [INFO]  client: using alloc directory: 
alloc_dir=/private/var/folders/92/ ctgjkbzx3718ws9q0vmp3v700000gp/T/NomadClient805410758
  ...
  [WARN]  nomad: raft: Heartbeat timeout from "" 
reached, starting election
  [INFO]  nomad: raft: Node at 127.0.0.1:4647 
[Candidate] entering Candidate state in term 2
  [DEBUG] nomad: raft: Votes needed: 1
  [DEBUG] nomad: raft: Vote granted from 127.0.0.1:4647 in term 2. Tally: 1
  [INFO]  nomad: raft: Election won. Tally: 1
  [INFO]  nomad: raft: Node at 127.0.0.1:4647 [Leader] entering Leader state
  [INFO]  nomad: cluster leadership acquired

Trung tâm dữ liệu của Consul lỗi, bởi vì Nomad agent chưa cài đặt agent Consul. Trong chế độ phát triển, Nomad agent sẽ có thể hoạt động mà không cần tới Consul và nó không ảnh hưởng đến tiến trình của bạn.

Lưu ý: Bất kỳ những loại agent nào như thế này để chạy trong chế độ Client đều phải được thực thi với quyền Root. Nomad sẽ sử dụng tài nguyên của hệ thống do đó cần phải có đặc quyền của root.

Kiểm tra thông tin của Agent

Trong một cửa sổ terminal khác, sử dụng nomad node status để xem những node đã đăng ký với Nomad Cluster.

$ nomad node status

Khi bạn chỉ có một agent trên local, đầu ra bạn sẽ nhìn thấy chỉ có một node.

ID        DC   Name          Class   Drain  Eligibility  Status
3f12597f  dc1  Kaitlins-MBP  <none>  false  eligible     ready

Thông số đầu ra sẽ cho bạn thấy giá trị Node ID, Node Name, Node Class, Drain mode và trạng thái hiện tại. Node ID là giá trị sẽ được sinh ra một cách ngẫu nhiên.

Agent cũng nằm trong chế độ server, điều này có nghĩa là nó cũng sử dụng giao thức “Gossip protocol” để kết nối tất cả các server lại với nhau. Bạn có thể xem những thành viên của gossip bằng việc sử dụng server members  câu lệnh:

$ nomad server members

Bạn sẽ nhìn thấy đầu ra như sau.

Name                 Address    Port  Status  Leader  Protocol  Build   Datacenter  Region
Kaitlins-MBP.global  127.0.0.1  4648  alive   true    2         0.10.4  dc1         global

Tại đây bạn sẽ thấy địa chỉ IP, tình trạng sức khỏe, thông tin về version, datacenter và region. Để xem chi tiết các thuộc tính, bạn có sử dụng cờ -detailed  .

Stop the agent

Bạn có thể sử dụng Ctrl-C để ngắt tiến trình, dừng agent. Mặc định, tất cả các tín hiệu của agent Nomad sẽ bị ép phải dừng. Agent Nomad đã được cấu hình để thực hiện việc này, nên chúng sẽ không ảnh hưởng gì.

Sau khi làm gián đoạn agent, bạn sẽ thấy thông báo “shutdown”:

^C==> Caught signal: interrupt
  [DEBUG] http: shutting down http server
  [INFO]  agent: requesting shutdown
  [INFO]  client: shutting down
  [INFO]  client.plugin: shutting down plugin manager: plugin-type=device
  [INFO]  client.plugin: plugin manager finished: plugin-type=device
  [INFO]  client.plugin: shutting down plugin manager: plugin-type=driver
  [INFO]  client.plugin: plugin manager finished: plugin-type=driver
  [DEBUG] client.server_mgr: shutting down
  [INFO]  nomad: shutting down server
  [WARN]  nomad: serf: Shutdown without a Leave
  [INFO]  agent: shutdown complete

Nomad server thông báo là các Node đã rời khỏi. Khi một server rời ra, việc replication trên server sẽ dừng lại. Những Nomad client sẽ cập nhật trạng thái của chúng để ngăn chặn những tác vụ từ Schedule và bắt đầu chuyển tất tác vụ hiện có đến một nơi khác trong Cluster.

Tiếp Theo

Trong bài này, bạn đã start một agent Nomad ở local trong chế độ phát triển. Bạn đã sử dụng câu lệnh nomad  để xem những thông tin về agent.

Start agent trở lại với câu lệnh sudo nomad agent -dev  trước khi qua bài tiếp theo.

$ sudo nomad agent -dev
 

Người Viết:
LK

Add Comment

Click here to post a comment