ElasticSearch Remote Access

本想着把ElasticSearch 服务装在vmware的CentOS中,让本机的c#程序去装载数据到ES。 搭建的过程着实费了一点劲。

原本在vmware中安装好ElasticSearch,基于默认安装,访问ES的默认URL是localhost:9200. 那想当然的以为,想从主机访问虚拟机的9200端口,只需要把localhost替换成虚拟机的IP地址就可以了。IFConfig一查IP, 192.168.134.107. 从主机chrome访问192.168.134.107:9200. 失败。Ping一下这个IP, 能通。只有两个原因:

  1. 虚拟机的CentOS防火墙不允许主机访问端口
  2. 主机与虚拟机的网络设置是NAT类型,本机的9200已经被占用。

修改CentOS的防火墙属性,设置网卡使用的Zone类型为允许通过9200,并且把NAT改成bridge. 结果依然不能访问ES。

这种情况就很让人费解了,为什么CentOS本机搭建的ES能够通过localhost:9200来访问呢?而我在本机访问虚拟机,并且已经是Bridge虚拟网络配置下,完全是类似远程访问服务器一样嘛。难道是ES服务没有绑定到IP地址上? google一下,在一篇配置elasticsearch cluster的文章中,嗅出了端倪。ElasticSearch.conf文件中,有一项是配置network.host,配置成network.host:[“192.168.51.101”, “127.0.0.1”, “localhost”] 之后,就能向cluster宣称自己加入cluster组织了,并且公开声明在192.168.51.101找到自己。

然后重新启动ES Service。 再次执行启动程序的时候,新的问题来了。经典的max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]。google了一把,网络上的大部分案列都说通过修改/etc/security/limits.conf,加入两行配置就能解决问题,如下:

* soft nofile 65536
* hard nofile 65536

然而并不能解决问题。看/etc/security/limits.conf文件开头注释,说要提防/etc/security/limits.d文件夹下面的配置文件,有可能会覆盖/etc/security/limits.conf的配置,赶紧把limits.d下面的文件也都改成了上面两行,结果依然不行。

最终从老外的一篇Blog中找到了答案,ulimit -n用来查询当前用户的资源限制。linux/unix都是多用户模型,如果有500个用户,他们同时登陆,同时打开500个文件,将会极度消耗资源。为了能让一台机器服务更多的用户,只能给每个用户一定的资源,每个用户需要酌情考虑资源的消耗,并及时关闭使用完毕的资源来平衡使用。所以我们需要修改的就是这个地方,/etc/sysctl.conf, 加入一行:

fs.file-max = 512000

然后执行命令使配置生效: sysctl – p

重启ES Service。

接下来,在本机chrome输入192.168.51.101:9200 就能打开那ElasticSearch的大门了。

欢迎关注个人微信公众号【有关SQL】

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值