h2.post_title { background-color: rgba(43, 102, 149, 1); color: rgba(255, 255, 255, 1); font-size: 18px !important; font-weight: bold !important; line-height: 38px !important; padding-left: 10px; border-radius: 4px }

一、Elasticsearch 集群理论基础

我们之所以使用 Elasticsearch,就是希望它能帮助我们存储海量的数据,并且可以很快的将我们需要的数据查找出来,即解决海量数据搜索的问题,其次才是解决海量数据统计的问题。

Elasticsearch 本身的设计就是分布式的,也是高可用性的。Elasticsearch 通过集群,可以将数据分布式存储,虽然一个节点(服务器)的存储空间有限,但是集群就可以增加节点,横向扩展存储空间,同时,集群还能将节点的数据联合进行计算,允许部分节点出现异常但不影响整体的使用,这是 Elasticsearch 高可用性的表现。

有人可能会问,数据分布式存储就可以提高系统的高可用性吗?其实,Elasticsearch 不是简单的将数据分布在若干节点(服务器)上就可以的,这涉及到一些基本概念。当我们建立一个索引时,这个索引将被分成 n 个主分片,每个主分片又各自复制了 m 份,复制的分片简称为副分片,这样一来,主分片、副分片一共 n*(m+1) 个,将主分片、副分片分布在若干节点服务器上,各个服务器节点可以互相访问,互相合作,就构成集群,但是要注意,主分片和它对应的副分片一般不存放在同一节点上,这是因为如果一个分片和它对应的副分片都存放在一起,当这个节点出现问题,其它节点就找不到对应的数据,会造成数据丢失,从而影响Elasticsearch的计算结果,这也不符合集群的理念。

Elasticsearch 搭建集群很简单,每个节点配置一个节点名,各个打算连成集群的节点都配置一样的集群名,然后各个节点可以互相访问,便成为集群。

二、集群配置与搭建

下面以 Windows10 单机为例,建立一个集群,首先按下图建好目录,即是准备3个节点的集群

文件目录 node1、node2、node3 分别存放官方下载的 Elasticsearch 包,如下图

node1 文件夹 config 中的配置文件 elasticsearch.yml  添加以下配置:

#集群名称,保证唯一
cluster.name: logelasticsearch
#节点名称,必须不一样
node.name: node1
#必须为本机的ip地址
network.host: 0.0.0.0
http.host: 0.0.0.0
#服务端口号,在同一机器下必须不一样
http.port: 9210
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9310
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9310","0.0.0.0:9311","0.0.0.0:9312"]
#设置主节点
cluster.initial_master_nodes: node1
http.cors.enabled: true
http.cors.allow-origin: "*"

node2 文件夹 config 中的配置文件 elasticsearch.yml  添加以下配置:

#集群名称,保证唯一
cluster.name: logelasticsearch
#节点名称,必须不一样
node.name: node2
#必须为本机的ip地址
network.host: 0.0.0.0
http.host: 0.0.0.0
#服务端口号,在同一机器下必须不一样
http.port: 9211
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9311
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9310","0.0.0.0:9311","0.0.0.0:9312"]
#设置主节点
cluster.initial_master_nodes: node1
http.cors.enabled: true
http.cors.allow-origin: "*"

node3 文件夹 config 中的配置文件 elasticsearch.yml  添加以下配置:

#集群名称,保证唯一
cluster.name: logelasticsearch
#节点名称,必须不一样
node.name: node3
#必须为本机的ip地址
network.host: 0.0.0.0
http.host: 0.0.0.0
#服务端口号,在同一机器下必须不一样
http.port: 9212
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9312
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9310","0.0.0.0:9311","0.0.0.0:9312"]
#设置主节点
cluster.initial_master_nodes: node1
http.cors.enabled: true
http.cors.allow-origin: "*"

注意:上面的配置中,各个节点的名称不一样,但是集群名称都是 logelasticsearch,这样3个节点的集群配置完成。

打开 powershell  启动第一个节点:

cd  E:\es-cluster\node1\bin

./elasticsearch.bat

访问    http://localhost:9210/

再用同样的方式启动第二个节点、第三个节点,分别访问 http://localhost:9211/   、  http://localhost:9212/

启动head插件:

cd  D:\ES\elasticsearch-head-master

npm start

访问  http://localhost:9100/

这时候,集群搭建完成,可以在head插件上看一下效果。

三、建立索引

上面已经建立好一个3个节点的集群,现在建立一个索引,指定分片数是 3,每个分片复制 2份,建立语句如下:

PUT   http://localhost:9210/logdb
{
"mappings": {
"properties": {
"ID": {
"type": "integer"
},
"Url": {
"type": "text",
"analyzer":"ik_max_word"
},
"Title": {
"type": "text",
"analyzer":"ik_max_word"
}
}
},
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}

