Elasticsearch là một cơ sở dữ liệu không có SQL. Đây là công cụ tìm kiếm và phân tích phân tán, tìm kiếm và phân tích thời gian thực cho mọi loại dữ liệu. Elasticsearch có thể lưu trữ hiệu quả mọi loại dữ liệu, dù là văn bản có cấu trúc hay không có cấu trúc, dữ liệu số và lập chỉ mục theo cách hỗ trợ tìm kiếm nhanh. Elasticsearch cung cấp một REST API đơn giản để quản lý cụm và lập chỉ mục/ghi và tìm kiếm dữ liệu.
Elasticsearch được xây dựng bằng Java và bao gồm một phiên bản OpenJDK được đóng gói.
Để hiểu rõ hơn về Elasticsearch, hãy tham khảo tài liệu chính thức của Elasticsearch.
Trong bài viết này, chúng tôi sẽ chỉ tập trung vào cách thiết lập cụm gồm 3 Node.
Nếu bạn đang tìm kiếm một phiên bản cụ thể, bạn luôn có thể duyệt lưu trữ trên trang Elasticsearch. Luôn tốt khi sử dụng phiên bản mới nhất vì nó chứa tất cả các bản sửa lỗi cho các sự cố trong các phiên bản trước.
Để cài đặt OpenJDK 8, hãy sử dụng các lệnh sau trên Máy chủ Ubuntu 18.04 của bạn
Trên mỗi nút[/b]
Giải nén gói mà chúng ta vừa tải xuống ở bước trước bằng lệnh sau.
Ở đây chúng ta có 3 máy chủ
es-node-1: 10.11.10.62 (Máy chủ chính ban đầu)
es-node-2: 10.11.14.248
es-node-3: 10.11.13.158
Mở tệp config/elasticsearch.yml và thêm nội dung sau vào đó. (Kiểm tra IP của bạn)
Sử dụng lệnh sau để khởi động Elasticsearch ở chế độ nền trước
Lưu ý:
Elasticsearch sử dụng thư mục mmapfs theo mặc định để lưu trữ các chỉ mục của nó. Giới hạn mặc định của hệ điều hành đối với số lượng mmap có thể quá thấp, điều này có thể dẫn đến các trường hợp ngoại lệ hết bộ nhớ sau.
Trên Ubuntu 18.04, chúng ta có thể tăng giới hạn bằng cách chạy lệnh sau như root/sudo:
Thêm -d vào startđể bắt đầu Elasticsearch inbackground
Khi cụm bắt đầu, bạn có thể thấy nhật ký như sau trên es-node-1. Lưu ý cách các nút được thêm vào es-node-1 khi chúng được khởi động.
Kiểm tra cụm
Mở một thiết bị đầu cuối mới mà cụm có thể truy cập được và thử các lệnh sau
Elasticsearch được xây dựng bằng Java và bao gồm một phiên bản OpenJDK được đóng gói.
Để hiểu rõ hơn về Elasticsearch, hãy tham khảo tài liệu chính thức của Elasticsearch.
Trong bài viết này, chúng tôi sẽ chỉ tập trung vào cách thiết lập cụm gồm 3 Node.
Điều kiện tiên quyết
- Ubuntu 18.04 LTS
Những việc chúng tôi sẽ làm
- Tải xuống Elasticsearch
- Cài đặt Java 1.8
- Cài đặt và cấu hình Elasticsearch
- Kiểm tra Cluster
Tải xuống Elasticsearch
Đối với Linux, phiên bản hiện tại 7.4.2, tính đến thời điểm hiện tại, của Elasticsearch có thể được tải xuống bằng lệnh sau trên hệ thống Linux của bạn.Tải xuống trên mỗi nút (Tên thư mục có thể khác nhau)
Mã:
mkdir elastic1[B]cd elastic1/
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
Cài đặt Java
Elasticsearch cần Java khả dụng trên hệ thống.Để cài đặt OpenJDK 8, hãy sử dụng các lệnh sau trên Máy chủ Ubuntu 18.04 của bạn
Trên mỗi nút[/b]
Mã:
sudo apt update[B]sudo apt install openjdk-8-jdk
java --version
Cài đặt và cấu hình Elasticsearch
Bây giờ, đã đến lúc cài đặt Elasticsearch từ kho lưu trữ.Giải nén gói mà chúng ta vừa tải xuống ở bước trước bằng lệnh sau.
Cài đặt Elasticsearch trên từng nút
Mã:
tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
Cấu hình Elasticsearch
Trước khi bắt đầu dịch vụ, Elasticsearch cần được cấu hình để hoạt động ở chế độ Cluster.Ở đây chúng ta có 3 máy chủ
es-node-1: 10.11.10.62 (Máy chủ chính ban đầu)
es-node-2: 10.11.14.248
es-node-3: 10.11.13.158
Mở tệp config/elasticsearch.yml và thêm nội dung sau vào đó. (Kiểm tra IP của bạn)
Mã:
vimconfig/elasticsearch.yml
Thêm Masteres-node-1 vàoconfig/elasticsearch.yml[/b]
Mã:
#đặt tên cho cụm của bạn.[B]cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-1"
#xác định nút 1 là master-eligible:
node.master: true
#xác định nút 2 và 3 là nút dữ liệu:
node.data: true
#nhập IP riêng và cổng của nút của bạn:
network.host: 10.11.10.62
http.port: 9200
#chi tiết IP riêng của các nút của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
cluster.initial_master_nodes:
- 10.11.10.62
Add On es-node-2 inconfig/elasticsearch.yml (Nút này không chứa: cluster.initial_master_nodes)
Mã:
#đặt tên cho cụm của bạn.
cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-2"
#xác định nút 1 là master-eligible:
node.master: true
#xác định nút 2 và 3 là data nodes:
node.data: true
#nhập IP riêng và cổng của nút của bạn:
network.host: 10.11.14.248
http.port: 9200
#chi tiết IP riêng của các nút của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
Add On es-node-3 inconfig/elasticsearch.yml(Nút này không chứa: cluster.initial_master_nodes)
Mã:
#đặt tên cho cụm của bạn.
cluster.name: my-cluster
#đặt tên cho các nút của bạn (thay đổi số nút từ nút này sang nút khác).
node.name: "es-node-3"
#xác định nút 1 là master-eligible:
node.master: true
#xác định nút 2 và 3 là data nodes:
node.data: true
#nhập IP riêng và cổng của node của bạn:
network.host: 10.11.13.158
http.port: 9200
#chi tiết IP riêng của node của bạn:
discovery.zen.ping.unicast.hosts: ["10.11.10.62", "10.11.14.248","10.11.13.158"]
Khởi động và kiểm tra Cluster
Khởi động Cluster
Trên mỗi Node (Đầu tiên khởi động Master es-node1)[/b]Sử dụng lệnh sau để khởi động Elasticsearch ở chế độ nền trước
Mã:
bin/elasticsearch
Elasticsearch sử dụng thư mục mmapfs theo mặc định để lưu trữ các chỉ mục của nó. Giới hạn mặc định của hệ điều hành đối với số lượng mmap có thể quá thấp, điều này có thể dẫn đến các trường hợp ngoại lệ hết bộ nhớ sau.
Mã:
[1]: vùng bộ nhớ ảo tối đa vm.max_map_count [65530] quá thấp, hãy tăng lên ít nhất là [262144]
Mã:
sudo sysctl -w vm.max_map_count=262144
Mã:
bin/elasticsearch -d
Khi cụm bắt đầu, bạn có thể thấy nhật ký như sau trên es-node-1. Lưu ý cách các nút được thêm vào es-node-1 khi chúng được khởi động.
Mã:
[2019-11-30T08:43:05,766][INFO ][o.e.c.s.ClusterApplierService] [I][es-node-1] đã thêm {{es-node-2}[/I][/b]{V9-rBKeJRe2S8UPW96_XzA}{65Bu-WtmTj-Hce_lFAK-ng}{10.11.14.248}{10.11.14.248:9300}{dilm}{ml.machine_memory=4135120896, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 18, reason: Publication{term=1, version=18}
Mã:
[2019-11-30T08:43:30,317][INFO ][o.e.c.s.MasterService ] [I][es-node-1] node-join[{es-node-3[/I]}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true} tham gia người lãnh đạo hiện tại], kỳ hạn: 1, phiên bản: 19, lý do: đã thêm {{es-node-3}{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}
Mã:
[2019-11-30T08:43:30,820][INFO ][o.e.c.s.ClusterApplierService] [B][es-node-1] đã thêm {{es-node-3}[/b]{TArASFSyS2-gVcNaH-XosQ}{g9X4hxLBQAu3QBcPXL9JAQ}{10.11.13.158}{10.11.13.158:9300}{dilm}{ml.machine_memory=4135124992, ml.max_open_jobs=20, xpack.installed=true},}, term: 1, version: 19, reason: Publication{term=1, version=19
Kiểm tra cụm
Mở một thiết bị đầu cuối mới mà cụm có thể truy cập được và thử các lệnh sau
Mã:
curl http://10.11.10.62:9200/_cluster/stats?pretty
Mã:
[B]curl http://10.11.10.62:9200/_nodes/process?pretty[/b]
Mã:
[B]curl http://10.11.10.62:9200/_cluster/stats?pretty[/b]