zoukankan      html  css  js  c++  java
  • Linux上安装elasticsearch

    1、ES(elasticsearch)简介
      ES是一个分布式使用RestFul风格的数据搜索引擎,并且ES是构建在Lucene框架之上,也就是说ES也是基于Lucene进行开发的搜索引擎框架。
      ES三大核心:
        Index
          相当于关系型数据库中的库
        Type
          相当于关系型数据库中的表
        Document
          相当于关系型数据库中的表数据
     
    2、ES的配置
      ES必须要配置jdk。
      ES不要用最新版,因为ES的最新版必须要求jdk在11版本以上,但是目前市面上所有的公司全部都在jdk8或者以下。
    2.1.配置jdk
    2.2.从官网中下载ES
    2.3.解压es的压缩包
      tar -zxvf es....
    2.4.增大linux上部署软件的内存和硬盘
      (以下的配置一定要使用root用户,否则没有权限或者配置不生效)
      vi /etc/security/limits.conf
      配置了某个用户/某些用户对软件的内存和硬盘使用权限
    * soft nproc 655350 
    * soft nofile 655350 
    * hard nproc 655350 
    * hard nofile 655350
    3.5.最大线程数(ES一般情况是以集群启动,所以目前的用户无法满足ES所要创建的线程,所以需要加大线程数)
      这里只是配置系统可容纳最大的线程数,默认系统都有自动保护,不会开启很大的线程数,需要手动修改
      vi /etc/sysctl.conf
    # Controls the default maxmimum size of a mesage queue kernel.msgmnb = 65536 
    # Controls the maximum size of a message, in bytes kernel.msgmax = 65536 
    # Controls the maximum shared segment size, in bytes kernel.shmmax = 68719476736 
    # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296
    3.6.配置用户最大的线程数
      vi /etc/secrity/limits.d/90-nproc.conf
      需要把* 1024--->4096
    3.7.使修改永久生效
      sysctl -p
    3.8.直接启动es
      在安装目录下的bin目录
      ./elasticsearch
      会报错!!!!(不可用root用户启动,详情见下文)
    3.9.修改elasticSeach.yml配置文件
    # 修改集群名字(名字随便起,没有什么意义)
    cluster.name: my-cluster
    # 如果是单节点(名字随便起,如果是集群则不能重复)
    node.name: node-1
    # ES所存放数据的位置(默认data目录不存在,需要自己手动创建)
    path.data: /home/apps/elasticsearch-6.4.0/data
    # ES的日志存放目录(默认已经存在,直接使用即可,不需要创建)
    path.logs: /home/apps/elasticsearch-6.4.0/logs
    # 放开ES的内存锁,让ES直接拥有最大内存使用权
    bootstrap.memory_lock: false
    # centos6中没有CONFIG_SECCOMP_FILTER,但是centos7中有,如果linux系统为centos6则需要关闭过滤
    bootstrap.system_call_filter: false
    # ES的主机地址(一旦配置的是0,就是代表所有的电脑都可以连接(对连接不再造成任何限制))
    network.host: 192.168.23.136(0.0.0.0)
    # ES的默认端口号(./elasticsearch -d(启动的是ES的控制台))
    http.port: 9200
    # 识别其他的集群host(如果为单节点只需要写一个)
    discovery.zen.ping.unicast.hosts: ["192.168.23.136","",""]
    3.10.启动ES
      进入bin目录
      前台启动(我们关闭命令行或者退出,应用就会关闭) ./elasticsearch
      后台启动,这样当我们退出时,应用仍在后台运行 ./elasticsearch -d
      前台启动,直接ctrl+c退出即可,后台启动,停止时可以直接杀掉进程
    3.11.检测是否启动成功
      在浏览器地址栏输入:  ip:端口号
      出现下列代码说明启动成功
    {
    "name" : "node-1",
    "cluster_name" : "my-cluster",
    "cluster_uuid" : "UmoHkEZzReGQMrrLShhDIQ",
    "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
    },
    "tagline" : "You Know, for Search"
    }
    配置ES所遇到的问题:
    1.ES为了自我保护,不让使用root用户启动,因为root用户权限过大,容易修改ES自己配置
      创建新的用户并且授权
        useradd esuser
        passwd esuser ---> 123456
      授权:
        chown -R esuser /home/apps/elasticsearch
    2.因为ES需要消耗非常大的线程数量和内存以及硬盘存储空间
      [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
      [1]:当前启动用户无法对linux系统调动很多的硬盘以及内存存储空间,所以需要自行修改!
      vi /etc/security/limits.conf 在文件后加上 * soft nproc 655350 * soft nofile 655350 * hard nproc 655350 * hard nofile 655350
      [2]: max number of threads [1024] for user [esuser] is too low, increase to at least [4096]
      [2]:当前启动的用户太low了,无法调动很多的线程(默认只能调动1024)
      vi /etc/secrity/limits.d/90-nproc.conf
      [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
      [3]:需要配置vi /etc/sysctl.conf文件,加大系统默认的总进程数
    最后一行添加:
          vm.max_map_count = 262144
    3.使用创建出新用户启动没有问题,但是当使用root用户启动一次后,再使用新创建的用户启动就有问题
      新创建的用户无法使用root用户所创建出的文件
      无论是使用哪一个用户启动都会在config文件夹中创建elasticsearch.keystore文件,root用户权限太大,创建的文件其他用户无法使用,所以会报错!
    4.java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed
      因为最终CONFIG_SECCOMP系统在centos7中默认会被加载,但是在centos6中没有
      需要更换centos的版本6---->7,或者修改es的配置文件,在yml配置文件中添加一行数据
    vim /home/apps/elasticsearch-6.4.0/config/elasticsearch.yml
          bootstrap.system_call_filter: false
     
  • 相关阅读:
    QT开发之旅一DS7400主机调试工具
    读《程序员,你伤不起》杂感(附带分享两个项目源码)
    这些年过上幸福生活的程序员(中篇)
    这些年过上幸福生活的程序员(上篇)
    如果第三方数据表与系统数据库里的表名格式不一致的解决方案
    数据库设计原则
    MYSQL密码设置
    关于phpmyadmin #1045无法登陆服务器的问题
    TP快捷函数
    跨控制器调用
  • 原文地址:https://www.cnblogs.com/KelvinDaniels/p/11533581.html
Copyright © 2011-2022 走看看