Khám phá ElasticSearch: Tính năng Mở rộng theo chiều ngang - horizontal scalability

0 0 0

Người đăng: Son Do

Theo Viblo Asia

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

  1. 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.

  2. 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.

  1. 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

  1. 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.

  2. 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.

  3. 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 😄

Bình luận

Bài viết tương tự

- vừa được xem lúc

Elasticsearch là gì ?

. Lời nói đầu. Elasticsearch là gì .

0 0 36

- vừa được xem lúc

Backup và Restore Elasticsearch snapshot với AWS S3 trong Kubernetes

Ở công ty mình vừa có mấy task devops liên quan đến scaling, clustering Elasticsearch nên viết lại đề phòng sau này cần dùng. Có một task là chuyển dữ liệu từ single-node Elasticsearch cũ lên cluster mới.

0 0 52

- vừa được xem lúc

Reindex Elasticsearch data with zero downtime

Elasticsearch là một search engine tuyệt vời cho mọi dự án muốn áp dụng chức năng search cho sản phẩm của mình, với những tính năng như là near-realtime search, auto-complete, suggestion,.... Cùng với đó là lợi thế kiến trúc distributed search system, có thể dễ dàng scaling, failing handle. Khi muốn

0 0 40

- vừa được xem lúc

Fork you ElasticSearch! How Open Source Works

ElasticSearch recently dropped its open-source licensing strategy, prompting AWS to fork it. Learn how "Open Source" actually works and how companies profit from it.

0 0 57

- vừa được xem lúc

Tìm hiểu Text và Keyword trong Elasticsearch

Giới thiệu. Khi mình mới bắt đầu tìm hiểu về Elasticsearch mình không nghĩ rằng giữa kiểu dữ liệu Text và Keyword có sự khác nhau nhưng khi vào dự án thực tế mình mới nhận ra được sự khác biệt giữa 2

0 0 141

- vừa được xem lúc

Tìm hiểu và cài đặt Elasticsearch

Elasticsearch là gì. Elasticsearch cung cấp công cụ tìm tiếm và phân tích gần như là thời gian thực, áp dụng với mọi kiểu dữ liệu - văn bản có cấu trúc hoặc phi cấu trúc, số, thông tin địa lý.

0 0 115