Elasticsearch(二)---搭建

举报
前进的蜗牛 发表于 2023/12/11 15:44:58 2023/12/11
【摘要】 ​ 搭建es不允许root用于运行创建esuser用户:useradd esuser设置密码passwd esuser让esuser拥有sudo的权限,需要修改/etc/sudoers文件需要先给/etc/sudoers添加写的权限​[root@node1 ~]# vim /etc/sudoers改完之后将写权限删除三台服务器上操作在/opt下创建目录es,将es的所有权切换给esuser[...

 搭建es

不允许root用于运行

创建esuser用户:

useradd esuser

设置密码

passwd esuser

让esuser拥有sudo的权限,需要修改/etc/sudoers文件

需要先给/etc/sudoers添加写的权限

[root@node1 ~]# vim /etc/sudoers


改完之后将写权限删除


三台服务器上操作

在/opt下创建目录es,将es的所有权切换给esuser

[esuser@node1 opt]$ sudo mkdir es
[esuser@node1 opt]$ sudo chown -R esuser:esuser es


使用esuser账户将

elasticsearch-2.2.1.tar.gz

elasticsearch-analysis-ik-1.8.1.zip

elasticsearch-head-master.zip

上传到服务器的esuser家目录


解压elasticsearch-2.2.1.tar.gz到/opt

[esuser@node1 ~]$ tar -zxf elasticsearch-2.2.1.tar.gz -C /opt/es

在三台服务器上依次设置:

cluster.name: escluster
node.name: esnode-1
# 让ES在两个地址发布ES服务
network.host: ["localhost", "node2"]
discovery.zen.ping.unicast.hosts: ["node2", "node3", "node4"]
discovery.zen.minimum_master_nodes: 2     过半:N/2+1
cluster.name: escluster
node.name: esnode-3
# 让ES在两个地址发布ES服务
network.host: ["localhost", "node4"]
discovery.zen.ping.unicast.hosts: ["node2", "node3", "node4"]
discovery.zen.minimum_master_nodes: 2

安装插件

head插件

下载地址:

https://github.com/mobz/elasticsearch-head/archive/master.zip

bin/plugin  install  file:///home/esuser/elasticsearch-head-master.zip

es/bin/plugin install https://github.com/mobz/elasticsearch-head/archive/master.zip

github使用的是SSLv2

CENTOS6.5   SSLv1

[esuser@node1 ~]$ /opt/es/elasticsearch-2.2.1/bin/plugin install file:///home/esuser/elasticsearch-head-master.zip

ik中文分词器插件

注意:是esuser用户来操作

下载地址:

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.8.1/elasticsearch-analysis-ik-1.8.1.zip

如果elasticsearch/plugins不存在就创建该目录,然后执行:

unzip  elasticsearch-analysis-ik-1.8.1.zip  -d  /opt/es/elasticsearch-2.2.1/plugins/ik

在三台服务器上同步。

重启ES即可。


在/etc/profile中配置es的bin目录

ES_HOME

PATH

[esuser@node3 ~]$ sudo vim /etc/profile
export ES_HOME=/opt/es/elasticsearch-2.2.1
export PATH=$PATH:$ES_HOME/bin

前台启动

[esuser@node1 ~ ]elasticsearch

后台启动

[esuser@node1 ~ ]elasticsearch -d
[esuser@node1 ~ ]elasticsearch  -d -p mypidfile
kill -9 `cat mypidfile`

访问es:http://node2:9200


访问head插件

http://node2:9200/_plugin/head/

通过单播发现节点



elasticsearch-2.2不支持组播查找其他节点方式。


单播发现(unicast discovery)让ES连接一系列的主机,并试图发现更多关于集群的信息。使用单播时,我们告诉ES集群中其他节点的IP地址以及端口或端口范围。如下配置:

discovery.zen.ping.unicast.hosts:  [“10.0.0.3”, “10.0.0.4:9300”, “10.0.0.5[9300-9400]”]

并非所有的ES集群节点需要出现在单播列表中来发现全部的节点,但是必须为每个节点配置足够的地址,让其认识可用的“口碑传播”节点。例如,如果单播列表中的第一个节点认识7个集群节点中的3个,而单播列表中的第二个节点认识7个节点中的其他4个,那么该节点执行发现操作后就能找到集群中全部7个节点。在发现集群中的部分节点后,ES节点将进行主节点选举。


一旦集群中的节点发现了彼此,会协商谁将成为主节点。

主节点负责管理集群状态,即当前的设置和集群中分片、索引以及节点的状态。

在主节点被选举出来之后,会建立内部的ping机制来确保每个节点在集群中保持活跃和健康,称为错误识别(fault detection)。

所有的节点都有资格成为主节点,除非某个节点的node.master选项设置为false。


当集群中只有一个节点时,该节点先等一段时间,如果没有发现其他任何集群的节点,就将自己选为主节点。


设置主节点的最小数量,可以控制ES在成为健康集群之前,集群中多少个节点有资格成为主节点。

如果节点数量不会随着时间变化,可以将最小数量设置为集群总结点数,一般设置为集群数量的一半+1,也就是N/2+1。通过过半机制防止脑裂。

设置elasticsearch.yml中的

discovery.zen.minimum_master_nodes=N/2+1


可以使用如下的命令确认集群的状态以及哪个是主节点:

$ curl 'localhost:9200/_cluster/state/master_node,nodes?pretty'
{
  "cluster_name" : "escluster-1",
  "master_node" : "1pF4neAtSDWjyn9tsYOfGg",
  "nodes" : {
    "DqjdrX-1QSuVkDOj20xarQ" : {
      "name" : "esnode-1",
      "transport_address" : "192.168.202.101:9300",
      "attributes" : { }
    },
    "nSBWfYeARL6YkBe7er0FZg" : {
      "name" : "esnode-3",
      "transport_address" : "192.168.202.103:9300",
      "attributes" : { }
    },
    "1pF4neAtSDWjyn9tsYOfGg" : {
      "name" : "esnode-2",
      "transport_address" : "192.168.202.102:9300",
      "attributes" : { }
    }
  }
}

错误识别:

主节点ping集群中所有其他的节点,而且每个节点也会ping主节点来确认无需选举。

每个节点每隔discovery.zen.fd.ping_interval(默认是1s)发送一个ping请求,等待discovery.zen.fd.ping_timeout(默认是30s)的时间,并尝试最多discovery.zen.fd.ping_retries(默认3)次,如果ping不通,则宣布节点失联,并在需要的时候进行新的分片路由和主节点选举。


一旦一个节点ping不通,节点连不上,ES做的第一件事是自动地将剩下节点中的副本分片升为主分片,因为索引操作会首先更新主分片。


副本分片变为主分片之后,集群就会变为黄色的状态,表明有副本分片没有分配到某个节点。ES下一步需要创建更多的副本分片来保持索引的高可用。


一旦副本分片重新创建,并用于弥补损失的节点,集群将重回绿色状态,全部的主分片和其副本分片都分配到了某个节点。在这段时间之内由于没有数据丢失,整个集群都可用于搜索和索引。如果有丢失的数据,则集群状态转为红色。可以使用多个副本增强抗风险能力。


每个可以成为master的节点都会保有一个集群状态版本号

每个可以成为master的节点都有一个id

选取集群状态版本号高的作为master,如果版本号都一样,则选取id最小的节点成为主节点master。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。