Tổng quan về Master Node trong Elasticsearch Cluster

95

Tìm hiểu về Master Node trong Elasticsearch ClusterCuongquach.com | Có lẽ bạn đã tìm hiểu tổng quan về các thành phần máy chủ dịch vụ trong cụm phân tán Cluster Elasticsearch (ES Cluster) (Xem thêm: Tìm hiểu về Elasticsearch Cluster). Thì đến với bài viết này chúng ta sẽ cùng đề cập chi tiết hơn tí về một thành phần trong ES Cluster đó là : Master Node . Master Node đóng vai trò gì ? Vận hành ra sao ?

tổng quan master node trong elasticsearch cluster

Có thể bạn cũng quan tâm chủ đề khác
Những lưu ý thường gặp khi sử dụng Filebeat gửi log
Tạo Document cơ bản trong Elasticsearch 
Tạo Index cơ bản trong Elasticsearch
Tìm hiểu Logstash trong ELK

Master Node trong Elasticsearch Cluster là gì?

Master Node chịu trách nhiệm cho các hoạt động quản lý tạo/xoá Index, tái sắp xếp shard, thêm hoặc xoá một Node Elasticsearch khỏi Cluster,… Bên cạnh đó, nếu trạng thái cluster của ES có sự thay đổi thì Master Node sẽ broadcast các sự thay đổi đến toàn bộ các node hiện hành trong hệ thống cluster. Nên đây là một trong những Node quan trọng nhất của một ES Cluster cần phải có.

Chỉ có một máy chủ Master Node hiện hành chạy trong hệ thống ES Cluster. Không thể có nhiều hơn 1 máy chủ Master Node cùng chạy trong Elasticsearch Cluster.

Bạn cần lưu ý 2 thuật ngữ:

  • Master Node: là máy chủ Elasticsearch Node đang chạy với vai trò Master Node. Được bầu chọn từ danh sách các máy chủ Master-eligible Node .
  • Master-eligible Node: là các máy chủ Elasticsearch Node được cấu hình sẵn sàng tham gia quá trình bầu chọn trở thành Master Node , nếu Master Node hiện hành bị sự cố.

Mặc định khi cài đặt Elasticsearch mới toanh thì, một Node ES sẽ vừa là Master Node vừa là Data Node.

Để cấu hình máy chủ chỉ chạy chức năng Master Node ES:

Phần cứng Master Node khuyến nghị
Nếu bạn cần tiết kiệm phần cứng thì số dưới là đủ cho một hệ thống Elasticsearch Cluster vừa phải. Vì Master Node không cần phải lưu trữ dữ liệu về log, nên chức năng workload cũng sẽ nhẹ hơn.

  • CPU : 2 – 4
  • RAM : 4 – 8GB
  • Disk : 50
  • Memory Heap : 75% RAM

Zen Discovery

Zen Discovery là một module cung cấp thuật toán kĩ thuật giúp Elasticsearch khám phá/kiểm tra ra các Node trong cụm phân tán ES Cluster khi mà trạng thái của chúng có sự thay đổi. Zen Discovery còn góp mặt trong các hoạt động như : bầu chọn Master Node, kiểm tra sự cố lỗi ở các Node, cập nhật trạng thái cluster,… Đây là kĩ thuật mặc định mà Elasticsearch sử dụng để khám phá/kiểm tra và giao tiếp giữa các Node trong cụm phân tán.

Data Node và Master Node phát hiện ra nhau bằng 2 cách

  • Ping: đây là một tiến trình mà một Node sẽ sử dụng kĩ thuật zen discovery để tìm kiếm và kiểm tra các Node khác. Master Node sẽ ping toàn bộ các Node trong cluster để đảm bảo tất cả các Node khác đều đang vận hành chạy. Ở phần còn lại, thì tất cả các Node còn lại như Client Node, Data Nodes,.. sẽ tiến hành ping Master Node để xác định xem Master Node còn sống hay không ? Nếu chết thì sẽ tiến hành bầu chọn lại Master Node.
  • Unicast: unicast discovery yêu cầu một danh sách các host được cấu hình sẵn sàng làm Master Node. Bạn sẽ phải định nghĩa một danh sách thông tin Master-eligible Node (các host sẵn sàng tham gia bầu chọn Master Node). Điều này giúp một Node mới muốn gia nhập ES cluster thì chỉ cần kết nối giao tiếp đến các Master-eligible Node, nằm trong phần cấu hình unicast discovery, xem ai đang là Master Node để xin gia nhập cluster.