打开head插件,可以看到类似以下的效果图:

从上图就可以看出这个集群的相关信息:

    1. 集群名称是 logelasticsearch
    2. 集群总共包含3个节点,分别是 node1、node2、node3
    3. 索引名称是 logdb
    4. 索引包含3个分片,如上图红色框所示,分别存放在3个节点上,同时每个分片有2个备份,存储在其他节点上

从上图可以看出,如果节点 node1 挂了,那么节点2完全可以找到全部的数据,因为节点2包含了 0、1、2 这三部分数据,

节点三也可以完全找到这三部分数据,这就是为什么集群可以提高系统的稳定性和高可用性。

当这9部分数据都可用时,集群健康为绿色,当复制分片不可用时,集群出于亚健康状态,为黄色,应该及时排查原因,

当主分片出现问题时,集群为红色,应该引起高度重视。

Elasticsearch 第九篇:集群配置与搭建的更多相关文章

  1. Elasticsearch分布式搜索集群配置

    配置文件位于%ES_HOME%/config/elasticsearch.yml文件中,用Editplus打开它,你便可以进行配置.   所有的配置都可以使用环境变量,例如:node.rack: ${ ...

  2. Elasticsearch 安装与集群配置

    一.软件版本 操作系统:CentOS-6.5-x86_64 ES版本:5.0 主机:192.168.63.246 主机: 192.168.63.242 二.部署环境规划:   1. 需求:jdk版本: ...

  3. elasticsearch集群配置 (Tobe Continue)

    elasticsearch集群配置 (Tobe Continue)   准备 首先需要在每个节点有可以正常启动的单节点elasticsearch   elasticsearch集群配置仅需要在elas ...

  4. ElasticSearch入门 第二篇:集群配置

    这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  5. ES2:ElasticSearch 集群配置

    ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 用来配置Elastic ...

  6. Elastic Stack之ElasticSearch分布式集群yum方式搭建

    Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...

  7. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  8. 大数据系列(1)——Hadoop集群坏境搭建配置

    前言 关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方 ...

  9. MySQL Cluster 7.3.5 集群配置参数优化(优化篇)

    按照前面的教程:MySQL Cluster 7.3.5 集群配置实例(入门篇),可快速搭建起基础版的MySQL Cluster集群,但是在生成环境中,还是有很多问题的,即配置参数需要优化下, 当前生产 ...

随机推荐

  1. 使用Rainbond打包业务模块,实现业务积木式拼装

    背景 每个程序员在学习开发的过程中,都知道解耦和模块化的重要性,也希望自己设计和开发的程序支持模块化,开发好的模块其他人就能快速复用,为了达成这个效果,我们学习各种模块化和解耦的技术,从面向对象的设计 ...

  2. 1013day-人口普查系统

    1.shuchu.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  3. Collection的使用

    常用方法 Modifier and Type Method and Description boolean add(E e) 确保此集合包含指定的元素(可选操作). boolean addAll(Co ...

  4. TeXstudio在右边显示预览

    打开预览界面后: 点击查看(View) 选择最后一个:窗口/内嵌(Windowed/Embedded) 就可以了

  5. 安装python3.6,设为默认,yum不能用

    安装python3.6 1.安装依赖包 yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-r ...

  6. [luogu P1312]Mayan游戏

    其实就是一道锻炼码力的简单题-- 看到题目中的\(0<x\leqslant 5\)也就知道是爆搜了吧( 我们仿照写游戏的方法多写几个函数,能够有效降低错误率(确信 我们写出大致的搜索流程来: 如 ...

  7. Elasticsearch(2) 数据搜索

    本文介绍如何在Elasticsearch中对数据进行搜索. 1.简述 在Elasticsearch中的搜索中,有两类搜索: queries aggregations 区别在于:query可以进行全文搜 ...

  8. Luogu P1438无聊的数列

    洛谷 P1438无聊的数列 题目链接 点这里! 题目描述 维护一个数列\(a_i\),支持两种操作: 给出一个长度等于 \(r-l+1\)的等差数列,首项为\(k\) 公差为\(d\) 并将它对应加到 ...

  9. 使用Xamarin开发移动应用示例——数独游戏(八)使用MVVM实现完成游戏列表页面

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们已经完成了游戏的大部分功能,玩家可以玩预制的数独游戏,也可以自己添加 ...

  10. Net6 DI源码分析Part5 在Kestrel内Di Scope生命周期是如何根据请求走的?

    Net6 DI源码分析Part5 在Kestrel内Di Scope生命周期是如何根据请求走的? 在asp.net core中的DI生命周期有一个Scoped是根据请求走的,也就是说在处理一次请求时, ...