Elasticscarch集群搭建

作者: 陈_志鹏 | 来源:发表于2017-11-05 18:51 被阅读102次

    Elasticscarch集群环境搭建

    准备环境

    操作系统:CentOS 7
    ElasticScarch版本:5.6
    JDK:1.8

    集群的构建方式和节点的介绍

    我准备使用的VirtualBox虚拟机构建3个ElasticScarch的节点。
    IP和主机名如下:

    IP hostname
    192.168.94.101 es-node1
    192.168.94.102 es-node2
    192.168.94.103 es-node3

    在我的VirtualBox虚拟机中,有一个干净可复制的裸机版本,我只需要改改IP和hostname 即可使用。
    可以参考我的文章:虚拟机搭建Linux开发环境(Centos 7)

    开始环境的搭建

    添加信息的用户组
    使用命令(添加一个用户叫es 密码是root):

    adduser es
    passwd es
    然后设置你的用户密码

    编辑 /etc/sudoers文件添加上自己的用户信息

    命令:vim /etc/sudoers

    我的用户名叫es

    image.png

    保存退出

    注意:在Elasticscarch集群中不允许使用root用户权限进行启动。

    解压 Elasticscarch5.6

    命令:sudo tar -zxvf elasticsearch-5.6.3.tar.gz

    解压完毕
    /usr/local/elasticsearch-5.6.3是我的安装目录

    image.png

    介绍一下目录的结构

    目录名称 作用与用途
    bin 用于运行Elasticsearch和管理一些应用的脚本
    config 配置文件专用目录
    lib Elasticsearch使用的库
    modules 加载的模板列表(内置插件)
    plugins 自定义插件目录
    data 数据存储目录(下图没有这个目录是因为集群还没启动,启动后会自动生成该目录)
    logs 日志存放目录(下图没有这个目录是因为集群还没启动,启动后会自动生成该目录)

    目录结构如下:

    image.png

    设置配置文件

    在设置配置文件之前必须要先了解三种节点

    在Elasticsearch的工作机制中分别有三种节点,分别是MasterNode 、DataNode 、ClientNode,每个节点都有自己的分工来维持Elasticsearch的整体工作。

    节点名称 节点的主要工作
    MasterNode 管理着节点的加入、退出。用于存放元数据
    DataNode 管理分片的数据 ,一个索引的一部分数据
    ClientNode 调节器节点 多个DataNode返回的数据会给它进行二次聚合、排序等计算。

    了解了以上的节点后下面来配置Elasticsearch。

    配置Elasticsearch

    注意事项:在Elasticsearch配置中需要注意两项的配置,一种是Elasticsearch本身的配置,
    另外还需要修改Linux的一些内核参数。

    进入Elasticsearch的配置目录
    进入config配置文件目录你会看见有3个配置文件:


    image.png
    配置文件名称 作用与用途
    elasticsearch.yml Elasticsearch核心的配置文件
    jvm.options JVM的参数配置文件
    log4j2.properties 日志的配置文件

    编辑elasticsearch.yml文件

    sudo vim elasticsearch.yml

    所需修改的配置项:

    参数名称 参数作用与用途
    cluster.name 集群名称
    node.name 节点名称
    node.attr.rack: r1 属性
    path.data 数据存放目录(不设置默认会在elasticsearch目录下创建data目录存放数据)
    path.logs 日志存放目录(不设置默认会在elasticsearch目录下创建logs目录存放日志)
    bootstrap.memory_lock: true es启动时锁内存设置成要设置成true
    network.host: 对外发布的ip(设置自己的主机IP)
    http.port: 对外发布的端口(不设置默认是9200)
    discovery.zen.ping.unicast.hosts: 采用zen方式对外单播,组建集群的IP
    discovery.zen.minimum_master_nodes: 防止脑裂参数(所有node节点 /2 +1)
    bootstrap.system_call_filter: : 防火墙设置设置成false即可

    cluster.name 配置:
    elasticsearch会通过相同cluster.name组成一个集群,我有3台机器 所以我3台机器都设置成一样。


    image.png

    node.name配置:
    节点名称的设置,为了更好的区分,我会用IP来命名它们的节点名称。

    IP: 192.168.94.101

    image.png

    IP: 192.168.94.102

    image.png

    IP: 192.168.94.103

    image.png

    node.attr.rack:配置

    三台机器默认开启

    image.png

    path.data配置:
    数据存放的地方,默认我就不设置了
    默认会在elasticsearch目录下创建data目录存放数据

    image.png

    path.logs配置:
    日志存放的地方,默认我就不设置了
    默认会在elasticsearch目录下创建logs目录存放日志

    image.png

    bootstrap.memory_lock配置:
    避免报错 在启动elasticsearch要把内存锁起来,配置项把它设置成true

    image.png

    bootstrap.system_call_filter配置:
    设置成false

    image.png

    network.host配置:
    设置主机的IP对外提供服务,我这有三台主机

    image.png image.png image.png

    http.port配置:
    这是对外提供的端口,默认我既是9200我就不改了

    image.png

    discovery.zen.ping.unicast.hosts设置:
    采用zen方式对外单播,表示要和谁组建成集群。
    下面是我三台机器的配置,不算本机其他的都要配上

    192.168.94.101

    image.png

    192.168.94.102

    image.png

    192.168.94.103

    image.png

    discovery.zen.minimum_master_nodes配置:
    该参数是防止脑裂的。里面参数定义
    设置投票选举的最少的机器个数,等待最少设置的机器个数才能进行投票决定谁来当主master。

    image.png

    脑裂的介绍:
    大家都知道多个master只有一个主master,
    当主master出现故障的时候,其他的master节点就会顶上去做主master来维持整个集群的运作。
    假设我现在的集群中有3个master 其中一个是主master 节点,当主master节点出现故障,其他两个master都会顶上去做主master,一个集群中不能够有2个主master。出现这种情况就叫脑裂,这时整个集群不知道到底要听谁的指挥。

    设置好elasticsearch.yml 就保存退出。

    设置jvm.options参数
    在这个配置文件中我们只需要改堆就可以了,因为我的是虚拟机搭建的集群,我把它设置512m,默认情况下是2G
    如果在生产环境中最大不要设置超过32GB,因为超过32GB JVM会用64位的指针,JVM的指针长了很多内存也就白白的浪费了。elasticsearch已经对对JVM进行过调优了,我们只需要改堆内存参数即可 把两个设置成一致。当然如果你对JVM调优熟悉到极致那就另说了。

    sudu vim jvm.options

    参数名称 参数作用与用途
    -Xmx 堆内存
    image.png

    配置Linux的一些参数
    通过配置完elasticsearch的配置文件后,集群还不能启动,还需要配置Linux的一些内核等一些参数

    禁用swap:

    sudo swapoff -a

    修改Linux内核参数:

    sudo vim /etc/security/limits.conf
    添加以下内容:
    * soft nofile 65536
    * hard nofile 131072
    * soft memlock unlimited
    * hard memlock unlimited

    如图:

    image.png

    修改虚拟内存空间及swap使用率:

    sudo vim /etc/sysctl.conf

    添加以下内容:
    vm.max_map_count=655360
    vm.swappiness=1

    image.png

    指定的文件加载系统参数:

    sudo sysctl -p

    修改创建本地线程数:

    sudo vim /etc/security/limits.d/20-nproc.conf

    改为:
    * soft nproc 2048

    我用的是CentOS 7 它默认大于2048,所以我不需要修改

    image.png

    注意:因为elasticsearch 不允许root用户启动,所以要给当前的用户分配执行的权限
    执行命令 :sudo chown -R es:root /usr/local/elasticsearch-5.6.3
    改变elasticsearch文件夹所有者到当前用户
    我当前用户是es 密码是root 分配执行/usr/local/elasticsearch-5.6.3的权限
    不设置会报错。

    最后重启集群:

    sudo init 6

    启动elasticsearch集群

    ./bin/elasticsearch

    你会发现整个集群已经起来了

    image.png

    相关文章

      网友评论

      本文标题:Elasticscarch集群搭建

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