Elasticsearch(二)---搭建

news2024/12/23 23:14:46

搭建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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1153134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

halcon canny 和opencv c++ canny 实现对比

Opencv和C实现canny边缘检测_opencv边缘增强-CSDN博客 一、canny实现步骤 1、图像必须是单通道的,也就是说必须是灰度图像 2、图像进行高斯滤波,去掉噪点 3、sobel 算子过程的实现,计算x y方向 、梯度(用不到,但是…

如何选购适合自己的内衣洗衣机?性价比高内衣洗衣机推荐

内衣洗衣机,在几年前或许是个新事物,但近两年却是成为了很普遍的家电产品,由于近几年内衣洗衣机需求量的增加,我们在商场的电子产品区都能见到它,就像普通的家庭洗衣机那样,直接摆在展台上销售,…

分布式:一文掌握分布式ID生成方案

目录 背景1、UUID2、数据库自增ID2.1、主键表2.2、ID自增步长设置 3、号段模式4、Redis INCR5、雪花算法6、美团(Leaf)7、百度(Uidgenerator)8、滴滴(TinyID)总结比较 背景 在复杂的分布式系统中,往往需要对大量的数据进行唯一标识,比如在对一个订单表进…

从零开始的目标检测和关键点检测(一):用labelme标注数据集

从零开始的目标检测和关键点检测(一):用labelme标注数据集 1、可视化标注结果2、划分数据集3、Lableme2COCO,将json文件转换为MS COCO格式 前言:前段时间用到了mmlab的mmdetction和mmpose,因此以一个小的数…

python练习(猜数字,99乘法表)

python练习(猜数字&#xff0c;99乘法表) 猜数字 import random num1random.choice(range(1,101))for i in range(11):num2input("plz input a number:")num2int(num2)if num1<num2:print("太大了&#xff0c;小一点")elif num1>num2:print("…

【每日一题】2003. 每棵子树内缺失的最小基因值-2023.10.31

题目&#xff1a; 2003. 每棵子树内缺失的最小基因值 有一棵根节点为 0 的 家族树 &#xff0c;总共包含 n 个节点&#xff0c;节点编号为 0 到 n - 1 。给你一个下标从 0 开始的整数数组 parents &#xff0c;其中 parents[i] 是节点 i 的父节点。由于节点 0 是 根 &#xf…

可视化 | 数据可视化降维算法梳理

文章目录 &#x1f4da;数据描述&#x1f407;iris&#x1f407;MNIST &#x1f4da;PCA&#x1f407;算法流程&#x1f407;图像描述 &#x1f4da;Kernel-PCA&#x1f407;算法流程&#x1f407;图像描述 &#x1f4da;MDS&#x1f407;算法流程&#x1f407;图像描述 &#…

从初级测试工程师到测试专家,你的晋升路线是什么?

最近&#xff0c;我们讨论了软件测试工程的的分级&#xff0c;大家都贡献了自己的想法。 对于大家来说&#xff0c;软件测试人的分级其实也代表了我们的进阶方向&#xff0c;职业发展。总体来说&#xff0c;测试工程师未来发展有三个方向&#xff1a; 技术精英 行业专家 管理…

【Proteus仿真】【Arduino单片机】SG90舵机控制

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用SG90舵机等。 主要功能&#xff1a; 系统运行后&#xff0c;舵机开始运行。 二、软件设计 /* 作者&#xff1a;嗨小易&#xff08;QQ&#x…

pytorch复现3_GoogLenet

背景&#xff1a; GoogLeNeta是2014年提出的一种全新的深度学习结构&#xff0c;在这之前的AlexNet、VGG等结构都是通过增大网络的深度(层数)来获得更好的训练效果&#xff0c;但层数的增加会带来很多负作用&#xff0c;比如overfit、梯度消失、梯度爆炸等。GoogLeNet通过引入i…

代码精简10倍,责任链模式yyds

1 推荐看的文章1 责任链设计——责任链验证推翻 if-else 炼狱 2 推荐看的文章2 代码精简10倍&#xff0c;责任链模式yyds

引入了mybatis-spring-boot-starter,还需要引入mysql-connector-java吗?

spring boot集成mybatis&#xff0c;是需要引入mybatis-spring-boot-starter&#xff0c;有文章说不需要引入mysql-connector-java&#xff0c;但实际用下来并不行&#xff0c;我看了里面的pom文件&#xff0c;终于知道怎么一回事。 <!--引入mybatis的依赖--><depende…

HTTP协议说明

1.用于HTTP协议交互的信息被称为HTTP报文。请求端&#xff08;客户端&#xff09;的HTTP报文叫做请求报文&#xff0c;响应端&#xff08;服务器端&#xff09;的叫做响应报文。HTTP 报文本身是由多行&#xff08;用 CRLF 作换行符&#xff09;数据构成的字符串文本。 HTTP报文…

[Linux C] signal 的使用

前言&#xff1a; signal 是一种通信机制&#xff0c;可以跨进程发送&#xff0c;可以同进程跨线程发送&#xff0c;可以不同进程向指定线程发送。 信号的创建有两套api&#xff0c;一个是signal&#xff0c;一个是sigaction&#xff0c;signal缺陷很多&#xff0c;比如没有提…

亚马逊美国站衣物收纳商品合规标准是什么?如何办理?

随着秋季的来临&#xff0c;不少人翻箱倒柜地寻找换季用品。相信现在很多人都和小编一样&#xff0c;出门时打算找个外套穿上&#xff0c;但想到要去柜子里翻半天&#xff0c;就立刻打消了想要出门的念头。 但当翻箱倒柜地找到了换季用品&#xff0c;却又要一件一件地把翻出来…

Variations-of-SFANet-for-Crowd-Counting可视化代码

前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理&#xff0c;链接如下&#xff1a;Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…

spring解决后端显示时区的问题

spring解决后端显示时区的问题 出现的问题&#xff1a; 数据库中的数据&#xff1a; 解决方法 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: Asia/Shanghai

vscode前端必备插件

安装插件的位置如下&#xff1a; 1、Chinese (Simplified) Language Pack 中文简体插件 2、Vetur Vue官方钦定插件&#xff0c;包括&#xff1a;语法高亮&#xff0c;智能提示&#xff0c;错误提示&#xff0c;格式化&#xff0c;自动补全等等 3、ESLint 语法检查工具&#…

客户端性能测试基础知识

目录 1、客户端性能 1.1、客户端性能基础知识 2、客户端性能工具介绍与环境搭建 2.1.1、perfdog的使用 2.1.2、renderdoc的使用 1、客户端性能 1.1、客户端性能基础知识 客户端性能知识这里对2D和3D类游戏进行展开进行&#xff0c;讲述的有内存、CPU、GPU、帧率这几个模块…

云栖大会十五年:开放创新,未来愿景

时光荏苒&#xff0c;转眼间云栖大会已经走过了十五个年头&#xff0c;这一场中国云计算行业的盛会已经成为业内不可或缺的一部分。在这个特殊的时刻&#xff0c;我想分享一些对未来云栖大会的期待与建议&#xff0c;希望这个盛会能够继续推动云计算领域的创新和发展。 云栖大会…