美文网首页
Elasticsearch 集群安装部署

Elasticsearch 集群安装部署

作者: 义焃 | 来源:发表于2018-11-18 19:09 被阅读0次

    Elasticsearch cluster install

    Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。

    设计用于云计算中,能够达到实时搜索,稳定,可靠, 快速,安装使用方便。基于RESTful接口。

    step 1 download JDK and elasticsearch

    jdk1.8.0_131 download

    elasticsearch5.6.5 download

    声明:系统版本:主机windows10,虚拟机服务器centos6.9,elasticsearch-5.6.5,Vmware10.7
    不能使用root用户,需要新建一个用户
    
    

    step 2 install JDK

    解压配置环境变量即可使用

    export JAVA_HOME=/opt/jdk1.8.0_131
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH
    
    #自JDK1.7之后 CLASSPATH 可以不配置
    
    

    step 3 system configuration

    配置静态IP

    sudo cd /etc/sysconfig/network-scripts/ifcfg-ens33
    sudo vi ifcfg-ens33  # 这个文件的名称有时可能不相同 ifcfg-eth0 | ifcfg-ens???
    
        修改如下参数
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=192.168.174.113
        NETMASK=255.255.255.0
        GATEWAY=192.168.174.2
    
    sudo service network start/stop/restart
    
    

    修改HOSTNAME

    Centos6
        sudo vi /etc/sysconfig/network 
        HOSTNAME=YOURNEWNAME 
        sudo hostname YOURNEWNAME
    Centos7
        sudo hostnamectl set-hostname YOURNEWNAME 
        sudo hostname YOURNEWNAME
    
    主机名中不能使用下划线(_)。
    主机名不能保护大写字符
    
    

    配置本地域名

    sudo vi /etc/hosts
    ip    HOST1 HOST2 …
    192.168.186.113    es1 hdfs1 hadoop1 spark1
    192.168.186.114    es2 hdfs2 hadoop2 spark2
    192.168.186.115    es3 hdfs3 hadoop3 spark3
    
    

    关闭防火墙

    Centos6
        sudo service iptables start/stop/status
        sudo chkconfig iptables off/--list  –永久关闭防火墙
    Centos7
        sudo systemctl stop/start/status firewalld.service
        sudo systemctl disable firewalld.service –永久关闭防火墙
    
    

    关闭SELinux

    查看Selinux的状态
    /usr/sbin/sestatus –v
    SELinux status:                 enabled
    如果SELinux status参数为enabled即为开启状态,需要进行下面的关闭操作。
    关闭SElinux
    sudo vim /etc/selinux/config
    在文档中找到SELINUX,将SELINUX的值设置为disabled,即:
    SELINUX=disabled
    在内存中关闭SElinux
    setenforce 0
    检查内存中状态
    getenforce
    如果日志显示结果为disabled或者permissive,说明操作已经成功。
    
    

    创建用户

    [root@es1 ~]# adduser es
    为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略:
    
    [root@es1 ~]# passwd es
    更改用户 es 的密码 。
    新的 密码:
    无效的密码: 密码未通过字典检查 - 过于简单化/系统化
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    
    

    为用户赋于sudo权限

    在root用户
    vi /etc/sudoers
    添加 : USERNAME    ALL=(ALL)   ALL
    以下配置可以给sudo权限免密
    添加 : USERNAME    ALL=(ALL)   NOPASSWD:ALL
    
    

    step 4 install elasticsearch

    解压缩

    $ mkdir -p /opt/elasticsearch
    $ tar –zxvf elasticsearch-5.6.5.tar.gz –C /opt/elasticsearch
    
    

    修改elasticsearch.yml配置文件

    $ vim /opt/elasticsearch/elasticsearch5.6.5/config/elasticsearch.yml
        cluster.name: hy2u-elasticsearch   (集群名称,同一集群要一样)
        node.name: hy2u-node-1  (节点名称,同一集群要不一样)
        http.port: 9200  #连接端口
        network.host: 192.168.174.113   #默认网络连接地址,写当前主机的静态IP,这里不能写127.0.0.1
        path.data: /opt/elasticsearch-5.6.5/data   #数据文件存储路径
        path.logs: /opt/elasticsearch-5.6.5/logs    #log文件存储路径
        discovery.zen.ping.unicast.hosts: ["192.168.174.113","192.168.174.114", "192.168.184.115"]#集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
        bootstrap.system_call_filter: false    # 因centos6不支持SecComp而默认bootstrap.system_call_filter为true进行检测,所以,要设置为 false。注:SecComp为secure computing mode简写
        http.cors.enabled: true  #是否支持跨域,默认为false
        http.cors.allow-origin: "*"   #当设置允许跨域,默认为*,表示支持所有域名
        discovery.zen.minimum_master_nodes: 2     #这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
    
    

    elasticsearch备份位置,路径要手动创建

    path.repo: ["/opt/elasticsearch/elasticseaarch-5.6.3/data/backups"]
    
    

    如果安装elasticsearch-head插件,需要添加以下选项

    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    

    如果安装x-pack插件,我们取消他的basic认证,需要添加以下选项

    xpack.security.enabled: false
    
    

    修改jvm内存[这个配置项很重要,在现实生产中要配的大一些,但是最大不能超过32g]

    vim config/jvm.options  
    -Xms2g  ---> -Xms512m  
    -Xmx2g  ---> -Xms512m   
    
    

    分发

    将配置好的Elasticsearch安装介质分发到其他的服务器上
    只需要将elasticsearch.yml配置文件中的相关参数修改一下即可
    
    cluster.name: hy2u-elasticsearch   (集群名称,同一集群要一样)
    node.name: hy2u-node-1  (节点名称,同一集群要不一样)
    http.port: 9200  #连接端口 (集群连接端口,同一集群要一样)
    network.host: 192.168.174.113   #默认网络连接地址,写当前主机的静态IP,这里不能写127.0.0.1
    
    

    启动与关闭

    每一台设备都要单独启动
    
    前台启动 
    $ ./elasticsearch 
    
    后台启动 -d为守护进程运行
    $ ./elasticsearch –d
    $ ./elasticsearch & # 使用这种方式他会打印日志在前台
    
    

    查看elasticsearch 进程

    $ jps
    2369 Elasticsearch
    
    

    使用kill 命令杀死进程

    kill -9 2369(pid)
    
    

    浏览器访问

    访问单节点:http://192.168.174.113:9200/
    
    

    step 4 install plugins

    install elasticsearch-head

    由于5.x版本开始,_site被禁用了,所以head等有页面展示的插件无法像2.x一样以嵌入形式运行,必须以一个单独的服务来运行。

    去GitHub下载elasticsearch-head源码 下载node并安装: head插件本质上是一个NodeJS工程,需要使用npm来下载依赖包并打包(npm可以理解为maven),下载node的地址:https://nodejs.org/en/download/。 解压安装包

    xz -d node*.tar.xz
    tar -xvf node*.tar
    
    

    配置环境变量

    sudo vi /etc/profile
    export NODE_HOME=/opt/node-*-linux-x64
    export PATH=$PATH:$NODE_HOME/bin
    
    

    刷新环境变量

    source /etc/profile
    
    

    验证node是否安装成功

    echo $NODE_HOME
    node -v
    npm -v
    
    

    编译head 修改head插件的配置文件

    $HEAD_HOME/Gruntfile.js
    connect: {
        server: {
           options: {
              port: 9100,
              hostname: '*', 
              base: '.',
              keepalive: true
           }
        }
    }
    
    $HEAD_HOME/_site/app.js
    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.186.30:9200";
    
    

    添加ES配置项

    vi $ES_HOME/config/elasticsearch.yml
    
    添加以下配置
        http.cors.enabled: true
        http.cors.allow-origin: "*"
    
    

    运行head插件

    cd $HEAD_HOME
    npm install
    cd head目录/node_modules/grunt/bin/
    ./grunt server &
    
    

    访问head插件

    http:/192.168.174.113:9100
    默认端口是9100,可以通过编辑head/Gruntfile.js进行修改。
    关闭 netstat -apn|grep 9100  
    
    

    install kibana

    解压kibana到相应的目录

    tar -zxvf /opt/elasticsearch/kibana-5.6.3-linux-x86_64.tar.gz -C /opt/elasticsearch
    
    

    修改配置文件kibana.yml

    vi /opt/elasticsearch/kibana-5.6.3/config/kibana.yml    (修改以下参数)
    server.port: 5601
    server.host: "192.168.174.113"
    elasticsearch.url: "http://192.168.174.113:9200"
    
    

    启动kibana

    前台:./opt/elasticsearch/kibana-5.6.3/bin/kibana
    后台:nohup /opt/elasticsearch/kibana-5.6.3/bin/kibana </dev/null &>/dev/null &
    
    

    install x-pack

    下载x-pack安装包 安装x-pack之前一定要先安装kibana

    在每一台elasticsearch节点的$ES_HOME下执行

    在线版:bin/elasticsearch-plugin install x-pack
    离线版:bin/elasticsearch-plugin install file:///home/admin/x-pack.zip    #file:后边一定是三个/少一个都不行
    
    

    在安装kibana的服务器上的kibana的$KIBANA_HOME下执行

    在线版:bin/kibana-plugin install x-pack
    离线版:bin/kibana-plugin install file:///home/admin/x-pack.zip
    
    

    在每一台elasticsearch节点的$ES_HOME/config/elasticsearch.yml文件中添加以下配置

    xpack.security.enabled: false
    
    

    卸载

    $ES_HOME/bin/elasticsearch-plugin remove x-pack
    $KIBANA_HOME/bin/kibana-plugin remove x-pack
    
    

    install IK

    install elasticsearch-sql

    5.x版本sql插件的安装和使用(目前支持最高的版本为5.1.2)
    参考网址:https://github.com/NLPchina/elasticsearch-sql
    1、es的sql插件分为两部分,一部分是需要放在es目录/plugins下的,用来支持sql查询;另外一部分类似于head插件,是一个NodeJS工程,提供页面服务。
    2、安装sql插件及web ui
    (1)在es集群中的每个节点上执行如下操作,(在每个节点上安装sql插件?)

    es ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.2.0/elasticsearch-sql-5.1.2.0.zip

    此命令会在es目录/plugins下创建一个sql目录,此时重启节点以便加载sql插件。重启并使得sql插件成功加载之后,便可以通过浏览器利用如:
    http://localhost:9200/_sql?sql=select * from indexName limit 10
    的方式进行查询。同时,sql的API也可以使用了。
    (2)在任意一台节点上安装sql的web应用
    ①下载es-sql-standalone,地址:https://github.com/NLPchina/elasticsearch-sql/releases/download/5.0.1/es-sql-site-standalone.zip
    ②安装并启动web应用

    es unzip es-sql-site-standalone.zip

    es cd es-sql-site-standalone/site-server

    es npm install express --save

    将es目录/plugins/sql目录下的_site目录覆盖es-sql-site-standalone目录下的_site

    es node node-server.js &

    此时sql的web应用已经启动了,默认端口是8080,可以通过编辑es目录/plugins/sql/es-sql-site/site-server/site_configuration.json进行修改。
    3、访问web界面
    最新版的sql界面访问时候有认证问题存在,2.x版直接使用的方式行不通。所以在访问页面时需要传入一个参数,如:
    http://192.168.186.30:8080/?base_uri=192.168.186.30:9200
    之所以要加这个参数是由于2.x升级到5.x的一个bug,2.x的访问方式是esIP:9200/_plugin/sql。在页面执行sql查询的时候,IP和端口引用地址栏的。而现在5.x版本的web页面是一个独立的应用,端口不能绑定成9200,但是与es交互的端口依然是访问web页面的端口,这就导致无法与es集群正常通信。在这里加这个参数的目的就是告诉sql的web界面与es通信的IP和端口。

    常见的安装问题

    can not run elasticsearch as root

    解决方法:创建其他非root账户,修改文件夹 文件 所属用户 组
    
    

    ERROR: bootstrap checks failed

    解决方法:修改系统limits.conf文件
    # vi /etc/security/limits.conf
    添加如下内容
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096
    备注:* 代表Linux所有用户名称(比如 hadoop)
    
    

    启动后,只有本地可以访问

    解决方法:在elasticsearch.yml文件中增加:network.bind_host: 0.0.0.0
    
    

    ERROR:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(...) failed; error='Cannot allocate memory' (errno=12)

    解决方法:修改jvm内存
         
       vim config/jvm.options  
       -Xms2g  ---> -Xms512m  
       -Xmx2g  ---> -Xms512m   
    
    

    max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

    解决方法:设置最大打开文件数
        修改最大文件数为65536
        # ulimit -n 65536
        查看是否修改成功
        # ulimit -a
    
    

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    解决方法:修改sysctl.conf
        # vi /etc/sysctl.conf 
        添加下面配置:
        vm.max_map_count=655360
        并执行命令:
        # sysctl -p
    
    

    max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

    解决方法:修改90-nproc.conf
    # vi /etc/security/limits.d/90-nproc.conf 
    修改如下内容:
    * soft nproc 1024
    #修改为
    * soft nproc 2048
    

    相关文章

      网友评论

          本文标题:Elasticsearch 集群安装部署

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