问题
在服务器上开启Elasticsearch服务,在服务器本地正常访问:
curl 127.0.0.1:9200
但使用外网IP(无论是在服务器还是其他机器上)无法访问:
curl 123.4.5.67:9200
分析
很容易想到,Elasticsearch默认配置不允许外网访问。
找到配置文件:
vim config/elasticsearch.yml
修改network.host:
network.host: 0.0.0.0
重启Elasticsearch,外网即可访问。
补充
修改后重启Elasticsearch,很有可能启动失败,报错如下:
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
则切换后root用户,进入配置文件:
vim /etc/sysctl.conf
追加一行:
vm.max_map_count=655360
令其生效:
sysctl -p
重启Elasticsearch,成功。
其他
许多人反馈修改config/elasticsearch.yml后,重启Elasticsearch还会出现以下报错(我的没有):
ERROR: [1] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
解决方案和上面一样,只不过追加的是:
soft nofile 65536
hard nofile 65536