emmmmmm,这是一篇血泪辛酸史T T,从清明节前开始冒出要搭建ES集群玩玩到现在,一个多星期,error总是层出不穷,一个接一个,那么我们就一个一个fix吧!!!

  1. 低级错误
    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

  2. 进阶错误
    1)max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    这个稍微麻烦点,因为不是立即生效,而且需要切换到root用户才可以修改(怎么切换root自己百度)
    cd /etc/security
    sudo gedit limits.conf
    加入下面两行(*代表所有用户,也可以指定某个用户)
    *soft nofile 65535
    *hard nofile 131072
    emmmm,用ulimit -Hn检查,会发现好像并没有变化,尽管你保存了,说实话我到现在也没搞懂它到底什么时候生效,我尝试切换用户,退出重启,各种方法未果,关机睡觉,第二天再启动这个bug就解决了(┑( ̄Д  ̄)┍)
    当时:
    ElasticSearch启动中常见的问题
    第二天:
    ElasticSearch启动中常见的问题
    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
    返回下面这个结果就是修改成功了
    ElasticSearch启动中常见的问题
    额,才发现上面这个方法是一次性的,关掉了就又不生效了,所以还是要切换到root用户,执行以下命令:
    cd /etc/
    sudo gedit sysctl.conf
    增加 vm.max_map_count=262144
    sysctl -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.d
    sudo gedit 90-nproc.conf
    编辑下面常量
    *soft nproc 4096
    4) java.net.BindException: Cannot assign requested address
    这个问题是我在之前配置好的虚拟机完全复制出来的虚拟机上出现的。
    当我使用命令ifconfig查看IP时,之返回来lo,并没有eth0
    ElasticSearch启动中常见的问题
    但是其他虚拟机都是好的
    ElasticSearch启动中常见的问题
    我有看到说怎么解决linuxifconfig只返回lo没有eht0的情况,但是第一步就失败了,我没有/etc/sysconfig/network-scripts目录…
    (经过查询了解到不同版本的Linux情况不一样的,
    比如centos里的/etc/sysconfig/network对应ubuntu里的/etc/network/interfaces文件)
    这时,可以先通过ifconfig -a检查网卡信息
    ElasticSearch启动中常见的问题
    然后修改interfaces文件
    cd /etc/network
    sudo gedit interfaces
    增加下列内容
    auto lo
    iface lo inet loopback

    auto 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就可以看到配置成功啦
    ElasticSearch启动中常见的问题

相关文章: