Thứ tư, 04/05/2016 | 00:00 GMT+7

Cách cài đặt và cấu hình Elasticsearch trên Ubuntu 16.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. Sự phổ biến của nó là do dễ sử dụng, các tính năng mạnh mẽ và khả năng mở rộng.

Elasticsearch hỗ trợ các hoạt động RESTful. Điều này nghĩa là bạn có thể sử dụng các phương thức HTTP (GET, POST, PUT, DELETE, v.v.) kết hợp với URI HTTP ( /collection/entry ) để thao tác dữ liệu của bạn . Cách tiếp cận RESTful trực quan vừa thân thiện với nhà phát triển vừa thân thiện với user , đây là một trong những lý do khiến Elasticsearch trở nên phổ biến.

Elasticsearch là một phần mềm open-souce và miễn phí với một công ty vững chắc đằng sau nó: Elastic. Sự kết hợp này làm cho nó phù hợp để sử dụng ở mọi nơi, từ thử nghiệm cá nhân đến tích hợp công ty.

Bài viết này sẽ giới thiệu cho bạn về Elasticsearch và hướng dẫn bạn cách cài đặt, cấu hình, bảo mật và bắt đầu sử dụng nó.

Yêu cầu

Trước khi làm theo hướng dẫn này, bạn cần :

Trừ khi có lưu ý khác, tất cả các lệnh yêu cầu quyền root trong hướng dẫn này phải được chạy với quyền user không phải root có quyền sudo.

Bước 1 - Download và cài đặt Elasticsearch

Elasticsearch có thể được download trực tiếp từastic.co trong các gói zip , tar.gz , deb hoặc rpm . Đối với Ubuntu, tốt nhất bạn nên sử dụng deb (Debian) sẽ cài đặt mọi thứ bạn cần để chạy Elasticsearch.

Đầu tiên, hãy cập nhật index gói của bạn.

  • sudo apt-get update

Download version Elasticsearch mới nhất, là 2.3.1 tại thời điểm viết bài.

  • wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.3.1/elasticsearch-2.3.1.deb

Sau đó cài đặt nó theo cách Ubuntu thông thường với dpkg .

  • sudo dpkg -i elasticsearch-2.3.1.deb

Điều này dẫn đến việc Elasticsearch được cài đặt trong /usr/share/elasticsearch/ với các file cấu hình của nó được đặt trong /etc/elasticsearch và tập lệnh init của nó được thêm vào /etc/init.d/elasticsearch .

Để đảm bảo Elasticsearch tự động khởi động và dừng với server , hãy thêm tập lệnh init của nó vào runlevel mặc định.

  • sudo systemctl enable elasticsearch.service

Trước khi bắt đầu Elasticsearch lần đầu tiên, vui lòng kiểm tra phần tiếp theo về cấu hình tối thiểu được đề xuất.

Bước 2 - Cấu hình Elasticsearch

Bây giờ Elasticsearch và các phụ thuộc Java của nó đã được cài đặt, đã đến lúc cấu hình Elasticsearch. Các file cấu hình Elasticsearch nằm trong folder /etc/elasticsearch . Có hai file :

  • elasticsearch.yml cấu hình cài đặt server Elasticsearch. Đây là nơi lưu trữ tất cả các tùy chọn, ngoại trừ các tùy chọn để ghi log , đó là lý do tại sao ta hầu hết quan tâm đến file này.

  • logging.yml cung cấp cấu hình để ghi log . Lúc đầu, bạn không phải chỉnh sửa file này. Bạn có thể để lại tất cả các tùy chọn ghi log mặc định. Bạn có thể tìm thấy các bản ghi kết quả trong /var/log/elasticsearch theo mặc định.

Các biến đầu tiên để tùy chỉnh trên bất kỳ server Elasticsearch là node.namecluster.name trong elasticsearch.yml . Như tên của chúng gợi ý, node.name chỉ định tên của server (nút) và cụm mà sau này được liên kết.

