zoukankan      html  css  js  c++  java
  • elasticsearch单机及集群搭建

    单机版:

    解压elasticsearch

    配置vim elasticsearch.yml

    sed -n '/^#/!p' /usr/local/ELK/elasticsearch/config/elasticsearch.yml
    
     
    
    cluster.name: my-application              # 设置ES集群的集群名称
    
    node.name: node-1                      #本台机器在集群中的名称
    
    path.data: /usr/local/ELK/elasticsearch/data  #设置ES存储data
    
    path.logs: /usr/local/ELK/elasticsearch/logs   #设置ES存储logs
    
    network.host: 192.168.254.3               #访问地址
    
    http.port: 9200                          #访问端口
    
    #以下两项设置es5.x版本的head插件可以访问es
    
    http.cors.enabled: true             #开启跨域访问支持,默认为false
    
    http.cors.allow-origin: "*"           #跨域访问允许的域名地址,使用正则表达式

    因为es禁止使用root账号启动,所以新建账号然后进入bin目录,./elasticsearch启动

    useradd elasticsearch -s /bin/bash
    
    chown -R elasticsearch.elasticsearch /usr/local/ELK/elasticsearch
    
    su elasticsearch ./elasticsearch

    启动时报错

     

    查看日志,显示需要2G的内存。

    解决:因为elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配即可

    config/jvm.options

     

    解决方法

    vi /etc/security/limits.conf 

    添加如下内容:

    * soft nofile 65536
    
    * hard nofile 131072
    
    * soft nproc 2048
    
    * hard nproc 4096

    vi /etc/security/limits.d/90-nproc.conf 

    修改如下内容:

    * soft nproc 1024
    
    #修改为
    
    * soft nproc 2048

    vi /etc/sysctl.conf 

    添加下面配置:

    vm.max_map_count=655360

    并执行命令:

    sysctl -p

    再次启动再次报错:

    ERROR: bootstrap checks failed

    system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

    原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。

    解决:elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:

    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false

    再次启动成功

    集群:

    1、复制5份es,版本要相同,且各个节点上jdk版本也要相同,否则会报数据同步格式不一致  invalid internal transport message format。

    2、配置elasticsearch.yml,主要修改以下方面:

      cluster.name: my-application    #集群名,各个节点要一致

      node.name: node-01         #节点名

      path.data: /data1/elk/elasticsearch/data   #数据存储位置

      path.logs: /data1/elk/elasticsearch/logs  #日志

      bootstrap.system_call_filter: false   #关闭锁内存

      network.host: 192.168.0.1     #各个节点IP,每个节点写自己的ip

      http.port: 9200                       #端口

      discovery.zen.ping.unicast.hosts: ["192.168.0.1", "192.168.0.2","192.168.0.3","192.168.0.4","192.168.0.5"]         #集群ip列表

      discovery.zen.minimum_master_nodes: 3    #集群master节点数,建议为(集群节点总数/2)+1

    3、配置好直接启动即可,随意先启动哪一台,先启动即为master。9300是tcp通讯端口,集群间和TCPClient都走的它,所以各个主机间9300一定要能互通。

    4、验证集群    ,es 9200是http协议的RESTful接口,可用此端口查看集群状态

      curl -XGET 'http://192.168.0.1:9200/_cat/nodes?pretty' 

      其中

    • _cat代表查看信息
    • nodes为查看节点信息,默认会显示为一行,所以就用刀了?preety让信息更有好的显示
    • ?preety让输出信息更友好的显示

    结果如下表示集群已搭建成功:

    5、es启动脚本

      vim /etc/init.d/es

    #!/bin/sh
    #chkconfig: 2345 80 05
    #description: elasticsearch
    
    export JAVA_HOME=/usr/local/jdk1.8.0_92
    export JAVA_BIN=/usr/local/jdk1.8.0_92/bin
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    
    case "$1" in
        start)
           su dev<<!
           cd /data1/elk/elasticsearch
           ./bin/elasticsearch -d
           !
           echo "elasticsearch startup"
           ;; 
        stop)
          es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
           kill -9 $es_pid
           echo "elasticsearch stopped"
           ;; 
        restart)
           es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
           kill -9 $es_pid
           echo "elasticsearch stopped"
           su dev<<!
           cd /data1/elk/elasticsearch
           ./bin/elasticsearch -d
           !
           echo "elasticsearch startup"
           ;; 
      *)
    echo "start|stop|restart"
    ;; 
    esac
    
    exit $?

     

    6、集群管理-cerebro

      下载cerebro     

    wget https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.zip

    解压并配置application.conf 

    启动后,访问http://127.0.0.1:9000 即可

    因为cerebo目前没有什么登录验证(最起码写这篇博客时,我还不知道,如果你们知道更方便的登录验证,请留言告诉我,谢谢~),用户直接访问域名即可,不是很安全,所以用nginx配置下登录验证。

    1、在location /下添加auth_basic_user_file /usr/local/.passwd;
    2、登陆http://tool.oschina.net/htpasswd 输入用户名和密码,在线生成加密密码
    3、将生成的密码写入/usr/local/.passwd文件中
    echo "wuyun:$apr1$TrU5vUSC$RBuz3xG67Mr2pnAV596N5." >/usr/local/.passwd

    nginx配置如下:

    此时重启nginx,再登录访问域名时就需要输入账号密码了。不输入密码会报401 Authorization Required错误



    另如果logstash启动多个配置需先建立单独存在配置文件目录,

    然后启动
    nohup  ./logstash -f ../conf &
  • 相关阅读:
    Nginx编译安装Lua模块
    Openresty =>nginx+lua
    windows下配置lua开发环境
    IntelljIdea安装nginx插件及单页面应用路由的nginx配置
    解决 start.spring.io 不能访问 使用阿里云国服链接替代
    Lua入门教程
    数据库锁机制] 深入理解乐观锁、悲观锁以及CAS乐观锁的实现机制原理分析
    前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
    Java死锁排查和Java CPU 100% 排查的步骤整理
    Windows平台安装配置Hadoop
  • 原文地址:https://www.cnblogs.com/zphqq/p/9591198.html
Copyright © 2011-2022 走看看