emmmmmm,这是一篇血泪辛酸史T T,从清明节前开始冒出要搭建ES集群玩玩到现在,一个多星期,error总是层出不穷,一个接一个,那么我们就一个一个fix吧!!!
-
低级错误
1)虚拟机系统不正确
我忘记了具体的错误日志,大概是说什么lib的问题,网上查了下,说是es版本不支持32位系统了,所以又重新下了64位的镜像文件。
2)内存不足启动不起来
这个就很尴尬了,新建虚拟机的时候分配的内存太小了- -(当时担心会影响自己打游戏。。。事实是我游戏双开已经会占用13G了,同时再开三台虚拟机没可能的,所以还是省省别妄想一边玩游戏一边学习了!!!)而ES6.7默认JVM内存是4G,于是后来,我给每台虚拟机分配了2G,顺便把JVM降到了1G. 还设置了个环境变量但我忘了当时因为什么加上去的,放这儿吧。
输入命令行:cd /usr/local/es/elasticsearch-6.7.1/config
编辑文本sudo gedit jvm.options,修改以下两个变量(注意要去掉前面的#才生效)
-Xms1g
-Xmx1g
输入命令行:sudo gedit ~/.bashrc
编辑文本,加入环境变量 export ES_HEAP_SIZE=1g
3)Root User不能启动ES(这个问题我没有遇到,因为我习惯用自己新建用户)
为了展示这个错误的error message,我用root用户去尝试启动一下ES。
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root -
进阶错误
1)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
这个稍微麻烦点,因为不是立即生效,而且需要切换到root用户才可以修改(怎么切换root自己百度)cd /etc/securitysudo gedit limits.conf
加入下面两行(*代表所有用户,也可以指定某个用户)
*soft nofile 65535
*hard nofile 131072
emmmm,用ulimit -Hn检查,会发现好像并没有变化,尽管你保存了,说实话我到现在也没搞懂它到底什么时候生效,我尝试切换用户,退出重启,各种方法未果,关机睡觉,第二天再启动这个bug就解决了(┑( ̄Д  ̄)┍)
当时:
第二天:
ps:当天还是能解决的,把VirtualBox也关掉,再打开再启动虚拟机,就可以生效了,光重新启动虚拟机没成功更新。2)max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
这个简单,使用root用户修改vm.max_count就可以了:sysctl -w vm.max_map_count=262144
返回下面这个结果就是修改成功了
额,才发现上面这个方法是一次性的,关掉了就又不生效了,所以还是要切换到root用户,执行以下命令:cd /etc/sudo gedit sysctl.conf
增加 vm.max_map_count=262144sysctl -p
3)max number of threads [2048] for user [es] is too low, increase to at least [4096]
跟第一个error类似,同样是修改limits.conf,加入下面两行
*soft nproc 4096
*hard nproc 4096
有时候可能不生效(我第三台虚拟机没生效,可以再尝试一下下面的方法)cd /etc/security/limits.dsudo gedit 90-nproc.conf
编辑下面常量
*soft nproc 4096
4) java.net.BindException: Cannot assign requested address
这个问题是我在之前配置好的虚拟机完全复制出来的虚拟机上出现的。
当我使用命令ifconfig查看IP时,之返回来lo,并没有eth0
但是其他虚拟机都是好的
我有看到说怎么解决linuxifconfig只返回lo没有eht0的情况,但是第一步就失败了,我没有/etc/sysconfig/network-scripts目录…
(经过查询了解到不同版本的Linux情况不一样的,
比如centos里的/etc/sysconfig/network对应ubuntu里的/etc/network/interfaces文件)
这时,可以先通过ifconfig -a检查网卡信息
然后修改interfaces文件cd /etc/networksudo gedit interfaces
增加下列内容
auto lo
iface lo inet loopbackauto eth3
iface eth3 inet static
address 192.168.31.43
netmask 255.255.255.0
gateway 192.168.31.1
dns-nameservers 114.114.114.114
然后重启network/etc/init.d/networking restart
再输入命令ifconfig就可以看到配置成功啦