Nếu bạn không tùy chỉnh biến này, tên node.name sẽ được tự động gán cho tên server Server. cluster.name sẽ được tự động đặt thành tên của cụm mặc định.

Giá trị cluster.name được sử dụng bởi tính năng tự động khám phá của Elasticsearch để tự động phát hiện và liên kết các node Elasticsearch với một cụm. Do đó, nếu bạn không thay đổi giá trị mặc định, bạn có thể có các node không mong muốn, được tìm thấy trên cùng một mạng, trong cụm của bạn.

Để bắt đầu chỉnh sửa file cấu hình elasticsearch.yml chính bằng nano hoặc editor yêu thích của bạn.

  • sudo nano /etc/elasticsearch/elasticsearch.yml

Xóa ký tự # ở đầu các dòng cho cluster.namenode.name để bỏ ghi chú chúng rồi cập nhật giá trị của chúng. Những thay đổi cấu hình đầu tiên của bạn trong file /etc/elasticsearch/elasticsearch.yml sẽ giống như sau:

/etc/elasticsearch/elasticsearch.yml
. . . cluster.name: mycluster1 node.name: "My First Node" . . . 

Đây là những cài đặt tối thiểu mà bạn có thể bắt đầu bằng Elasticsearch. Tuy nhiên, bạn nên tiếp tục đọc phần cấu hình để hiểu kỹ hơn và tinh chỉnh Elasticsearch.

Một cài đặt đặc biệt quan trọng của Elasticsearch là role của server , là server hoặc server . Server chính chịu trách nhiệm về sức khỏe và sự ổn định của cụm. Trong các triển khai lớn với nhiều nút cụm, bạn nên có nhiều hơn một tổng thể chuyên dụng. Thông thường, một tổng thể chuyên dụng sẽ không lưu trữ dữ liệu hoặc tạo index . Do đó, sẽ không có cơ hội bị quá tải, do đó sức khỏe của cụm có thể bị đe dọa.

Các server slaver được sử dụng như các workhorses có thể được tải với các việc dữ liệu. Ngay cả khi một nút slaver bị quá tải, tình trạng của cụm sẽ không bị ảnh hưởng nghiêm trọng, miễn là có các node khác chịu tải bổ sung.

Cài đặt xác định role của server được gọi là node.master . Theo mặc định, một nút là một nút chính. Nếu bạn chỉ có một nút Elasticsearch, bạn nên để tùy chọn này true giá trị true mặc định vì luôn cần ít nhất một nút chính. Ngoài ra, nếu bạn muốn cấu hình nút như một slaver , hãy gán một giá trị false cho biến node.master như sau:

/etc/elasticsearch/elasticsearch.yml
. . . node.master: false . . . 

Một tùy chọn cấu hình quan trọng khác là node.data , nó xác định xem một nút có lưu trữ dữ liệu hay không. Trong hầu hết các trường hợp, tùy chọn này nên được để ở giá trị mặc định của nó ( true ), nhưng có hai trường hợp mà bạn có thể không muốn lưu trữ dữ liệu trên một nút. Một là khi nút là một tổng thể chuyên dụng "như đã đề cập trước đó. Hai là khi một nút chỉ được sử dụng để tìm nạp dữ liệu từ các node và tổng hợp kết quả. Trong trường hợp sau, nút sẽ hoạt động như một bộ cân bằng tải tìm kiếm .

, nếu bạn chỉ có một nút Elasticsearch, bạn không nên thay đổi giá trị này. Nếu không, để tắt lưu trữ dữ liệu local , hãy chỉ định node.datafalse như sau:

/etc/elasticsearch/elasticsearch.yml
. . . node.data: false . . . 

Trong các triển khai Elasticsearch lớn hơn với nhiều nút, hai tùy chọn quan trọng khác là index.number_of_shardsindex.number_of_replicas . Đầu tiên xác định có bao nhiêu mảnh, hoặc mảnh vỡ, chỉ số sẽ được chia thành. Thứ hai xác định số lượng bản sao sẽ được phân phối trên toàn cụm. Có nhiều phân đoạn hơn sẽ cải thiện hiệu suất lập index , trong khi có nhiều bản sao hơn giúp tìm kiếm nhanh hơn.

