前言
部署完成ES之后,如果我们不修改配置,那么默认只有本机可以访问ES的api接口,如果需要给外部机器访问,那么就需要修改ES的配置了。
本文使用ES 5.0的版本。
修改绑定的IP地址
在默认情况下,ES只允许本地访问api接口,如果我们希望在另外一台机器上访问ES的接口的话,需要配置主机地址:
[kael@localhost bin]$ vim elasticsearch-5.0.0/config/elasticsearch.yml
找到如下行:
# Set the bind address to a specific IP (IPv4 or IPv6):
#
# network.host: 192.168.1.1
去掉network.host
的注释,改成0.0.0.0
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
保存退出,重新启动es:
[kael@localhost bin]$ ./elasticsearch
.....// 省略部分日志
[2016-11-07T22:36:55,504][INFO ][o.e.b.BootstrapCheck ] [OI7LKLJ] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
[2016-11-07T22:36:55,523][INFO ][o.e.n.Node ] [OI7LKLJ] stopping ...
[2016-11-07T22:36:55,546][INFO ][o.e.n.Node ] [OI7LKLJ] stopped
[2016-11-07T22:36:55,547][INFO ][o.e.n.Node ] [OI7LKLJ] closing ...
[2016-11-07T22:36:55,566][INFO ][o.e.n.Node ] [OI7LKLJ] closed
这里我们看到启动报错了。
这个错误并不是因为我们改了主机地址造成的,实际上一直都存在的错误,但是在只允许本地连接的情况下,ES没有做检查,所以没有报错,可以正常运行,但是当我们配置了运行外部地址访问的时候,ES就会强制检查,所以就报错了。
解决启动错误
这里一共两个错误,先解决:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
这个是linux下常见的错误,主要是因为linux会限制进程的最大打开文件数,只需要简单配置一下即可解决,在ES的官方文档中提供了两种解决方案。
这里我们只看系统基本的配置这种方式。
- 打开
/etc/security/limits.conf
- 添加如下配置
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
kael - nofile 65536 # add this line
# End of file
保存即可。
这里的kael是用户名,表明这个配置只对kael
用户生效,如果你用来启动elasticsearch的用户名不是这个,那么你需要按你实际的用户名修改
第二个问题:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
这个是ES使用的虚拟内存,官方文档给出了解决方案:
[kael@localhost bin]$ sudo sysctl -w vm.max_map_count=262144
调大虚拟内存即可。
重新启动,就可以正常访问了,现在我们可以在任何机器上访问ES了。
也可以用后台进程的方式启动:
[kael@localhost bin]$ ./elasticsearch -d -p pid