网站首页 > 技术文章 正文
背景
elasticsearch作为搜索引擎,单机环境下,一旦服务器宕机或者被黑客攻击,那么我们的索引存储业务以及查询业务就会不可用,那妥妥的就是生产事故了。为了不发生这样悲伤的故事,我们就需要提高elasticsearch环境的高可用性。两个字,"集群"。下面跟着小编一起来搭建elasticsearch的集群环境吧。
原理
elasticsearch中是以一个个索引来进行存储数据的,一个索引相当于一个数据库,创建索引的时候,会对索引进行分片设置。索引存储的时候并不是整个存在一起的,而是被分片进行存储的,默认会分成5个分片(可以自定义分片数据量)。集群环境下,分片会根据算法尽可能的平均分配在各个节点,这样就相当于一份数据被分成了多份并保存在了不同的服务器上。并且在elasticsearch中还有一个副本的概念,即在一台服务器上生成了一个分片,称为原始分片,elasticsearch默认会生成一份副本,这时我们只需要将某个分片的副本存在另外一台主机上,这样当某台主机宕机了,我们依然还可以从另外一台主机的副本中找到对应的数据。所以从外部来看,数据结果是没有任何区别的。
集群安装
安装多个elasticsearch
上篇文章我们详细分享了elasticsearch单机安装的步骤,不清楚怎么安装的,可以先看:
【扫盲】elasticsearch(一)— 安装篇
如果是自己练习,可以在一台服务器上使用不同的端口,安装多个elasticsearch;
如果是生产环境,建议是安装在多个服务器上,这样提高容错率,从而提高高可用性。因为一台服务器的话,分片和副本其实是没意义的,一台主机挂掉了,就全挂掉了。
修改配置
elasticsearch-6.6.2/config/elasticsearch.yml
主节点配置文件:
cluster.name: my-es
node.name: node0
node.master: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0 .1:9302"] discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
工作节点配置文件:
cluster.name: my-es
node.name: node1
node.master: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0 .1:9302"] discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: my-es
node.name: node2
node.master: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9302
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0 .1:9302"] discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
可能会遇到的问题
[node0] failed to send join request to master
解决方法: 将报错节点elasticsearch-6.6.2/data文件下的文件清空
启动集群
分别将三个节点都启动:
bin/elasticsearch -d
集群健康检查
http://集群地址:9200/_cat/health?v
(green:正常;yellow:异常;red:错误)
如需获取源码,请关注后,私信发送"源码"给小编,非常感谢
猜你喜欢
- 2024-10-21 数据库同步 Elasticsearch 后数据不一致,怎么办
- 2024-10-21 (建议收藏)小白视角总结分布式搜索组件elasticsearch《二》
- 2024-10-21 RabbitMQ消息服务用户手册(rabbitmq消息id)
- 2024-10-21 索引生命周期管理ILM看完不懂你锤我
- 2024-10-21 Elasticsearch技术问答系列-NO3(elasticsearch curator)
- 2024-10-21 从裸机到700亿参数大模型,这里有份教程,还有现成可用的脚本
- 2024-10-21 「一文搞懂」Nacos健康检查机制(nacos修改健康检查模式)
- 2024-10-21 「ceph-deploy」CentOS7部署Ceph-nautilus 14.2.18版本集群学习
- 2024-10-21 Kibana 最常见的“启动报错”的故障原因及解决方案汇总
- 2024-10-21 二进制部署Kubernetes V1.18.X(etcd集群篇)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)