Theo mặc định, số phân đoạn là 5 và số bản sao là 1. Giả sử rằng bạn vẫn đang khám phá và thử nghiệm Elasticsearch trên một nút duy nhất, bạn có thể bắt đầu chỉ với một phân đoạn và không có bản sao. Do đó, các giá trị của chúng phải được đặt như sau:

/etc/elasticsearch/elasticsearch.yml
. . . index.number_of_shards: 1 index.number_of_replicas: 0 . . . 

Một cài đặt cuối cùng mà bạn có thể cần thay đổi là path.data , xác định đường dẫn nơi dữ liệu được lưu trữ. Đường dẫn mặc định là /var/lib/elasticsearch . Trong môi trường production , bạn nên sử dụng phân vùng chuyên dụng và điểm mount để lưu trữ dữ liệu Elasticsearch. Trong trường hợp tốt nhất, phân vùng chuyên dụng này sẽ là một phương tiện lưu trữ riêng biệt, mang lại hiệu suất tốt hơn và cách ly dữ liệu. Bạn có thể chỉ định một đường dẫn path.data khác bằng cách chỉ định nó như sau:

/etc/elasticsearch/elasticsearch.yml
. . . path.data: /media/different_media . . . 

Sau khi bạn thực hiện tất cả các thay đổi, hãy lưu và thoát khỏi file . Đến đây bạn có thể khởi động Elasticsearch lần đầu tiên.

  • sudo systemctl start elasticsearch

Cung cấp cho Elasticsearch một ít để bắt đầu hoàn toàn trước khi bạn cố gắng sử dụng nó. Nếu không, bạn có thể gặp lỗi không thể kết nối.

Bước 3 - Bảo mật Elasticsearch

Theo mặc định, Elasticsearch không có bảo mật tích hợp và 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 (tức là, 127.0.0.1 ) chỉ có thể được truy cập local . Do đó, không thể truy cập và Elasticsearch của bạn đủ an toàn miễn là tất cả user server được tin cậy hoặc đây là server Elasticsearch chuyên dụng.

Tuy nhiên, nếu bạn muốn tăng cường bảo mật, điều đầu tiên cần làm là cài đặt xác thực . Xác thực được cung cấp bởi plugin Shield thương mại. Thật không may, plugin này không miễn phí nhưng có bản dùng thử 30 ngày miễn phí mà bạn có thể sử dụng để kiểm tra nó. Trang chính thức của nó có hướng dẫn cài đặt và cấu hình tuyệt vời. Điều duy nhất bạn có thể cần biết thêm vào đó là đường dẫn đến trình quản lý cài đặt plugin Elasticsearch là /usr/share/elasticsearch/bin/plugin .

Nếu bạn không muốn sử dụng plugin thương mại nhưng bạn vẫn phải cho phép truy cập từ xa vào HTTP API, ít nhất bạn có thể hạn chế khả năng hiển thị mạng với firewall mặc định của Ubuntu, UFW (Tường lửa không phức tạp). Theo mặc định, UFW được cài đặt nhưng không được bật. Nếu bạn quyết định sử dụng nó, hãy làm theo các bước sau:

Đầu tiên, hãy tạo một luật để cho phép bất kỳ dịch vụ cần thiết nào. Bạn cần ít nhất SSH được phép để có thể đăng nhập vào server . Để cho phép toàn thế giới truy cập vào SSH, hãy đưa cổng 22 vào danh sách trắng.

  • sudo ufw allow 22

Sau đó cho phép truy cập vào cổng API Elasticsearch HTTP mặc định (TCP 9200) cho server lưu trữ từ xa tin cậy , ví dụ: TRUSTED_IP , như sau:

  • sudo ufw allow from TRUSTED_IP to any port 9200

