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

原文地址:https://www.cnblogs.com/zhangruifeng/p/14166921.html