Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 20.04
Elasticsearch là một nền tảng để tìm kiếm phân tán và phân tích dữ liệu trong thời gian thực. Nó là một lựa chọn phổ biến do tính tiện dụng, tính năng mạnh mẽ và khả năng mở rộng.Bài viết này sẽ hướng dẫn bạn cài đặt Elasticsearch, cấu hình nó cho trường hợp sử dụng của bạn, bảo mật cài đặt của bạn và bắt đầu làm việc với server Elasticsearch của bạn.
Yêu cầu
Trước khi làm theo hướng dẫn này, bạn cần :
Server Ubuntu 20.04 có RAM 4GB và 2 CPU được cài đặt với user sudo không root. Bạn có thể đạt được điều này theo Cài đặt server ban đầu với Ubuntu 20.04
OpenJDK 11 đã được cài đặt
Đối với hướng dẫn này, ta sẽ làm việc với số lượng CPU và RAM tối thiểu cần thiết để chạy Elasticsearch. Lưu ý số lượng CPU, RAM và bộ nhớ mà server Elasticsearch của bạn sẽ yêu cầu tùy thuộc vào dung lượng log mà bạn mong đợi.
Bước 1 - Cài đặt và cấu hình Elasticsearch
Các thành phần Elasticsearch không có sẵn trong repository mặc định của Ubuntu. Tuy nhiên, chúng có thể được cài đặt với APT sau khi thêm danh sách nguồn gói của Elastic.
Tất cả các gói được ký bằng khóa ký Elasticsearch để bảo vệ hệ thống của bạn khỏi giả mạo gói. Các gói đã được kiểm nghiệm bằng khóa sẽ được người quản lý gói của bạn coi là tin cậy . Trong bước này, bạn sẽ nhập khóa GPG công khai Elasticsearch và thêm danh sách nguồn gói Elastic để cài đặt Elasticsearch.
Để bắt đầu, hãy sử dụng cURL, công cụ dòng lệnh để truyền dữ liệu bằng URL, để nhập khóa GPG công khai Elasticsearch vào APT. Lưu ý ta đang sử dụng đối số -fsSL để tắt mọi tiến trình và các lỗi có thể xảy ra (ngoại trừ lỗi server ) và cho phép cURL thực hiện yêu cầu về một vị trí mới nếu được chuyển hướng. Đưa kết quả của lệnh cURL vào chương trình apt-key, chương trình này sẽ thêm khóa GPG công khai 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 folder sources.list.d
, nơi APT sẽ tìm kiếm 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
Tiếp theo, cập nhật danh sách gói của bạn để APT sẽ đọc nguồn Đàn hồi mới:
- sudo apt update
Sau đó cài đặt Elasticsearch bằng lệnh này:
- sudo apt install elasticsearch
Elasticsearch hiện đã được cài đặt và sẵn sàng được cấu hình .
Bước 2 - Cấu hình Elasticsearch
Để cấu hình Elasticsearch, ta sẽ chỉnh sửa file cấu hình chính của nó elasticsearch.yml
, nơi hầu hết các tùy chọn cấu hình của nó được lưu trữ. Tệp này nằm trong folder /etc/elasticsearch
.
Sử dụng editor bạn muốn để chỉnh sửa file cấu hình của Elasticsearch. Ở đây, ta sẽ sử dụng nano
:
- sudo nano /etc/elasticsearch/elasticsearch.yml
Lưu ý: Tệp cấu hình của Elasticsearch có định dạng YAML, nghĩa là ta cần duy trì định dạng thụt lề. Đảm bảo rằng bạn không thêm bất kỳ khoảng trống thừa nào khi chỉnh sửa file này.
elasticsearch.yml
cung cấp các tùy chọn cấu hình cho cụm, nút, đường dẫn, bộ nhớ, mạng, khám phá và cổng vào của bạn. Hầu hết các tùy chọn này đều được cấu hình sẵn trong file nhưng bạn có thể thay đổi chúng theo nhu cầu của bạn . Với mục đích demo cấu hình một server , ta sẽ chỉ điều chỉnh cài đặt cho server lưu trữ mạng.
Elasticsearch lắng nghe lưu lượng truy cập từ mọi nơi trên cổng 9200
. Bạn cần hạn chế quyền truy cập bên ngoài vào version Elasticsearch của bạn để ngăn người ngoài đọc dữ liệu hoặc tắt cụm Elasticsearch của bạn thông qua API REST của nó. Để hạn chế quyền truy cập và do đó tăng cường bảo mật, hãy tìm dòng chỉ định network.host
, bỏ ghi chú và thay thế giá trị của nó bằng localhost
để nó có nội dung như sau:
. . . # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): # network.host: localhost . . .
Ta đã chỉ định localhost
để Elasticsearch lắng nghe trên tất cả các giao diện và IP bị ràng buộc. Nếu bạn muốn nó chỉ nghe trên một giao diện cụ thể, bạn có thể chỉ định IP của nó thay cho localhost
. Lưu và elasticsearch.yml
. Nếu bạn đang sử dụng nano
, bạn có thể thực hiện bằng cách nhấn CTRL+X
, tiếp theo là Y
và sau đó ENTER
.
Đây là những cài đặt tối thiểu mà bạn có thể bắt đầu để sử dụng Elasticsearch. Đến đây bạn có thể khởi động Elasticsearch lần đầu tiên.
Khởi động dịch vụ Elasticsearch với systemctl
. Hãy cho Elasticsearch một chút thời gian để khởi động. Nếu không, bạn có thể gặp lỗi không thể kết nối.
- sudo systemctl start elasticsearch
Tiếp theo, hãy chạy lệnh sau để cho phép Elasticsearch khởi động mỗi khi server của bạn khởi động:
- sudo systemctl enable elasticsearch
Với Elasticsearch được bật khi khởi động, hãy chuyển sang bước tiếp theo để thảo luận về bảo mật.
Bước 3 - Bảo mật Elasticsearch
Theo mặc định, Elasticsearch có thể được kiểm soát bởi bất kỳ ai có thể truy cập API HTTP. Đây không phải lúc nào cũng là một rủi ro bảo mật vì Elasticsearch chỉ lắng nghe trên giao diện loopback (nghĩa là, 127.0.0.1
), chỉ có thể được truy cập local . Do đó, không thể truy cập và miễn là tất cả user server được tin cậy, bảo mật có thể không phải là mối quan tâm lớn.
Nếu bạn cần cho phép truy cập từ xa vào API HTTP, bạn có thể giới hạn khả năng hiển thị mạng bằng firewall mặc định của Ubuntu, UFW. Tường lửa này đã được bật nếu bạn làm theo các bước trong hướng dẫn Cài đặt server ban đầu tiên quyết với Ubuntu 20.04 .
Bây giờ ta sẽ cấu hình firewall để cho phép truy cập vào cổng API Elasticsearch HTTP mặc định (TCP 9200) cho server từ xa tin cậy , thường là server bạn đang sử dụng trong cài đặt một server , chẳng hạn như 198.51.100.0
. Để cho phép truy cập, hãy nhập lệnh sau:
- sudo ufw allow from 198.51.100.0 to any port 9200
Sau khi hoàn tất, bạn có thể bật UFW bằng lệnh:
- sudo ufw enable
Cuối cùng, kiểm tra trạng thái của UFW bằng lệnh sau:
- sudo ufw status
Nếu bạn đã chỉ định các luật một cách chính xác, bạn sẽ nhận được kết quả như sau:
OutputStatus: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)
UFW bây giờ sẽ được bật và cài đặt để bảo vệ cổng Elasticsearch 9200.
Nếu bạn muốn đầu tư vào khả năng bảo vệ bổ sung, Elasticsearch cung cấp plugin Shield thương mại để mua.
Bước 4 - Kiểm tra Elasticsearch
Hiện tại, Elasticsearch sẽ chạy trên cổng 9200. Bạn có thể kiểm tra nó bằng cURL và yêu cầu GET.
- curl -X GET 'http://localhost:9200'
Bạn sẽ nhận được phản hồi sau:
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 bạn nhận được phản hồi tương tự như ở trên, Elasticsearch đang hoạt động bình thường. Nếu không, hãy đảm bảo bạn đã làm theo đúng hướng dẫn cài đặt và bạn đã để một thời gian để Elasticsearch khởi động hoàn toàn.
Để thực hiện kiểm tra kỹ hơn Elasticsearch, hãy thực hiện lệnh sau:
- curl -XGET 'http://localhost:9200/_nodes?pretty'
Trong kết quả từ lệnh trên, bạn có thể xác minh tất cả các cài đặt hiện tại cho nút, cụm, đường dẫn ứng dụng, module và hơn thế nữa.
Bước 5 - Sử dụng Elasticsearch
Để bắt đầu sử dụng Elasticsearch, trước tiên hãy thêm một số dữ liệu. Elasticsearch sử dụng API RESTful, đáp ứng các lệnh CRUD thông thường: c reate, r ead, u pdate và d elete. Để làm việc với nó, ta sẽ sử dụng lại lệnh cURL.
Bạn có thể thêm mục nhập đầu tiên của bạn như sau:
- curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'
Bạn sẽ nhận được phản hồi sau:
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ới cURL, ta đã gửi một yêu cầu HTTP POST đến server Elasticsearch. URI của yêu cầu là /tutorial/helloworld/1
với một số tham số:
-
tutorial
là index của dữ liệu trong Elasticsearch. -
helloworld
là loại. -
1
là ID của mục nhập của ta theo index và loại ở trên.
Bạn có thể truy xuất mục nhập đầu tiên này bằng một yêu cầu HTTP GET.
- curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'
Đây sẽ là kết quả kết quả :
Output{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}
Để sửa đổi mục nhập hiện có, bạn có thể sử dụng yêu cầu HTTP PUT.
- curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
- {
- "message": "Hello, People!"
- }'
Elasticsearch sẽ xác nhận sửa đổi thành công như sau:
Output{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
Trong ví dụ trên, ta đã sửa đổi message
của mục nhập đầu tiên thành “Xin chào mọi người!”. Cùng với đó, số version đã được tự động tăng lên 2
.
Bạn có thể nhận thấy đối số bổ sung pretty
trong yêu cầu trên. Nó cho phép định dạng con người có thể đọc được để bạn có thể ghi từng trường dữ liệu trên một hàng mới. Bạn cũng có thể “chỉnh sửa” kết quả của bạn khi truy xuất dữ liệu để có được kết quả kết quả dễ đọc hơn bằng lệnh lệnh sau:
- curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'
Bây giờ phản hồi sẽ được định dạng để con người phân tích cú pháp:
Output{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }
Bây giờ ta đã thêm và truy vấn dữ liệu trong Elasticsearch. Để tìm hiểu về các hoạt động khác, vui lòng kiểm tra tài liệu API .
Kết luận
Đến đây bạn đã cài đặt, cấu hình và bắt đầu sử dụng Elasticsearch. Để khám phá thêm chức năng của Elasticsearch, vui lòng tham khảo tài liệu chính thức của Elasticsearch .
Các tin liên quan
Cách thiết lập và cấu hình Tổ chức phát hành chứng chỉ (CA) trên Ubuntu 20.042020-04-28
Cách thiết lập khóa SSH trên Ubuntu 20.04
2020-04-23
Cách thiết lập khóa SSH trên Ubuntu 20.04
2020-04-23
Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 18.04
2020-04-22
Cách cài đặt và bảo mật phpMyAdmin trên Ubuntu 18.04
2020-04-21
Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04
2020-04-16
Cách cài đặt và cấu hình Ansible trên Ubuntu 18.04 [Quickstart]
2020-04-16
Cách cài đặt Nagios 4 và theo dõi server của bạn trên Ubuntu 18.04
2020-04-12
Cách cài đặt và cấu hình SimpleSAMLphp để Xác thực SAML trên Ubuntu 18.04
2020-04-02
Cách sử dụng Vuls làm máy quét lỗ hổng bảo mật trên Ubuntu 18.04
2020-04-01