Chỉ sau đó 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, kết quả sẽ giống như sau:

Output of java -version
Status: active To Action From -- ------ ---- 9200 ALLOW TRUSTED_IP 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

Khi bạn đã xác nhận UFW đã được bật và bảo vệ cổng Elasticsearch 9200, thì bạn có thể cho phép Elasticsearch lắng nghe các kết nối bên ngoài. Để thực hiện việc này, hãy mở lại file cấu hình elasticsearch.yml .

  • sudo nano /etc/elasticsearch/elasticsearch.yml

Tìm dòng chứa network.bind_host , bỏ ghi chú bằng cách xóa ký tự # ở đầu dòng và thay đổi giá trị thành 0.0.0.0 để nó trông giống như sau:

/etc/elasticsearch/elasticsearch.yml
. . . network.host: 0.0.0.0 . . . 

Ta đã chỉ định 0.0.0.0 để Elasticsearch lắng nghe trên tất cả các giao diện và các 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 0.0.0.0 .

Để cài đặt trên có hiệu lực, hãy khởi động lại Elasticsearch bằng lệnh:

  • sudo systemctl restart elasticsearch

Sau đó, hãy thử kết nối từ server tin cậy với Elasticsearch. Nếu bạn không thể kết nối, hãy đảm bảo UFW đang hoạt động và biến network.host đã được chỉ định chính xác.

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 , công cụ chuyển URL phía client dòng lệnh và một yêu cầu GET đơn giản.

  • curl -X GET 'http://localhost:9200'

Bạn sẽ thấy phản hồi sau:

Output of curl
{ "name" : "My First Node", "cluster_name" : "mycluster1", "version" : { "number" : "2.3.1", "build_hash" : "bd980929010aef404e7cb0843e61d0665269fc39", "build_timestamp" : "2016-04-04T12:25:05Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }, "tagline" : "You Know, for Search" }

Nếu bạn thấy 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ể xem và 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.v.

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. Như đã đề cập, 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 curl .

Bạn có thể thêm mục nhập đầu tiên của bạn bằng lệnh:

  • curl -X POST 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Bạn sẽ thấy phản hồi sau:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}

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 'http://localhost:9200/tutorial/helloworld/1'

Kết quả trông như sau :

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 '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, "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "created" : false }

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 có thể đọc được của con người để 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ể "kiểm tra" kết quả của bạn khi truy xuất dữ liệu và nhận được kết quả đẹp hơn nhiều như thế này:

  • curl -X GET 'http://localhost:9200/tutorial/helloworld/1?pretty'

Bây giờ phản hồi sẽ ở định dạng tốt hơn nhiều:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "found" : true, "_source" : { "message" : "Hello People!" } }

Lúc này, 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

Đó là cách dễ dàng để cài đặt, cấu hình và bắt đầu sử dụng Elasticsearch. Khi bạn đã chơi đủ với các truy vấn thủ công, nhiệm vụ tiếp theo của bạn sẽ là bắt đầu sử dụng nó từ các ứng dụng của bạn .


Tags:

Các tin liên quan

Cách cài đặt và cấu hình VNC trên Ubuntu 16.04
2016-04-26
Cách thêm không gian swap trên Ubuntu 16.04
2016-04-25
Cách cài đặt WordPress với LEMP trên Ubuntu 16.04
2016-04-25
Cách cài đặt Java với Apt-Get trên Ubuntu 16.04
2016-04-23
Cách cài đặt WordPress với LAMP trên Ubuntu 16.04
2016-04-22
Cách thêm và xóa người dùng trên Ubuntu 16.04
2016-04-21
Cách cài đặt Git trên Ubuntu 16.04
2016-04-21
Có gì mới trong Ubuntu 16.04
2016-04-21
Cách nâng cấp lên Ubuntu 16.04 LTS
2016-04-08
Cách thiết lập múi giờ và đồng bộ hóa NTP trên Ubuntu 14.04 [Quickstart]
2016-03-28