Khám phá ElasticSearch: Tính năng Mở rộng theo chiều ngang - horizontal scalability
Gắn bó với Elasticsearch trong suốt nhiều năm, mình muốn chia sẻ về một tính năng rất đắc biệt giúp Elasticsearch trở thành công cực kỳ trong thế giới công nghệ hiện nay: Đó là tính năng mở rộng theo chiều ngang (horizontal scalability).
Tính năng Mở rộng theo chiều ngang là gì?
Khi bạn bắt đầu sử dụng Elasticsearch, ban đầu chỉ có thể cần một cái node đơn lẻ để chạy, đầy dừ liệu hoặc phục vụ những nhu cầu tìm kiếm đơn giản. Nhưng khi ứng dụng của bạn lớn dần, dữ liệu tăng lên nhanh chóng, và nhu cầu truy vấn phức tạp hơn, đó chính là lúc tính năng mở rộng theo chiều ngang phát huy sức mạnh.
Với Elasticsearch, khi bạn gặp giới hạn tài nguyên, bạn chỉ cần thêm một node mới vào cluster. Elasticsearch tự động:
- Phân bổ dữ liệu.
- Tạo replica shard để tăng tính độ tin cậy.
Như Elastic có mô tả:
“Khi bạn thêm nhiều node vào cluster, hệ thống sẽ tự động phân bổ shard và tăng khả năng chuẩn bị cho tương lai.”
Mình tự hỏi, cấu hình và vận hành cluster có những thách thức, nhưng Elasticsearch thật sự đã giải quyết nhiều điều rắc rối đó với giao diện trực quan và tài liệu rõ ràng.
Chúng ta sẽ xem cách làm cụ thể như thế nào theo các bước dưới đây nhé.
Cách thêm node vào cluster
Hiện tại, đơn giản chỉ có 1 node
Giả sử bạn đang có một cluster đơn node. Node này vừa là master node, vừa là data node.
Cấu hình ban đầu trong file elasticsearch.yml
như sau:
cluster.name: my_cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: []
cluster.initial_master_nodes: ["node-1"]
Thêm node mới vào cluster
-
Cài đặt Elasticsearch trên máy mới: Tải và cài đặt Elasticsearch theo hướng dẫn từ trang Elastic.
-
Cấu hình node mới: Trong file
elasticsearch.yml
của node mới:cluster.name: my_cluster node.name: node-2 network.host: 0.0.0.0 discovery.seed_hosts: ["<địa_chỉ_node_1>"] cluster.initial_master_nodes: []
Lưu ý thay `<địa_chỉ_node_1>` bằng IP hoặc hostname của node 1.
3. **Khởi động node mới:**
Node 2 sẽ kết nối vào cluster hiện có nhờ discovery seed host.
#### Cách kiểm tra cluster với node mới thêm vào
1. **Kiểm tra danh sách node:**
Dùng API:
```bash
GET _cat/nodes?v
Kết quả sẽ liệt kê tất cả các node trong cluster.
-
Kiểm tra cluster health: Dùng API:
GET _cluster/health
Cluster health sẽ chỉ tình trạng chung của cluster hiện tại (green, yellow, red).
Side note: đừng lo lắng khi mới thêm node, cluster của bạn yellow hay red, bởi vì lúc đó Elasticsearch đang "phải" làm một số hành động, mình liệt kê bên dưới.
Những hành động của Elasticsearch khi thêm node mới
-
Phân bổ shard: Elasticsearch tự động phân chia dữ liệu (shard) giữa các node, đảm bảo không node nào bị quá tải.
-
Tạo replica shard: Tăng khả năng chịu lỗi bằng cách sao lưu shard sang node mới.
-
Tăng hiệu năng truy vấn: Truy vấn được chia nhỏ cho các node, giảm độ trễn cho từng node.
Điều gì đặc biệt với Elasticsearch?
Một điều khiến mình cảm thấy đánh giá cao đó là tính tự động của hệ thống.
Khi bạn thêm node:
- Elasticsearch không chỉ tăng dung lượng mà còn tăng cả khả năng chịu lỗi.
- Đều này có ý nghĩa quản trọng trong việc đảm bảo hệ thống ổn định ngay cả khi dữ liệu tăng trưởng đột ngột.
Theo bạn, Elasticsearch thật sự là một đối tác đáng tin cậy khi các ứng dụng của bạn
All Rights Reserved