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

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

  • 相关阅读:
    【酷熊科技】工作积累 ----------- Unity3D UITable协程加载问题 (转载 ---- 关于NGUI中UiTable和UIGrid脚本的一点感受)
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 控制角色在真实的环境中寻路
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 动作event实际应用
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- Animator动画状态机
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- Legacy动画系统
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 代码控制音频视频
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 实际应用physic:控制你的角色在真实的环境中行走
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 实际应用physic:控制你的角色在真实的环境中行走
    【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 组件的生命周期
    设计模式 之 《外观模式》
  • 原文地址:https://www.cnblogs.com/gered/p/14443035.html
Copyright © 2011-2022 走看看