Cơ chế phát hiện lỗi ở các Node trong ES Cluster

Có hai quá trình phát hiện lỗi được chạy cùng lúc :

  • Đầu tiên là ở Master Node, node này sẽ ping tất cả các Node khác trong cụm phân tán và xác minh rằng chúng còn sống.
master node ping các node khác trong es cluster
master node ping các node khác trong es cluster
  • Còn lại là ở các Node khác ngoại trừ Master Node, mỗi Node tiến hành ping Master Node để xác minh xem Master Node vẫn còn sống không? Nếu Master Node chết thì quá trình bầu cử Master Node mới sẽ được bắt đầu.
các node khác ping master node trong es cluster
các node khác ping master node trong es cluster

Quá trình cập nhật trạng thái ES Cluster

Master Node là node duy nhất trong cụm phân tán ES Cluster được phép thay đổi trạng thái của cluster. Master Node xử lý một cập nhật trạng thái cluter theo hàng đợi (nếu có nhiều thay đổi), cập nhật sự thay đổi và thông báo sự thay đổi trạng thái của cluster đến toàn bộ các node trong cụm phân tán.

Mỗi node sẽ nhận được một thông điệp thông báo và buộc phải phản hồi xác nhận đã nhận được thông điệp đó (ack), nhưng các node sẽ không cập nhật trạng thái mới liền. Vì trong thời gian đó, Master Node sẽ phải đợi nhận được thông điệp xác nhận (ack) từ tối thiểu các máy chủ ES Master-eligible Node đang ở chế độ sẵn sàng ‘discovery.zen.minimum_master_nodes và ‘node.master=true‘ trong một khoảng thời gian (mặc định 30 giây) trước khi quyết định là thông điệp thay đổi trạng thái cluster đó có bị huỷ bỏ hay không.

master node cập nhật trạng thái cluster
master node cập nhật trạng thái cluster

Một khi Master Node nhận được đầy đủ phản hồi xác nhận từ các Node về thông điệp trước đó, thì Master Node sẽ chính thức áp dụng sự thay đổi về trạng thái cluster và một thông điệp lần nữa được gửi đến các Node để báo các Node hãy lập tức thay đổi thông tin về trạng thái cluster ES mà các Node đang giữ. Master Node sẽ đợi phản hồi xác nhận đã cập nhật trạng thái cluster ES từ các Node, nếu timeout sẽ gửi lại.

Quá trình bầu chọn Master Node

Quá trình thực hiện bầu chọn Master Node thường được tự động xử lý bầu chọn Master Node mới. Bạn không thể chỉ định cụ thể Node nào sẽ là Node Master theo mong muốn, quá trình này là ngẫu nhiên và tự Elasticsearch vận hành khi gặp đủ điều kiện bầu chọn Master Node mới:

  • Điều kiện 1: là có ít nhất một Master-eligible Node được cấu hình ‘node.master: true‘, nếu chỉ có 1 Node thì tự thân nó sẽ bầu chọn là Master Node. Nếu có nhiều Master-eligible Node thì chúng sẽ tự liên lạc với nhau qua kĩ thuật Zen Discovery để tự bầu Master Node mới.
  • Điều kiện 2: thông số ‘discovery.zen.minimum_master_nodes‘ quy định số lượng tối thiểu các Master-eligible Node cần có trong mạng để tham gia tiến trình bầu chọn Master Node mới. Đây cũng là con số tối thiểu mà một Node cần phải thấy (giao tiếp được) để có thể bắt đầu quá trình hoạt động trong ES Cluster. Nếu hệ thống Cluster không đáp ứng được thông số tối thiểu Master-eligible Node cần có này, thì Master Node hiện hành sẽ dừng hoạt động và quá trình bầu chọn mới cũng sẽ được bắt đầu.

