美文网首页
搭建elasticsearch

搭建elasticsearch

作者: 飘_摇_ | 来源:发表于2019-12-02 10:52 被阅读0次

    使用elasticsearch-6.5.1.tar.gz
    jdk版本最低需要1.8
    1,配置jdk1.8
    下载jdk-8u171-linux-x64.gz
    tar -zxvf 解压
    配置环境变量:
    vim /etc/profile
    在文件最后加入如下行

    export JAVA_HOME=/usr/local/jdk/jdk1.8.0_191
    export JRE_HOME=$JAVA_HOME/jre  
    PATH=$JAVA_HOME/bin:/bin:/usr/bin
    export CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    
    source /etc/profile 
    

    使配置生效

    2,安装elasticsearch
    官网获取最新版本 https://www.elastic.co/cn/downloads/elasticsearch
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz 下载
    切换目录至elasticsearch-6.5.1
    ./bin/elasticsearch 运行elasticsearch
    抛出如下异常java.lang.RuntimeException: can not run elasticsearch as root,
    不能以root用户运行,我这里新建用户es ,切换到es用户运行,
    抛出如下异常 java.nio.file.AccessDeniedException: /usr/local/elasticsearch-6.5.1/config/jvm.options
    当前用户没有执行权限,用root用户给其赋权限
    chown es elasticsearch-6.5.1 -R
    再次执行,不抛异常,新开一个终端执行 curl localhost:9200
    返回如下信息表示elasticsearch 启动成功

    {
     "name" : "iFpK5gT",
     "cluster_name" : "elasticsearch",
     "cluster_uuid" : "ml4u3QnATf2f3qEXMqFRPA",
     "version" : {
     "number" : "6.5.1",
     "build_flavor" : "default",
     "build_type" : "tar",
     "build_hash" : "8c58350",
     "build_date" : "2018-11-16T02:22:42.182257Z",
     "build_snapshot" : false,
     "lucene_version" : "7.5.0",
     "minimum_wire_compatibility_version" : "5.6.0",
     "minimum_index_compatibility_version" : "5.0.0"
     },
     "tagline" : "You Know, for Search"
    }
    

    3,解决elasticsearch 只能本机访问问题
    关闭防火墙或者开放9200端口
    我这里直接关闭防火墙:

    systemctl stop firewalld.service #停止firewall
    systemctl disable firewalld.service #禁止firewall开机启动
    firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
    

    修改config下elasticsearch.yml文件,最后新增一行

    network.host: 0.0.0.0
    

    重新启动,抛出如下异常
    ERROR: [2] bootstrap checks failed
    [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    解决[1]
    切换到root用户,编辑limits.conf 添加类似如下内容

    vi /etc/security/limits.conf 
    

    添加如下内容:

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

    解决[2]
    切换到root用户修改配置sysctl.conf

    vi /etc/sysctl.conf 
    

    添加下面配置:

    vm.max_map_count=655360
    

    并执行命令:

    sysctl -p
    

    如果提示-bash: sysctl: 未找到命令,则执行whereis sysctl
    使用绝对路径执行 /usr/sbin/sysctl -p
    重新启动elasticsearch,还是无效?
    必须重新登录启动elasticsearch的账户才可以
    打开浏览器使用ip:port访问

    image.png
    4,配置nodejs环境
    安装head插件需要nodejs 环境
    下载最新nodejs https://nodejs.org/en/download/
    image.png
    wget https://nodejs.org/dist/v10.14.1/node-v10.14.1-linux-x64.tar.xz
    ***.tar.xz格式文件需要两部解压步骤
    xz -d node-v8.11.2-linux-x64.tar.xz
    tar -xvf node-v8.11.2-linux-x64.tar
    

    配置环境:

    ln -s /usr/local/node-v10.14.1-linux-x64/bin/node /usr/local/bin/node
    ln -s /usr/local/node-v10.14.1-linux-x64/bin/npm /usr/local/bin/npm
    node -v 
    

    5,安装head插件
    github上下载最新head插件
    wget https://github.com/mobz/elasticsearch-head/archive/master.zip
    解压 unzip elasticsearch-head-master.zip
    进入elasticsearch-head-master目录执行
    npm install 抛出如下异常:

    image.png

    设置npm镜像

    npm config get proxy
    npm config get https-proxy
    

    如果不为null 则设置为null

    npm config set proxy null
    npm config set https-proxy null
    npm config set registry [http://registry.cnpmjs.org](http://registry.cnpmjs.org)
    npm info underscore
    

    继续执行 npm install 抛出如下异常:


    image.png

    执行 npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
    完成后继续执行 npm install不抛异常执行npm run start


    image.png
    head 安装完成
    6,集成head

    在elasticsearch.yml 末端增加

    如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
    http.cors.enabeld: true
    
    如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。
    http.cors.allow-origin: "*"
    

    重启es与head

    [es@zhuli elasticsearch-6.5.1]$ ./bin/elasticsearch -d #-d 表示后台启动
    [es@zhuli elasticsearch-head-master]$ nohup npm run start >run.log 2>&1 & #后台启动 lsof -i:9100 查看进程
    
    image.png

    注意:红框里面默认地址是localhost 需要改成服务端ip
    7,elasticsearch 集群搭建
    修改配置,建立master:
    vim config/elasticsearch.yml 在最后增加

    #集群名称
    cluster.name: zhuli
    #节点名称
    node.name: master
    node.master: true
    

    新建文件夹es_slave 用于存放slave,复制个es 文件夹命名为es_slave1和es_slave2
    修改es_slave1配置文件:

    cluster.name: zhuli
    node.name: slave1
    network.host: 0.0.0.0
    #避免和master端口冲突
    http.port: 9201
    #避免和master是同一个网络
    discovery.zen.ping.unicast.hosts:ip:port
    

    修改es_slave2配置文件:

    cluster.name: zhuli
    node.name: slave2
    network.host: 0.0.0.0
    #避免和master端口冲突
    http.port: 9202
    #避免和master是同一个网络
    discovery.zen.ping.unicast.hosts:ip:port
    

    分别启动master和两个slave


    image.png

    slave无法加入master的问题:
    slave节点的配置文件config/elasticsearch.yml
    discovery.zen.ping.unicast.hosts:ip:port

    应该与master节点的transport_address一致,节点信息用以下命令查看


    image.png

    相关文章

      网友评论

          本文标题:搭建elasticsearch

          本文链接:https://www.haomeiwen.com/subject/ecyxgctx.html