Làm cách nào để kích hoạt quyền truy cập / yêu cầu từ xa trong Elasticsearch 2.0?


96

Bắt đầu từ v2.0 Elasticsearch chỉ nghe trên localhost theo mặc định, nhưng tôi muốn đưa ra yêu cầu bên ngoài localhost.

Ví dụ, một yêu cầu như thế này được cho phép:

http://localhost:9200/

Nhưng đây không phải là:

http://server_name:9200/ (từ bên ngoài máy chủ, ví dụ: máy tính cục bộ trong cùng mạng LAN).

Cảm ơn bạn đã giúp đỡ.


6
Đây là câu trả lời bạn đang tìm kiếm: stackoverflow.com/questions/33412549/…
Val

Cảm ơn! Đó chính xác là những gì tôi đang tìm kiếm!
Abraham Duran

Câu trả lời:


152

trong config/elasticsearch.ymlđặt

network.host: 0.0.0.0

3
network.host: 0.0.0.0 cho phép tất cả các mạng cục bộ truy cập vào nút này. Tôi đoán điều này không được khuyến khích cho chế độ sản xuất.
Isengo

1
nó có nghĩa là tất cả các địa chỉ ip đều được phép. Không an toàn!
Yavuz

1
Các tập tin trên hệ thống CentOS của tôi đã được tìm thấy trong /etc/elasticsearch/elasticsearch.ymlvà nội dung:network.host: ["0.0.0.0"]
AlikElzin-kilaka

không hiệu quả với tôi. ES vẫn đang chạy trên 127.0.0.1T_T
E.Big

Đối với những người không thể định vị tệp cấu hình trên Windows, vui lòng kiểm tra C:\ProgramData\Elastic\Elasticsearch\configvị trí. Nếu bạn muốn kết nối theo chương trình với Elasticsearch, bạn có thể cần phải thiết lập transport.host: 0.0.0.0trong elasticsearch.ymltệp.
kojot

58

Theo mặc định truyền tải http và truyền tải tìm kiếm nội bộ đàn hồi chỉ lắng nghe localhost. Nếu bạn muốn truy cập Elasticsearch từ máy chủ lưu trữ không phải localhost thì hãy thử thêm các cấu hình sau trong config /asticsearch.yml .

transport.host: localhost 
transport.tcp.port: 9300 
http.port: 9200
network.host: 0.0.0.0

Ở đây, network.host as 0.0.0.0 cho phép truy cập từ bất kỳ máy chủ nào trong mạng.


2
Tôi đã phải thiết lập rõ ràng tất cả các giá trị đó để có thể kết nối từ máy chủ VirtualBox đi khách với tính năng đàn hồi. Cảm ơn rât nhiều!
Tom

Đã thử nghiệm trên Elasticsearch 7.1.0 - các giải pháp hoạt động tốt khi kết nối với ES trên VirtualBox.
DB Prasad

Trên cấu hình nhất định cũng đang làm việc với phiên bản tìm kiếm đàn hồi 7.2.0 :-)
dinu0101

2
Hầu như tháng nào tôi cũng đến đây để sao chép cấu hình này: D
Neelesh

cảm ơn điều này đã giúp tôi rất nhiều. Tôi đang đấu tranh với một vấn đề ngoại lệ kết nối; và cuối cùng nó đã hoạt động sau khi thêm những dòng này vào elasticsearch.ymltệp
Spencer Trinh

19

Đổi tên tệp co giãn đàn hồi.yml thành đàn hồi phục hồi chức năng bên trong thư mục cấu hình và thêm:

{
    "network" : {
        "host" : "10.0.0.4"
    }
}

Một tùy chọn khác là cung cấp các cài đặt bên ngoài bằng cách sử dụng ES_JAVA_OPTS hoặc dưới dạng các tham số cho lệnh co giãn, ví dụ:

$ elasticsearch -Des.network.host=10.0.0.4

Một tùy chọn khác là đặt es.default. tiền tố thay vì es. tiền tố, có nghĩa là cài đặt mặc định sẽ chỉ được sử dụng nếu không được đặt rõ ràng trong tệp cấu hình.

Một tùy chọn khác là sử dụng ${...}ký hiệu trong tệp cấu hình sẽ giải quyết cài đặt môi trường, ví dụ:

{
    "network" : {
        "host" : "${ES_NET_HOST}"
    }
}

Vị trí của tệp cấu hình có thể được đặt bên ngoài bằng thuộc tính hệ thống:

$ elasticsearch -Des.config=/path/to/config/file

Để biết thêm thông tin, hãy xem https://www.elastic.co/guide/en/elasticsearch/reference/1.4/setup-configuration.html


Đã nhận: Ngoại lệ trong luồng "chính" BindTransportException [Không thể liên kết với [9300-9400]]; lồng nhau: ChannelException [Không thể bám vào: /10.0.0.4:9400]
mountrix

