Elasticsearch là một nền tảng phục vụ tìm kiếm và phân tích dữ liệu phân tán trong thời gian thực. Nền tảng này nổi tiếng với hiệu năng, nhiều tính năng mạnh mẽ và khả năng mở rộng tốt. Bài viết này sẽ hướng dẫn cài đặt Elasticsearch trên Ubuntu 20.04 chi tiết.
Điều kiện cài đặt Elasticsearch trên Ubuntu 20.04
Trước khi bắt đầu, hãy đảm bảo bạn đáp ứng đủ các yêu cầu sau:
- Có server Ubuntu 20.04, tối thiểu 4GB RAM và 2 CPU, ngoài ra cần có một user
non-root
trên hệ thống. Lượng CPU, RAM và dung lượng sẽ tùy thuộc vào lượng log cần đáp ứng trên server Elasticsearch. - Cài đặt sẵn OpenJDK 11.
Các bước cài đặt và cấu hình Elasticsearch trên Ubuntu 20.04
Bước 1 – Cài đặt Elasticsearch
Các thành phần của Elasticsearch chưa có sẵn trong repo mặc định của Ubuntu. Mọi package đều được ký bằng key của Elasticsearch để bảo vệ hệ thống không download nhầm gói độc hại. Do đó bước này sẽ import public key GPG của Elasticsearch rồi thêm danh sách nguồn của package Elastic để cài đặt.
Trước tiên, sử dụng curl
– công cụ command-line dùng để truyền dữ liệu qua URL – để import public key GPG của Elasticsearch vào APT. Bạn sẽ sử dụng thêm đối số -fsSL
để ẩn tiến trình và lỗi, đồng thời cho phép curl
tạo request trên vị trí mới nếu được điều hướng. Sau đó output của lệnh sẽ được pipe vào chương trình apt-key
để thêm public key GPG vào APT.
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Tiếp theo, thêm danh sách nguồn Elastic vào thư mục sources.list.d
để APT tìm được các nguồn mới:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Sau đó cập nhật danh sách package để APT đọc được nguồn Elastic mới:
sudo apt update
Bây giờ bạn có thể cài đặt Elasticsearch:
sudo apt install elasticsearch
Bước 2 – Cấu hình Elasticsearch
Elasticsearch có thể được cấu hình bằng cách chỉnh sửa trực tiếp file config elasticsearch.yml
nằm trong thư mục /etc/elasticsearch
.
Trước tiên, mở file cấu hình bằng một text editor bất kỳ, ở đây sử dụng nano
:
sudo nano /etc/elasticsearch/elasticsearch.yml
Lưu ý rằng file config của Elasticsearch nằm ở định dạng YAML
. Vì vậy bạn phải giữ nguyên định dạng thụt lề, không được thêm bất kỳ khoảng trắng nào khi chỉnh sửa file.
File elasticsearch.yml
cung cấp các tùy chọn cấu hình cho cluster, node, đường dẫn, bộ nhớ, mạng, discovery và gateway. Hầu hết các tùy chọn này đều được cấu hình trước trong file, nhưng vẫn có thể được thay đổi tùy theo nhu cầu. Trong hướng dẫn này, Vietnix sẽ chỉ thay đổi cài đặt cho host mạng.
Elasticsearch nghe lưu lượng trên port 9200
. Bạn cần phải giới hạn các truy cập từ bên ngoài vào instance Elasticsearch để bảo vệ hệ thống và dữ liệu, đồng thời ngăn không cho hacker ngắt cluster Elasticsearch thông qua REST API của nó.
Để hạn chế truy cập và tăng tính bảo mật, tìm và uncomment dòng chỉ định network.host
trong file, sau đó đổi giá trị thành localhost
như sau:
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .
Bây giờ Elasticsearch sẽ nghe trên mọi interface và các IP được ràng buộc. Nếu bạn muốn Elasticsearch chỉ nghe trên một interface cụ thể thì có thể chỉ định IP đó vào phần giá trị localhost
.
Sau khi hoàn tắt, lưu rồi đóng file lại. Nếu sử dụng nano
, hãy nhấn CTRL+X, nhấn Y và ENTER.
Bây giờ bạn có thể khởi động dịch vụ Elasticsearch bằng lệnh sau:
sudo systemctl start elasticsearch
Sau đó chạy lệnh dưới đây cho cho phép Elasticsearch tự khởi động sau mỗi lần server boot:
sudo systemctl enable elasticsearch
Để quá trình cài đặt và cấu hình Elasticsearch diễn ra thuận lợi, không gặp trở ngại nào thì bạn cần tới một một máy chủ có khả năng mở rộng linh hoạt và toàn quyền quản trị. Trong đó, VPS Vietnix là một lựa chọn tuyệt vời cho việc này. Được thiết kế với công nghệ tiên tiến nhất, VPS Vietnix đem lại cho người dùng một trải nghiệm tuyệt vời:
- Toàn quyền quản trị trong việc cài đặt, quản lý và sử dụng máy chủ. Nếu bạn gặp khó khăn trong việc cài đặt hệ thống hay các ứng dụng thì có thể gửi yêu cầu hỗ trợ tới đội ngũ Vietnix.
- Khả năng mở rộng, tùy chỉnh tài nguyên dễ dàng, linh hoạt giúp bạn có thể thiết lập hệ thống máy chủ theo nhu cầu của mình.
- Tiết kiệm chi phí với nhiều gói dịch vụ theo nhiều cấu hình khác nhau, từ VPS Giá Rẻ, VPS Cao Cấp, VPS Phổ Thông, VPS NVMe cho tới VPS GPU.
Liên hệ Vietnix để được tư vấn chi tiết các gói cấu hình tối ưu theo nhu cầu sử dụng của bạn.
Bước 3 – Bảo mật Elasticsearch
Theo mặc định thì Elasticsearch chỉ có thể được kiểm soát bởi những người dùng có quyền truy cập vào HTTP API. Đây thường không được gọi là lỗ hổng bảo mật vì Elasticsearch chỉ nghe trên interface loopback (127.0.0.1
) và interface này chỉ có thể được truy cập cục bộ. Vì vậy miễn là không có bất kì khả năng truy cập từ bên ngoài thì mọi server đều đảm bảo tin cậy và vấn đề bảo mật sẽ không còn quá quan trọng.
Nếu bạn muốn cho phép các truy cập từ xa vào API HTTP thì có thể giới hạn mạng bằng tường lửa UFW của Ubuntu được bật theo mặc định.
Bây giờ bạn sẽ cấu hình tường lửa để cho phép các remote host được tin cậy truy cập đến port API HTTP mặc định của Elasticsearch (TCP 9200). Đây thường là server bạn đang sử dụng trong thiết lập server đơn, ví dụ như 192.51.100.0
. Bạn có thể cho phép truy cập bằng lệnh sau:
sudo ufw allow from 198.51.100.0 to any port 9200
Sau đó enable UFW bằng lệnh:
sudo ufw enable
Bây giờ bạn có thể kiểm tra trạng thái của UFW:
sudo ufw status
Nếu đã chỉ định các quy tắc tường lửa chính xác thì output sẽ như dưới đây:
Output
Status: active
To Action From
-- ------ ----
9200 ALLOW 198.51.100.0
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
Bây giờ UFW đã được enable và bảo vệ Elasticsearch trên cổng 9200
.
Bước 4 – Kiểm tra Elasticsearch
Đến bước này, Elasticsearch đã bắt đầu chạy trên cổng 9200
. Bạn có thể kiểm tra bằng curl
và request GET như sau:
curl -X GET 'http://localhost:9200'
Output
{
"name" : "elasticsearch-ubuntu20-04",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Nếu output hiển thị tương tự như ở trên thì Elasticsearch đang hoạt động bình thường.
Để xác thực mọi thiết lập hiện tại thì bạn có thể chạy lệnh sau:
curl -XGET 'http://localhost:9200/_nodes?pretty'
Sau khi có kết quả đầu ra thì người dùng có thể xác nhận các thông tin cài đặt gần nhất như về node, cluster, đường dẫn ứng dụng, các modules và nhiều mục khác.
Bước 5 – Bắt đầu sử dụng Elasticsearch
Để sử dụng Elasticsearch, trước tiên hãy bổ sung một số dữ liệu cho server. Elasticsearch sử dụng API RESTful phản hồi lại các lệnh CRUD thông thường, gồm có: create, read, update, và delete.
Bạn có thể thêm một entry
ngẫu nhiên như sau:
curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' '{ "message": "Hello World!" }'
Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Thông qua curl
, bạn vừa gửi một request HTTP POST đến server Elasticsearch. URI của request này là /tutorial/helloworld/1
với một số tham số như sau:
tutorial
là chỉ mục của dữ liệu trong Elasticsearch.helloworld
là loại dữ liệu.1
là ID của entry.
Bạn có thể lấy entry đầu tiên bằng request HTTP GET như sau:
curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' '{ "message": "Hello World!" }'
Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}
Nếu muốn chỉnh sửa một entry có sẵn thì bạn có thể dùng request HTTP PUT:
curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' '
{
"message": "Hello, People!"
}'
Thông báo cho biết chỉnh sửa thành công:
Output
{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
Ở ví dụ trên, bạn đã đổi message
của entry đầu tiên thành “Hello, People!”,
khi đó số phiên bản cũng sẽ được tự động tăng thành 2
.
Bên cạnh đó, request trên cũng có thêm đối số pretty
cho phép hiển thị định dạng dễ đọc cho người dùng và giúp bạn có thể viết từng trường dữ liệu trên một hàng mới. Bạn cũng có thể dùng đối số prettify
trong kết quả để có output dễ đọc hơn:
curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'
Output
{
"_index" : "tutorial",
"_type" : "helloworld",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"message" : "Hello, People!"
}
}
}
Với kinh nghiệm hơn 10 năm trong lĩnh vực cung cấp giải pháp VPS tốc độ cao, Vietnix đã vinh dự cùng đồng hành với sự thành công của hơn 50.000 khách hàng cá nhân và doanh nghiệp. Vietnix đã kích hoạt hơn 100.000 dịch vụ và nhận được sự giới thiệu của 97% khách hàng sau khi trải nghiệm.
Vietnix luôn nỗ lực để cung cấp các giải pháp VPS tối ưu cho khách hàng của mình, đảm bảo rằng họ sẽ nhận được dịch vụ tốt nhất và chất lượng nhất. Ngoài ra, Vietnix còn hỗ trợ khách hàng hệ sinh thái các dịch vụ chuyên nghiệp khác như lưu trữ web hosting, tên miền, máy chủ, Firewall Anti DDoS,… Hãy liên hệ với Vietnix ngay hôm nay để biết thêm thông tin về các dịch vụ mà bạn đang có nhu cầu sử dụng.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
- Hotline: 1800 1093 – 07 088 44444
- Email: sales@vietnix.com.vn
Lời kết
Trên đây là những hướng dẫn cài đặt Elasticsearch trên Ubuntu 20.04. Mong rằng bạn có thể thực hiện thành công theo quy trình cài đặt này trên hệ thống của mình. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần comment bên dưới để được Vietnix hỗ trợ nhanh nhất nhé.