Elasticsearch 第九篇:集群配置与搭建
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插件,可以看到类似以下的效果图:
从上图就可以看出这个集群的相关信息:
- 集群名称是 logelasticsearch
- 集群总共包含3个节点,分别是 node1、node2、node3
- 索引名称是 logdb
- 索引包含3个分片,如上图红色框所示,分别存放在3个节点上,同时每个分片有2个备份,存储在其他节点上
从上图可以看出,如果节点 node1 挂了,那么节点2完全可以找到全部的数据,因为节点2包含了 0、1、2 这三部分数据,
节点三也可以完全找到这三部分数据,这就是为什么集群可以提高系统的稳定性和高可用性。
当这9部分数据都可用时,集群健康为绿色,当复制分片不可用时,集群出于亚健康状态,为黄色,应该及时排查原因,
当主分片出现问题时,集群为红色,应该引起高度重视。
Elasticsearch 第九篇:集群配置与搭建的更多相关文章
- Elasticsearch分布式搜索集群配置
配置文件位于%ES_HOME%/config/elasticsearch.yml文件中,用Editplus打开它,你便可以进行配置. 所有的配置都可以使用环境变量,例如:node.rack: ${ ...
- Elasticsearch 安装与集群配置
一.软件版本 操作系统:CentOS-6.5-x86_64 ES版本:5.0 主机:192.168.63.246 主机: 192.168.63.242 二.部署环境规划: 1. 需求:jdk版本: ...
- elasticsearch集群配置 (Tobe Continue)
elasticsearch集群配置 (Tobe Continue) 准备 首先需要在每个节点有可以正常启动的单节点elasticsearch elasticsearch集群配置仅需要在elas ...
- ElasticSearch入门 第二篇:集群配置
这是ElasticSearch 2.4 版本系列的第二篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ES2:ElasticSearch 集群配置
ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.yml,其中,elasticsearch.yml 用来配置Elastic ...
- Elastic Stack之ElasticSearch分布式集群yum方式搭建
Elastic Stack之ElasticSearch分布式集群yum方式搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.搜索引擎及Lucene基本概念 1>.什么 ...
- Ubuntu 14.04中Elasticsearch集群配置
Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...
- 大数据系列(1)——Hadoop集群坏境搭建配置
前言 关于时下最热的技术潮流,无疑大数据是首当其中最热的一个技术点,关于大数据的概念和方法论铺天盖地的到处宣扬,但其实很多公司或者技术人员也不能详细的讲解其真正的含义或者就没找到能被落地实施的可行性方 ...
- MySQL Cluster 7.3.5 集群配置参数优化(优化篇)
按照前面的教程:MySQL Cluster 7.3.5 集群配置实例(入门篇),可快速搭建起基础版的MySQL Cluster集群,但是在生成环境中,还是有很多问题的,即配置参数需要优化下, 当前生产 ...
随机推荐
- day1 三位数各个位上的数字和
int main(){ int x = 0; scanf("%d", &x); if (x > 999 || x < 0) { printf("输入错 ...
- vue学习5-js表达式
三目运算符 <!DOCTYPE html> <html lang='en'> <head> <meta charset='UTF-8'> <m ...
- ORA-15081: failed to submit an I/O operation to a disk
Problem: While restoring controlfile to test environment, from filesystem or tape environment after ...
- UVA1619 感觉不错 Feel Good(良好的感觉) 题解
0.题面: 给出正整数n和一个(1 <= n <= 100 000)长度的数列,要求找出一个子区间,使这个子区间的数字和乘上子区间中的最小值最大.输出这个最大值与区间的两个端点. 1.思路 ...
- Android开发-适配器
适配器非常关键,它是连接页面和和数据源之间的桥梁,通过适配器,可以将数据库中的数据显示在页面上. 记账本适配器 记账类型选择适配器 日历选择适配器 还有图标适配器等
- Linux配置Redis集群 和 缓存介绍。
// 一.什么是缓存? mybatis一级缓存和二级缓存 mybatis的一级缓存存在哪? SqlSession,就不会再走数据库 什么情况下一级缓存会失效? 当被更新,删除的时候sqlsession ...
- Sleep_Yield_Join
名称解释 Sleep:意思就是睡眠,当前线程暂停一段时间让给别的线程去运行;Sleep是怎么复活的?由你的睡眠时间而定,等睡眠到规定的时间自动复活. Yield:就是当前线程正在执行的时候停止下来进入 ...
- Java 中的锁原理、锁优化、CAS、AQS 详解!(转)
1.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 2.锁实现的基本原理 2.1.volatile Java编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新, ...
- Cocos2d-JS环境配置教程
最近感觉还有时间,就在CSDN上再写一篇,顺便把一些错误纠正,下面开始正文,这里的Cocos2d-JS是3.0版本.这里环境配置还是有一些坑的,希望可以帮到看博客的你. 一.准备工作 1.安装pyth ...
- Android 实用开源库(不定期更新)
ZXing 极其好用的二维码开源库. GayHub:https://github.com/zxing/zxing MPAndroidChart MPAndroidChart 是 Android 一个强 ...