2
Làm thế nào điều này có thể được thực hiện, ý tôi là, chúng ta không thể đổi tên elasticsearch.ymlthành elasticsearch.jsonvì cái đầu tiên, hmmm, YAML và cái thứ hai là JSON??
Shubham A.

9

Như @arsent đã đề cập, hãy thêm địa chỉ ip đó vào tệp cấu hình:

sudo nano /etc/elasticsearch/elasticsearch.yml

Jay cũng nói thêm một điểm quan trọng - nếu bạn đang sử dụng tường lửa, hãy nhớ thêm quy tắc cho phép lưu lượng truy cập vào cổng đó.

Nếu bạn muốn cho phép máy chủ chính truy cập ES qua http, thì hãy thêm quy tắc chỉ cho phép truy cập từ địa chỉ cụ thể đó. Ví dụ: giả sử bạn đang sử dụng ufw, sau đó chạy lệnh này để thêm cổng của bạn:

sudo ufw allow from xxx.xxx.xxx.xxx to any port zzzz

Thay thế xxx.xxx.xxx.xxx bằng địa chỉ IP máy chủ chính của bạn và zzzz bằng cổng bạn đã định cấu hình config/elasticsearch.yml

Bạn nên sử dụng cổng tùy chỉnh và không giữ mặc định 9200

Để kiểm tra, hãy SSH vào máy chủ chính của bạn và ping ip ES với đúng cổng để xem bạn có nhận được phản hồi hay không:

curl -X GET 'http://xxx.xxx.xxx.xxx:zzzz'

Bạn cũng có thể xác minh ES không thể truy cập được từ các IP khác bằng cách thử nó với trình duyệt của bạn.

một bài viết tuyệt vời hướng dẫn cách thiết lập ES trên Ubuntu trên DigitalOcean



7

Trong máy điều khiển từ xa, nơi đàn hồi tìm kiếm được cài đặt, chỉ cần thêm hai cấu hình dưới đây vào /etc/elasticsearch/elasticsearch.yml

network.host: xx.xx.xx.xx #remote elastic machine's internal IP
discovery.type: single-node

Đã kiểm tra trên đàn hồi 6.8.3 và AWS EC2 Linux AMI làm máy từ xa


5

Trong /etc/elasticsearch/elasticsearch.yml:

network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0

2

Thay thế localhost bằng 0.0.0.0 ở hai nơi.

  1. Goto /etc/elasticsearch/elasticsearch.yml. Tìm kiếm giá trị trong network.host và thay đổi nó thành 0.0.0.0

  2. Đây là bước nếu bạn đang sử dụng Kibana. Goto /etc/kibana/kibana.yml. Tìm kiếm giá trị trong server.host và thay đổi nó thành 0.0.0.0

Bây giờ bạn truy cập truy cập từ xa bằng địa chỉ IP và máy chủ.


Điều quan trọng là phải thêm các lệnh sau: ufw allow 9200 và ufw allow 5601
José T.

1

Trong config/elasticsearch.yml, đặt network.host: 0.0.0.0như @arsent đã nói. Và cũng thêm Inbound Rule trong tường lửa cho cổng ElasticSearch của bạn (9200 ByDefault).

Nó hoạt động trong phiên bản ElasticSearch 2.3.0


1

Đối với ElasticSearch 7.8 trở lên

Kiểm tra xem bạn có đang ở trên một nút hay không. thêm dòng sau

cluster.initial_master_nodes: node-1

Để truy cập máy chủ Elasticsearch từ một máy tính hoặc ứng dụng khác, hãy thực hiện các thay đổi sau đối với nút của C:\ProgramData\Elastic\Elasticsearch\config\elasticsearch.yml file:

Thêm các dòng sau

network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0

Đôi khi bạn có thể cần phải Bật CORS

http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length

Đây là tệp yml đầy đủ của tôi

bootstrap.memory_lock: false
cluster.name: elasticsearch
http.port: 9200
node.data: true
node.ingest: true
node.master: true
node.max_local_storage_nodes: 1
cluster.initial_master_nodes: node-1
node.name: ITDEV
path.data: C:\ProgramData\Elastic\Elasticsearch\data
path.logs: C:\ProgramData\Elastic\Elasticsearch\logs
transport.tcp.port: 9300
xpack.license.self_generated.type: basic
xpack.security.enabled: false
network.host: ["0.0.0.0", 127.0.0.1", "[::1]"]
network.bind_host: 0.0.0.0
network.publish_host: 0.0.0.0
http.host: 0.0.0.0
http.cors.enabled : true
http.cors.allow-origin : "*"
http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type, Content-Length

đáng ngạc nhiên là điều này không hiệu quả với tôi
Andy Dufresne

0

Ngoài thiết lập network.host : 0.0.0.0

có thể cần thiết lập các thông số sau

node.name: elasticsearch-node-1

cluster.initial_master_nodes: ["elasticsearch-node-1"]

Tất cả cài đặt đi vào elasticsearch/elasticsearch.yml

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.