• ELK - CentOS7 安装 elasticsearch 7.17.5



    # 新建用户组:groupadd elk

    # 添加用户:elk
    # adduser elk  或者:useradd elk
    # 设置密码(不能太简单,length>=7,不能包含用户名)
    # passwd elk   
    举例:JS123456

    # 将用户添加到指定用户组:
    #useradd -G {group-name} {username}
    usermod -G elk elk

    # 查看验证用户组是否分配成功:
    #groups {username}
    groups elk

    # 用root用户给october赋予指定目录的权限

    命令格式:chown {username}:{group-name} /{dir}
    chown -R elk:elk /opt/soft/elk/elasticsearch-7.17.5


    tar -zxvf  elasticsearch-7.17.5-linux-x86_64.tar.gz
    mv elasticsearch-7.17.5-linux-x86_64 /opt/soft/elk/elasticsearch-7.17.5


    # mkdir -p esdata
    # mkdir -p eslogs


    # chown -R elk:elk /opt/soft/elk/esdata/
    # chown -R elk:elk /opt/soft/elk/eslogs/


    【配置服务器】
    # ulimit -Hn 
    # ulimit -Sn

    # 修改配置
    # vim /etc/security/limits.conf

    设置:
    soft    nofile          65536
    hard    nofile          65536
    * soft nofile 65536

    * hard nofile 65536

    * soft nproc 32000

    * hard nproc 32000

    * hard memlock unlimited

    * soft memlock unlimited

    # 修改配置
    # vim /etc/sysctl.conf

    增加配置:
    vm.max_map_count=262144

    elasticsearch最小需要max_map_count为262144,而虚拟机默认只有65536。
    加大vm.max_map_count(进程可以拥有的VMA(虚拟内存区域)的数量,虚拟内存区域是一个连续的虚拟地址空间区域)
    # vim /etc/sysctl.conf
    在sysctl.conf中添加
    vm.max_map_count=262144
    # sysctl -p  #重启生效
    --------------------------------sysctl.conf配置完毕-------------------------
    配置原因:
    1、资源问题:每个打开的文件都需要消耗内存来管理,而内存是有限的。
    2、安全问题:如果不限制的话,有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。
    3、bootstrap.memory_lock: false;bootstrap.system_call_filter: false配置必须

    说明:限制资源使用的配置文件是 /etc/security/limits.conf,和/etc/security/limits.d/目录,
          /etc/security/limits.d/里面配置会覆盖/etc/security/limits.conf的配置
          
    # vim /etc/security/limits.conf
    elk soft nproc 65536  - 单个用户可用的最大进程数量(超过会警告);
    elk hard nproc 65536  - 单个用户可用的最大进程数量(超过会报错);
    elk soft nofile 4096  - 可打开的文件描述符的最大数(超过会警告);
    elk hard nofile 4096  - 可打开的文件描述符的最大数(超过会报错);
    # vim /etc/security/limits.d/20-nproc.conf
    ----------------------------------------------------------------------------------------------------------------------------------------

    # 修改完执行:
    # sysctl -p  -- 查看配置

    # 防火前&端口配置

    查看状态:
    firewall-cmd --state
    systemctl status firewalld.service

    添加端口:
    firewall-cmd --get-active-zones
    firewall-cmd --list-port  -- 查看已经开放端口
    firewall-cmd --zone=public --add-port=9200/tcp --permanent
    firewall-cmd --zone=public --add-port=9300/tcp --permanent
    firewall-cmd --reload 重启防火墙

    firewall-cmd --query-port=9200/tcp
    firewall-cmd --query-port=9300/tcp


    # 其他:如云部署的需要开放对应服务商的安全组端口策略

    【插件安装】

    1.ik分词器插件安装

    # cd /opt/soft/elk/elasticsearch-7.17.5/plugins
    mkdir -p analysis-ik
    # wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.5/elasticsearch-analysis-ik-7.17.5.zip

    # 解压插件
    # unzip -d ./analysis-ik/ elasticsearch-analysis-ik-7.17.5.zip 


    【配置elasticsearch服务端】

    1.修改 elasticsearch.yml配置

    # cd /opt/soft/elk/elasticsearch-7.17.5/config

    # 设置:[集群名称、节点配置、路径配置、内存配置、网络配置、服务发现、安全配置]
    cluster.name: search-application
    node.name: node-1
    path.data: /opt/soft/elk/esdata
    path.logs: /opt/soft/elk/eslogs
    # 设置为true锁住内存,当服务混合部署了多个组件及服务时,应开启此操作,允许es占用足够多的内存
    bootstrap.memory_lock: true
    # 设置绑定的ip,设置为0.0.0.0以后就可以让任何计算机节点访问到了
    network.host: 0.0.0.0
    http.port: 9200
    discovery.seed_hosts: ["host1", "host2"]
    # 设置在集群中的所有节点名称,当然你也可以采用默认的也行,如果是单机,放入当前节点即可
    cluster.initial_master_nodes: ["node-1", "node-2"]
    # 支持跨域,跨域配置是为了kibana,logstash等组件连接
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    # 关闭地图更新
    ingest.geoip.downloader.enabled: false
    # es优化,是否支持过滤掉系统调用
    bootstrap.system_call_filter: false

    2.修改

    # 堆栈配置
    -Xms500m
    -Xmx500m

    3.修改elasticsearch-env.bat文件

    设置JDK:ES_JAVA_HOME   -- ES7.x推荐使用自带的JDK

    【服务启动】

    # su elk
    # ./elasticsearch -d  - 加-d为后台启动

    注意:一定要切换为专用的用户,否则会报错如下:

    [root@VM-0-11-centos bin]# ./elasticsearch -d
    warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
    Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/java/jdk1.8.0_202/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
    warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
    Future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/java/jdk1.8.0_202/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
    [root@VM-0-11-centos bin]# uncaught exception in thread [main]
    java.lang.RuntimeException: can not run elasticsearch as root
            at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:107)
            at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:183)
            at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:434)
            at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:169)
            at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:160)
            at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:77)
            at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:112)
            at org.elasticsearch.cli.Command.main(Command.java:77)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125)
            at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
    For complete error details, refer to the log at /opt/soft/elk/eslogs/search-application.log
    2022-08-08 05:27:51,939144 UTC [7615] INFO  Main.cc@111 Parent process died - ML controller exiting

    # su - elk

    【错误解决】

    错误一
    [elk@VM-0-11-centos ~]$ Exception in thread "main" org.elasticsearch.bootstrap.BootstrapException: java.nio.file.AccessDeniedException: /opt/soft/elk/elasticsearch-7.17.5/config/elasticsearch.keystore
    Likely root cause: java.nio.file.AccessDeniedException: /opt/soft/elk/elasticsearch-7.17.5/config/elasticsearch.keystore

    查看elasticsearch.keystore文件
    [elk@VM-0-11-centos elasticsearch-7.17.5]$ cd config/
    [elk@VM-0-11-centos config]$ ll
    total 48
    -rw-rw---- 1 root root   199 Aug  8 13:27 elasticsearch.keystore
    -rw-rw---- 1 elk  elk   1042 Jun 24 05:55 elasticsearch-plugins.example.yml
    -rw-rw---- 1 elk  elk   3699 Aug  8 13:24 elasticsearch.yml
    -rw-rw---- 1 elk  elk   3277 Aug  8 13:26 jvm.options
    drwxr-x--- 2 elk  elk   4096 Jun 24 05:59 jvm.options.d
    -rw-rw---- 1 elk  elk  19304 Jun 24 05:58 log4j2.properties
    -rw-rw---- 1 elk  elk    473 Jun 24 05:58 role_mapping.yml
    -rw-rw---- 1 elk  elk    197 Jun 24 05:58 roles.yml
    -rw-rw---- 1 elk  elk      0 Jun 24 05:58 users
    -rw-rw---- 1 elk  elk      0 Jun 24 05:58 users_roles


    解决:
    su root
    chown -R elk:elk /opt/soft/elk/elasticsearch-7.17.5/
    chown -R elk:elk /opt/soft/elk/elasticsearch-7.17.5/config

    # chmod +x bin/elasticsearch

    错误二
    /opt/soft/elk/eslogs/search-application_index_indexing_slowlog.json (权限不够)

    chown -R elk:elk /opt/soft/elk/esdata/*
    chown -R elk:elk /opt/soft/elk/eslogs/*


    $ ps -ef|grep elasticsearch|grep -v grep 


    错误三:: not all primary shards of [.geoip_databases] index are active


    解决:

    因为他启动时会去更新地图的一些数据库,这里直接禁掉即可,用到时再说,配置文件conf/elasticsearch.yml,增加配置

    # 修改:elasticsearch.yml
    # ingest.geoip.downloader.enabled: false


    错误:
    Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file logs/gc.log due to Permission denied


    【访问服务】

    ip:9200
     

  • 相关阅读:
    什么是构建验证测试?
    善于使用二阶思维
    每日一练 | 华为认证真题练习Day121
    Kaggle Feedback Prize 3比赛总结:两种模型设计思路
    前端页面访问后台hiveserver2,阶段性报错
    Java 的 Apache Commons 工具库 助力开发
    手写题目2:编写一个解析url中参数的函数
    【动态规划】139. 单词拆分、多重背包
    实现一个函数,判断aim是 否是str1和str2交错组成。
    防火墙旁挂、和热备
  • 原文地址:https://blog.csdn.net/qq_19783793/article/details/126393596