zoukankan      html  css  js  c++  java
  • (0.1)elasticsearch安装

    【0】官网参考

    https://www.elastic.co/guide/en/elasticsearch/reference/7.11/targz.html

    【1】Centos7 下载安装

    【1.1】下载

    官网:https://www.elastic.co/cn/downloads/elasticsearch

    选择好自己想要的相关版本即可;

      

    【2】Centos7.X 前置环境配置(ulimit,vm.max_map_count,JDK)

    (1)ulimit

    它至少要65535

    vim /etc/security/limits.conf
    * soft nproc 65535
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    * soft stack 65535
    * hard stack 65535

      

     ulimit -a,如下图,发现没有生效

      

     退出登录重登后生效;su root

      

    (2)vm.max_map_count >= 262144

    vim /etc/sysctl.conf 

    然后在里面加上参数:

    vm.max_map_count=2655350

    保存,然后重新加载参数:

    sysctl -p

      

    (3)JDK安装,1.8+

    检查是否有JAVA环境:

      

    如果没有,参考下面文档

    参考安装文档:

      https://www.cnblogs.com/gered/p/9056819.html

    注意,Elasticsearch7.x版本 建议使用 jdk 11版本以上,但其实1.8版本及以上也够了,如果没有设置 $JAVA_HOME 环境变量,那么将会默认使用自带jdk(自带11版本的);

    所以其实不装问题也不大,设置一下$JAVA_HOME 环境变量在这个目录即可

      

    (4)Swapping 设置

    vim /etc/sysctl.conf

    vm.swappiness=1

    【3】Centos7.X下载安装 Elasticsearch7.X

    【3.1】下载解压

    (1)手动下载

    那很明显,我们下载的就是这个

      LINUX X86_64shaasc

      

    (1)自动下载

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz.sha512
    shasum -a 512 -c elasticsearch-7.11.1-linux-x86_64.tar.gz.sha512 
    tar -xzf elasticsearch-7.11.1-linux-x86_64.tar.gz

    【3.2】建立ES启动账户elk、授权

    不知道从什么版本开始,elasticsearch 认为用 root 启动不安全,所以需要额外建立账户

    groupadd elk
    useradd elk -g elk
    chown -R elk:elk ./elasticsearch-7.11.1
    mv elasticsearch-7.11.1 /usr/local/elasticsearch

    【3.3】配置 ElasticSearch 配置文件

    cd /usr/local/elasticsearch
    vim config/elasticsearch.yml
     
    #添加配置
    discovery.seed_hosts: ["127.0.0.1"]
    network.host: 0.0.0.0
    cluster.initial_master_nodes: ["node-1"]

    【3.4】启动:使用守护进程

    # -d 是作为守护进程运行 , -p 是把进程id 存到文件
    su - elk -c "exec /usr/local/elasticsearch/bin/elasticsearch -d -p /tmp/elasticsearch.pid" 

    【3.5】核验安装是否成功

    (1)查看9200端口是否启用、监听

      

    (2)访问本机 9200 端口

     You can test that your Elasticsearch node is running by sending an HTTP request to port 9200 on localhost:

    就是说默认是本机9200端口,用就完事了;如下图:这就表示成功了!

      

    (3)URL上访问

    注意,如果这个不行,请注意查看防火墙、配置文件中的  network.host: 0.0.0.0 是否配置

      

    【3.6】怎么关闭退出?

    (1)pkill -F /tmp/elasticsearch.pid   (推荐,但前提是前面启动时使用了 -p 并文件是这个位置 )

    (2)直接 kill pid

      

     #重启

    su - elk -c "exec /usr/local/elasticsearch/bin/elasticsearch -d -p /tmp/elasticsearch.pid" 

    【3.7】查阅:日志位置

      

      

    这里面有很多日志,框出来的是错误日志,启动报错之类的信息看这里就好了;

    至于其他的,gc 垃圾回收日志,slowlog 慢日志,audit.json 审计信息;

    我这里有 log2 data2,是因为我之前有开多个实例;

    【3.8】elasticsearch linux二进制版本目录介绍

     

    目录结构说明,在配置文件里操作使用
    • home目录 :使用$ES_HOME表示,如上图,就是 /usr/local/elasticsearch
    • bin/ : 位置 $ES_HOME/bin,包含了elasticsearch和elasticsearch-plugin等脚本
    • conf/ :位置 $ES_HOME/config,包含了 配置文件 elasticsearch.yml 和 log4j2.properties,使用 path.conf 指定
    • data/ :位置 $ES_HOME/data,包含了每个index/shard的数据文件,可以指定多个位置,使用 path.data 指定
    • logs/ : 位置 $ES_HOME/logs,使用 path.logs 指定
    • plguins/ : 位置$ES_HOME/plugins
    • repo/ :使用 path.repo指定,没有默认位置,表示共享文件系统repository的位置。可以指定多个位置。
    • script/ :位置$ES_HOME/scripts,使用 path.scripts 指定。

    【4】基本查询使用 

    (1)查看健康情况(_cat/health)

      

    (2)查看所有索引(_cat/indices)

      

    (3)查看所有节点(_cat/nodes)

       

    【错误处理】

    (1)FileAlreadyExistsException:/root/elasticsearch/........

    表示之前可能启动过一次,但是被中止或者失败了;

    后续的路径文件已经生产,删掉这个文件即可;

    (2)uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException:

    寻找主要信息:failed to obtain node locks

    导致的原因可能是因为之前运行的es还没有正常关闭。

    第一步:通过命令:ps aux | grep ‘elastic’ 进行查看

        ES可能已经起了两个进程,把进程kill掉之后重新启动就可以了。

    第二步:通过命令: kill -9 进程号 关闭此进程。

    第三步:重新启动es。./bin/elasticsearch

    (3)ElasticsearchUncaughtExceptionHandler

    这是因为不知从哪个版本后,elasticsearch为了安全性,是不能用root用户启动的。

       

    解决的办法:当然是创建一个用户,用创建的用户启动啦,注意权限的问题,目录也应该改为创建的用户权限!

    我是用elk的用户启动,exec参数指定命令,这样就可以了
    su - elk -c "exec /opt/appl/elasticsearch-6.5.4/bin/elasticsearch -d"

    (4)【bootstrap checks failed】max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

    每个进程最大同时打开文件数太小:解决,见【2】中(1)

    [root@DB1 config]# ERROR: [3] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    [3]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
    ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch-7.11.1/logs/elasticsearch.log

    (5)【bootstrap checks failed】max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    elasticsearch用户拥有的内存权限太小,至少需要262144

    (6)【bootstrap checks failed】the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

    看提示可知:缺少默认配置,至少需要配置discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个参数.

    discovery.seed_hosts:  集群主机列表
    discovery.seed_providers: 基于配置文件配置集群主机列表
    cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填

    vim config/elasticsearch.yml
     
     
    #添加配置
    discovery.seed_hosts: ["127.0.0.1"]
     
    cluster.initial_master_nodes: ["node-1"]

    (7)could not find java; set JAVA_HOME or ensure java is in PATH

    JAVA 缺失,确定装了JDK

     【开发模式与生产模式】

    默认情况下,Elasticsearch假定您正在开发模式下工作。如果上述任何设置的配置不正确,都会在日志文件中写入警告,但是您将能够启动和运行Elasticsearch节点。

    一旦您配置了类似的网络设置network.host,Elasticsearch就会假设您即将投入生产,并将上述警告升级为异常。这些异常将阻止您的Elasticsearch节点启动。这是一项重要的安全措施,可确保不会因服务器配置错误而丢失数据。

    请注意,可以通过http.host单独配置HTTP和传输transport.host这对于将单个节点配置为可通过HTTP进行访问以进行测试(而不触发生产模式)很有用。

    设置开发者模式:(如果是具体IP,则是生产模式,他们的区别就是是否能够需要做启动自检)

    http.host: localhost
    transport.bind_host: localhost
    discovery.type: single-node

    开机启动检查相关参数:

      

    【参考文档】

    小白从入门到精通:https://www.cnblogs.com/chenyanbin/p/13419497.html

      真想的强力推荐,这篇是真的概念+基本增删改的神器;

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/gered/p/14443035.html
Copyright © 2011-2022 走看看