zoukankan      html  css  js  c++  java
  • ElasticSearch CentOS安装

    ElasticSearch CentOS安装

    一、安装jre环境

    由于ES是基于Java开发的,所以本机需要安装好JDK或者jre,配置好对应的环境变量,ES7.x的版本需要JDK11以上的版本。6.x需要JDK8以上的版本。

    二、创建用户

    ES不支持root用户启动,所以需要创建一个对应的用户

    groupadd ela 创建ela组
    useradd -g ela ela 创建ela用户,并且加入ela组
    passwd ela 为ela用户设定登录密码
    
    
    #方法2 给root用户增加权限
    vim /etc/sudoers
    # 添加 
    root ALL=(ALL)	ALL
    ela    ALL=(ALL)       ALL #ela是我要赋予权限的用户名
    

    三、授权

    上一步创建的ela用户是没有es的执行权限的,所以在root用户权限解压后,需要给ela用户授权。

    chown -R ela.ela /opt/develop/elasticsearch-6.8.3/
    

    四、配置ES文件

    vi /opt/elasticsearch-6.8.3/config/elasticsearch.yml
    

    配置文件中需要用到几个文件夹,如果不存在需要先创建好(切换到root用户创建并授权)

    案例:

    /opt/develop/elasticsearch-6.8.3

    su root
    mkdir -p /data/es-data
    mkdir -p /var/log/elasticsearch
    chown -R ela.ela /data/
    chown -R ela.ela /var/log/elasticsearch
    
    //打开设定es群集名称
    cluster.name: my-application
    //es当前节点名称,用于区分不同节点
    node.name: node-1
    //修改数据目录,此目录为自定义,需要在root用户下创建,且属主属组更改为ela
    path.data: /opt/develop/elasticsearch-6.8.3/data
    //日志目录位置,需自己创建,方式同上
    path.logs: /opt/develop/elasticsearch-6.8.3/logs
    //elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true 但亲试没用 得设为false
    bootstrap.memory_lock: false
    //监听访问地址为任意网段
    network.host: 0.0.0.0
    //服务监听端口
    http.port: 9200
    

    五、分配内存(root用户下)

    vim /etc/security/limits.conf
    

    添加如下命令:

    * 	soft 	nofile 	65536
    * 	hard 	nofile 	131072
    *   soft    nproc   4096
    *   hard    nproc   4096
    ela hard memlock unlimited
    ela soft memlock unlimited
    

    vim /etc/sysctl.conf追加如下配置:

    vm.max_map_count=262144
    

    sysctl-p 更新文件

    六、切换到ela用户,启动ES

    su ela
    
    cd /opt/develop/elasticsearch-6.8.3/bin/
    
    ./elasticsearch	#前台启动
    
    OR
    
    ./elasticsearch -d #后台启动
    

    七、关闭防火墙或者释放端口

    systemctl stop firewalld
    

    八、访问

    在物理机中,使用host:9200访问即可

    九、集群的搭建

      1、vi elasticsearch.yml  修改配置文件
    
      2、cluster.name: myes    ###保证三台服务器节点集群名称相同
    
      3、node.name: node-1   #### 每个节点名称不一样 其他两台为node-1 ,node-2
    
      4、network.host: 192.168.212.180   #### 实际服务器ip地址
    
      5、discovery.zen.ping.unicast.hosts: ["192.168.212.184", "192.168.212.185","192.168.212.186"]  ##多个服务集群ip
    
      6、discovery.zen.minimum_master_nodes: 1
    

    访问http://192.168.188.128:9200/_cat/nodes?pretty即可查看当前集群内容,*号表示为master节点

      注意:

        注意克隆data文件会导致数据不同步

        报该错误解决办法 :

        failed to send join request to master

        因为克隆导致data文件也克隆呢,直接清除每台服务器data文件。

    集群参考:https://www.cnblogs.com/soft2018/p/10213266.html

    https://www.cnblogs.com/guyouyin123/p/13308733.html

    十、跨域问题

    vim ./elasticsearch-6.2.4/config/elasticsearch.yml
    
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

    十一、图形化工具的使用

    解决了跨域问题后我们可以使用ES的图形化工具elasticsearch-head,它需要node.js环境,直接从github下载后

    npm install

    npm run start即可,如果连不上请参考第十步

    十二、集群选举策略

    无论是广播发现还是到单播发现,一旦集群中的节点发生变化,它们就会协商谁将成为主节点,elasticsearch认为所有节点都有资格成为主节点。如果集群中只有一个节点,那么该节点首先会等一段时间,如果还是没有发现其他节点,就会任命自己为主节点。
    对于节点数较少的集群,我们可以设置主节点的最小数量,虽然这么设置看上去集群可以拥有多个主节点。实际上这么设置是告诉集群有多少个节点有资格成为主节点。怎么设置呢?修改配置文件中的:

    discovery.zen.minimum_master_nodes: 3
    

    一般的规则是集群节点数除以2(向下取整)再加一。比如3个节点集群要设置为2。这么着是为了防止脑裂(split brain)问题。

    十三、什么是脑裂

    脑裂这个词描述的是这样的一个场景:(通常是在重负荷或网络存在问题时)elasticsearch集群中一个或者多个节点失去和主节点的通信,然后各节点就开始选举新的主节点,继续处理请求。这个时候,可能有两个不同的集群在相互运行着,这就是脑裂一词的由来,因为单一集群被分成了两部分。为了防止这种情况的发生,我们就需要设置集群节点的总数,规则就是节点总数除以2再加一(半数以上)。这样,当一个或者多个节点失去通信,小老弟们就无法选举出新的主节点来形成新的集群。因为这些小老弟们无法满足设置的规则数量。
    我们通过下图来说明如何防止脑裂。比如现在,有这样一个5个节点的集群,并且都有资格成为主节点:

    为了防止脑裂,我们对该集群设置参数:

    discovery.zen.minimum_master_nodes: 3   # 3=5/2+1
    

    之前原集群的主节点是node1,由于网络和负荷等原因,原集群被分为了两个switchnode1 、2node3、4、5。因为minimum_master_nodes参数是3,所以node3、4、5可以组成集群,并且选举出了主节点node3。而node1、2节点因为不满足minimum_master_nodes条件而无法选举,只能一直寻求加入集群(还记得单播列表吗?),要么网络和负荷恢复正常后加入node3、4、5组成的集群中,要么就是一直处于寻找集群状态,这样就防止了集群的脑裂问题。
    除了设置minimum_master_nodes参数,有时候还需要设置node_master参数,比如有两个节点的集群,如果出现脑裂问题,那么它们自己都无法选举,因为都不符合半数以上。这时我们可以指定node_master,让其中一个节点有资格成为主节点,另外一个节点只能做存储用。当然这是特殊情况。

    那么,主节点是如何知道某个节点还活着呢?这就要说到错误识别了。

    十四、错误识别

    其实错误识别,就是当主节点被确定后,建立起内部的ping机制来确保每个节点在集群中保持活跃和健康,这就是错误识别。
    主节点ping集群中的其他节点,而且每个节点也会ping主节点来确认主节点还活着,如果没有响应,则宣布该节点失联。想象一下,老大要时不常的看看(循环)小弟们是否还活着,而小老弟们也要时不常的看看老大还在不在,不在了就赶紧再选举一个出来!

    https://www.cnblogs.com/guyouyin123/p/13308733.html

  • 相关阅读:
    python_6
    python_day4
    python_day3
    python_day2
    python
    python入门
    jQuery之前端国际化jQuery.i18n.properties
    转载!网页中插入百度地图
    jQuery.validate 中文API
    Web移动端Fixed布局的解决方案
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/14166921.html
Copyright © 2011-2022 走看看