Thông số ‘discovery.zen.minimum_master_nodes‘ , sẽ được đề cập tính toán trong phần ‘Số lượng Master Node tối thiểu‘.

Khi mà Master Node dừng hoạt động hoặc gặp bất kì sự cố gián đoạn về hạ tầng hay mạng, toàn bộ các Node còn lại trong cụm cluster lúc đó sẽ thực hiện quá trình ping Master Node kiểm tra định kì. Tại sao phải toàn bộ các Node còn lại ping đến Master Node ? Vì lỡ 1 Node có vấn đề về mạng với Master Node gây ra cảnh báo giả, thì lúc này Node đó cần phải kiểm tra thông tin các Node khác xem có phải là cả đám node đều không thể ping được con Node Master hiện hành hay không ? Từ đó mới xác định là Master Node đã chết và bắt đầu quá trình bầu chọn Master Node mới.

Các Node có thể đứng ngoài quá trình bầu chọn Master Node nếu cấu hình ‘node.master’ là ‘false’. Điều đó có nghĩa Node đó không ở chế độ sẵn sàng cho việc bầu chọn trở thành Master Node trong Cluster ES Node.

Lưu ý:

  • Thông số “discovery.zen.ping_timeout“, thông số này quy định thời gian ping timeout mà một Node sẽ đợi trước khi quyết định bắt đầu một cuộc bầu chọn Master Node mới.
  • Thông số “discovery.zen.join_timeout“, thông số này quy định thời gian Node mới gửi request tham gia cluster cần đợi trước khi quyết định bắt đầu gửi lại request xin tham gia vào ES Cluster mới.

Mô hình Master Node thường gặp

Mô hình Master Node 1

Đầu tiên là mô hình tiết kiệm, nhiều người không muốn tách chức năng Master Node ra làm 1 Node riêng mà sẽ gộp chung Master Node với Data Node/Client Node. Vì tiết kiệm nên cũng không có nhu cầu giải pháp HA cho Master Node nên chỉ có 1 Master-eligible Node.

mô hình master node - 1

Mô hình Master Node 2

Vẫn tiết kiệm, nhưng muốn đảm bảo tính sẵn sàng hơn cho Master Node (node quan trọng mà) nên cấu hình đủ số lượng Master-eligible Node sẵn sàng tham gia quá trình bầu chọn Master Node mới theo công thức quorum. Con số tối ưu hợp lý thường là 3 Master-eligible Node.

Tại sao thường là 3 Master-eligible Node ? Chúng ta sẽ đón xem ở bài : Vấn đề Split-Brain trong Elasticsearch Cluster.

mô hình master node 2
mô hình master node 2

Mô hình Master Node 3

Bạn có điều kiện về phần cứng cũng như resource để có thể đảm bảo hệ thống Elasticsearch Cluster vận hành ngon lành. Thế là bạn sẽ tách Data/Client Node một lớp. Còn Master Node ra làm một lớp riêng và chạy đủ số lượng Master-eligible Node đảm bảo tính HA.

mô hình master node 3
mô hình master node 3

Tổng kết

Chà vậy là bạn đã nắm được tổng quan nhiều hơn về một trong những Node đóng vai trò quan trọng trong Elasticsearch Cluster là Master Node phải không nào ? Với Master Node bạn còn 2 nội dung khá quan trọng, đó là : xử lý vấn đề về Split-Brain trong Elasticsearch Cluster và Thực hành cấu hình Cluster liên quan Master Node. Hãy đón xem bài viết trên Cuongquach.com nhé.

Nguồn: https://cuongquach.com/

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]