我正在尝试使用Flink 5.x Elasticsearch接收器连接器将数据插入托管在小型VM上的ES 5.2.1实例。
由于这是一个处于开发模式的小型虚拟机,我无法启动它以接受9300上的TransportClient远程客户端连接而不会使引导程序检查失败。
[2017-02-17T09:02:48,581][INFO ][o.e.n.Node ] [Z_fiBnl] starting ...
[2017-02-17T09:02:48,866][INFO ][o.e.t.TransportService ] [Z_fiBnl] publish_address {xxxxxx:9300}, bound_addresses {127.0.0.1:9300}
[2017-02-17T09:02:48,878][INFO ][o.e.b.BootstrapChecks ] [Z_fiBnl] 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 is too low, increase to at least [65536]
max number of threads [1024] for user [xxx] is too low, increase to at least [2048]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
我已经使用了以下设置,但是无法启动它(9200上的http客户端工作正常)
transport.publish_host: 0.0.0.0
transport.bind_host: 0.0.0.0
http.host: "xxx"
http.host: 169.117.72.167
network.host: 0.0.0.0
network.publish_host: 0.0.0.0
请注意,ES仅在用于开发目的的情况下在小型VM上运行,并且我无权访问ex。此框中的文件描述符限制。
答案 0 :(得分:18)
弹性搜索过程的最大文件描述符[4096]太低了, 增加到至少[65536]
ulimit -n 65536
或在nofile
65536
设为/etc/security/limits.conf
用户[xxx]的最大线程数[1024]太低,增加到 至少[2048]
ulimit -u 2048
或者在开始弹性搜索之前,在nproc
中将2048
值设置为/etc/security/limits.conf
或更高。
最大虚拟内存区域vm.max_map_count [65530]太低,增加 至少[262144]
在vm.max_map_count=262144
中设置/etc/sysctl.conf
然后做sysctl -p
如果您想在开发环境中运行elasticsearch,尽管失败的引导程序检查:
在elasticsearch.yml
transport.host: 127.0.0.1
http.host: 0.0.0.0
请注意,您无法在开发模式下构建群集。 不要使用在生产中失败的bootstrap检查的elasticsearch !!
答案 1 :(得分:7)
尝试以这种方式配置elasticsearch.yml文件:
network.host: 0.0.0.0
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300
答案 2 :(得分:5)
使用/etc/sysctl.conf中的vm.max_map_count设置进行检查:
grep vm.max_map_count /etc/sysctl.conf
OUTPUT:vm.max_map_count = 262144
如果输出小于262144,则将新计数应用为elasticsearch expectes
sysctl -w vm.max_map_count=262144
必须在xhyve虚拟机中设置vm.max_map_count设置:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
使用root登录,无密码。然后像配置Linux一样配置sysctl设置:
sysctl -w vm.max_map_count=262144
必须通过docker-machine设置vm.max_map_count设置:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
答案 3 :(得分:5)
对于最大文件描述符[4096],弹性搜索过程太低,增加到至少[65536]
ulimit -n
,它将是4096。修改/etc/security/limits.conf
并添加以下行:
* soft nofile 65536
* hard nofile 65536
root soft nofile 65536
root hard nofile 65536
/etc/pam.d/common-session
并添加此行session required pam_limits.so
/etc/pam.d/common-session-noninteractive
并添加此行session required pam_limits.so
ulimit -n
,它将是65536。对于最大虚拟内存区域vm.max_map_count [65530]太低,增加到至少[262144]
sudo sh -c "echo 'vm.max_map_count=262144' >> /etc/sysctl.conf"
参考:
答案 4 :(得分:4)
我只是添加
transport.host:localhost
它对我有用。
答案 5 :(得分:2)
以下步骤帮助我们开始使用ES 5.5.2。在Azure上使用Ubuntu服务器的3个主服务器,3个客户端和8个数据节点
*软memlock无限
* hard memlock unlimited
ulimit -n 65536
sudo sysctl -w vm.max_map_count = 262144
transport.tcp.compress:true
transport.tcp.port:9300
注意我们还必须停止“apparmor”服务来修复节点之间的连接问题。
答案 6 :(得分:0)
我可以使用ES 5.2以后的设置来完成此操作 discovery.type:单节点 (https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html)
一旦我使用该设置启动了ES节点,我就可以使用来自非localhost客户端的传输客户端进行连接,这是以前遇到的问题。
答案 7 :(得分:0)
曾为此搜寻Google并应用了不同的建议,但我认为这是一般的解决方案:
使用以下命令检查进程运行时的实际限制(尽管很短):
cat /proc/<pid>/limits
您将找到类似以下内容的行:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
<truncated>
然后取决于运行器或容器(在我的情况下,这是主管的minfds值),您可以取消实际的限制配置。