0

⚙️ elasticsearch.yml Là Gì? Trái Tim Và Bộ Tủy Của Hệ Thống Elasticsearch

elasticsearch.yml là tệp cấu hình (configuration file) trung tâm của mọi node trong hệ thống Elasticsearch. Nó được viết bằng định dạng YAML (YAML Ain't Markup Language). Nếu Elasticsearch là một cỗ máy tìm kiếm và phân tích dữ liệu khổng lồ, thì tệp này chính là bảng điều khiển — nơi bạn định nghĩa danh tính của node, cách nó giao tiếp với mạng lưới, vị trí lưu trữ dữ liệu và các cơ chế bảo mật.

Tệp này thường nằm ở thư mục /etc/elasticsearch/ (trên Linux khi cài qua RPM/Debian) hoặc trong thư mục config/ (nếu tải bản cài đặt .tar.gz hoặc .zip).

1. Các Nhóm Cấu Hình Cốt Lõi (Core Settings)

Một file elasticsearch.yml tiêu chuẩn xoay quanh 5 nhóm cấu hình chính. Dưới đây là giải mã chi tiết các thông số quan trọng nhất:

Thông tin Định danh (Cluster & Node)

Giúp các node nhận diện nhau và gộp chung thành một cụm (cluster) thống nhất.

  • cluster.name: Tên của cụm Elasticsearch. Một node chỉ tham gia vào cụm nếu nó có cùng cluster.name với các node khác. (Mặc định là elasticsearch).

  • node.name: Tên hiển thị của node hiện tại. Giúp bạn dễ dàng theo dõi log và quản lý node trên Kibana. (Mặc định lấy tên hostname của máy chủ).

Đường dẫn Lưu trữ (Paths)

Xác định nơi Elasticsearch sẽ ghi dữ liệu thực tế và log lỗi. Rất quan trọng khi cấu hình server chạy production.

  • path.data: Thư mục lưu trữ dữ liệu index (chỉ mục). Trên môi trường thực tế, đường dẫn này thường trỏ tới một ổ cứng riêng biệt (SSD) để tối ưu tốc độ đọc/ghi.

  • path.logs: Thư mục lưu file log của hệ thống.

Mạng lưới (Network)

Quyết định cách Elasticsearch giao tiếp với thế giới bên ngoài.

  • network.host: Địa chỉ IP mà node sẽ lắng nghe (bind). Đặt là localhost (mặc định) nếu chỉ chạy ở máy cá nhân. Đặt là IP của server (hoặc 0.0.0.0) nếu muốn các máy khác truy cập được.

  • http.port: Cổng để giao tiếp qua HTTP REST API (mặc định là 9200).

Khám phá và Mở rộng (Discovery & Cluster Formation)

Cấu hình bắt buộc khi bạn chạy từ 2 node trở lên (Clustering).

  • discovery.seed_hosts: Danh sách IP hoặc tên miền của các node khác trong cụm để node này tìm đến và kết nối khi khởi động.

  • cluster.initial_master_nodes: Danh sách các node được phép tham gia vào cuộc bầu cử "Master Node" lần đầu tiên khi cụm mới được khởi tạo.

2. Ví dụ Một Cấu Hình Chuẩn Dành Cho Production

Đây là cấu trúc phổ biến của file elasticsearch.yml cho một node hoạt động trong cụm đa máy chủ:

YAML

# Định danh
cluster.name: production-logs-cluster
node.name: node-1
node.roles: [master, data] # Xác định vai trò của node

# Đường dẫn
path.data: /var/lib/elasticsearch/data
path.logs: /var/log/elasticsearch

# Mạng
network.host: 10.0.0.5 # IP nội bộ của server
http.port: 9200

# Discovery
discovery.seed_hosts: ["10.0.0.5", "10.0.0.6", "10.0.0.7"]
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# Bảo mật (X-Pack Security)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

3. Ba Nguyên Tắc Sống Còn Khi Chỉnh Sửa elasticsearch.yml

  1. Cực kỳ nhạy cảm với khoảng trắng (Indentation): YAML sử dụng khoảng trắng (space) để lùi đầu dòng. Tuyệt đối không dùng phím TAB, nếu không Elasticsearch sẽ báo lỗi cú pháp và từ chối khởi động. Sau dấu hai chấm : luôn phải có một dấu cách (ví dụ: cluster.name: my-cluster).

  2. Bẫy Bootstrapping Checks: Khi bạn đổi network.host từ localhost sang một IP public hoặc 0.0.0.0, Elasticsearch sẽ tự động chuyển từ chế độ "Development" sang chế độ "Production". Lúc này, hệ thống sẽ chạy một loạt các bài kiểm tra nghiêm ngặt (Bootstrapping checks) về dung lượng RAM, số lượng file descriptors. Nếu server không đáp ứng đủ cấu hình OS, node sẽ bị crash ngay lập tức.

  3. Biến môi trường cho dữ liệu nhạy cảm: Đừng ghi thẳng mật khẩu hoặc thông tin nhạy cảm vào file này. Hãy sử dụng cú pháp ${BIEN_MOI_TRUONG} để Elasticsearch tự động lấy giá trị từ hệ điều hành.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí