Elasticsearch6.2集群搭建
Elasticsearch6.2集群搭建
原文地址,转载请注明出处:https://blog.csdn.net/qq_34021712/article/details/79330028 ©王赛超
服务器 | 是否可以成为主节点 | 是否为数据节点 |
192.168.8.101 | true | true |
192.168.8.103 | true | true |
192.168.8.104 | true | true |
搭建过程
前提是安装java环境,ELK6.2版本需要jdk为1.8,官方推荐安装OracleJDK 最好不要安装OpenJDK.安装jdk参考:linux安装jdk 只需要将安装包换成1.8的就行。
Elasticsearch安装
①解压文件
tar -zxvf elasticsearch-6.2.1.tar.gz
②重命名
mv elasticsearch-6.2.1 /usr/local/elk/elasticsearch
③创建数据存放路径(应将设置配置为在Elasticsearch主目录之外定位数据目录,以便在不删除数据的情况下删除主目录!)
mkdir /usr/local/elk/elasticsearch/data
④创建日志存放路径(已存在不用创建)
mkdir /usr/local/elk/elasticsearch/logs
⑤建立用户并授权(es不能用root运行)
- #添加用户
- useradd es
- #赋予文件夹权限
- chown -R es:es /usr/local/elk/elasticsearch
⑥修改elasticsearch配置文件
vim /usr/local/elk/elasticsearch/config/elasticsearch.yml 将配置文件以下内容进行修改:
- #集群的名称
- cluster.name: es6.2
- #节点名称,其余两个节点分别为node-2 和node-3
- node.name: node-1
- #指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
- node.master: true
- #允许该节点存储数据(默认开启)
- node.data: true
- #索引数据的存储路径
- path.data: /usr/local/elk/elasticsearch/data
- #日志文件的存储路径
- path.logs: /usr/local/elk/elasticsearch/logs
- #设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
- bootstrap.memory_lock: true
- #绑定的ip地址
- network.host: 0.0.0.0
- #设置对外服务的http端口,默认为9200
- http.port: 9200
- # 设置节点间交互的tcp端口,默认是9300
- transport.tcp.port: 9300
- #Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
- #这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
- #(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
- #请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
- discovery.zen.ping.unicast.hosts: ["192.168.8.101:9300", "192.168.8.103:9300", "192.168.8.104:9300"]
- #如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
- discovery.zen.minimum_master_nodes: 3
修改完之后使用命令查看具体修改了哪些值
grep '^[a-z]' /usr/local/elk/elasticsearch/config/elasticsearch.yml
⑦调整jvm内存
- vim /usr/local/elk/elasticsearch/config/jvm.options
- #默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50%
- -Xms1g
- -Xmx1g
注意:请使用es用户启动 su - es
/usr/local/elk/elasticsearch/bin/elasticsearch -d
使用ps -ef|grep elasticsearc查看进程是否启动,发现并没有启动,什么原因呢?查看一下日志在我们配置的日志路径下:
第一个坑:日志文件会以集群名称命名,查看es6.2.log文件,日志报以下异常:
- [2018-02-14T23:40:16,908][ERROR][o.e.b.Bootstrap ] [node-1] node validation exception
- [3] bootstrap checks failed
- [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
- [2]: memory locking requested for elasticsearch process but memory is not locked
- [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- [2018-02-14T23:40:16,910][INFO ][o.e.n.Node ] [node-1] stopping ...
- [2018-02-14T23:40:17,016][INFO ][o.e.n.Node ] [node-1] stopped
- [2018-02-14T23:40:17,016][INFO ][o.e.n.Node ] [node-1] closing ...
- [2018-02-14T23:40:17,032][INFO ][o.e.n.Node ] [node-1] closed
解决方法:
切回root用户su - root,修改配置
- * soft nofile 65536
- * hard nofile 65536
- * soft nproc 2048
- * hard nproc 4096
- #我选择锁住swapping因此需要在这个配置文件下再增加两行代码
- es soft memlock unlimited
- es hard memlock unlimited
以上参数介绍参考:https://my.oschina.net/987openlab/blog/94634
② vim /etc/sysctl.conf
- vm.max_map_count=655360
- fs.file-max=655360
注意:之后需要执行一句命令sysctl -p使系统配置生效(使用root用户)。
再次重启三台Elasticsearch
但是我们发现,3个节点都正常started了,但是就是无法形成集群,使用Elasticsearch Head插件缺发现没有连接上集群,
第二个坑:查看日志报以下错误:
- [2018-02-15T21:15:06,352][INFO ][rest.suppressed ] /_cat/health Params: {h=node.total}
- MasterNotDiscoveredException[waited for [30s]]
- at org.elasticsearch.action.support.master.TransportMasterNodeAction$4.onTimeout(TransportMasterNodeAction.java:160)
- at org.elasticsearch.cluster.ClusterStateObserver$ObserverClusterStateListener.onTimeout(ClusterStateObserver.java:239)
- at org.elasticsearch.cluster.service.InternalClusterService$NotifyTimeout.run(InternalClusterService.java:630)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
- at java.lang.Thread.run(Thread.java:745)
原因:将discovery.zen.minimum_master_nodes的值设置为了3,总共3个节点,都充当主节点是不行的,将discovery.zen.minimum_master_nodes将这个配置改为2。
关于discovery.zen.minimum_master_nodes参数介绍,参考:
再次启动
[2018-02-15T21:53:58,084][INFO ][o.e.d.z.ZenDiscovery ] [node-3] failed to send join request to master [{node-1}{SVrW6URqRsi3SShc1PBJkQ}{y2eFQNQ_TRenpAPyv-EnVg}{192.168.8.101}{192.168.8.101:9300}], reason [RemoteTransportException[[node-1][192.168.8.101:9300][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {node-3}{SVrW6URqRsi3SShc1PBJkQ}{uqoktM6XTgOnhh5r27L5Xg}{192.168.8.104}{192.168.8.104:9300}, found existing node {node-1}{SVrW6URqRsi3SShc1PBJkQ}{y2eFQNQ_TRenpAPyv-EnVg}{192.168.8.101}{192.168.8.101:9300} with the same id but is a different node instance]; ]
原因:可能是之前启动的时候报错,并没有启动成功,但是data文件中生成了其他节点的数据。将三个节点的data目录清空
Elasticsearch6.2集群搭建的更多相关文章
- Elasticsearch6.2集群搭建, centos7
原文地址,转载请注明出处:https://blog.csdn.net/qq_34021712/article/details/79330028 ©王赛超 环境介绍 服务器 是否可以成为主节点 是否 ...
- Elasticsearch集群搭建及使用Java客户端对数据存储和查询
本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计. 一.Elastic集群搭建 1. 环境准备. 该集群环境基于VMware虚拟机.CentOS ...
- ElasticStack之Elasticsearch集群搭建
需搭建服务器环境 操作系统 Host:port node 1 CentOS 7.2.1511 11.1.11.127:9200 node1 2 CentOS 7.2.1511 11.1.11.128: ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 【Data Cluster】真机环境下MySQL数据库集群搭建
真机环境下MySQL-Cluster搭建文档 摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...
- (四)Spark集群搭建-Java&Python版Spark
Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...
- (三)Spark-Hadoop集群搭建-Java&Python版Spark
Spark-Hadoop集群搭建 视频教程: 1.优酷 2.YouTube 配置java 启动ftp [root@master ~]# /etc/init.d/vsftpd restart 关闭 vs ...
- Mosquitto搭建Android推送服务(三)Mosquitto集群搭建
文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简 ...
随机推荐
- 【[HEOI2016/TJOI2016]序列】
压行真漂亮 首先这肯定是一个\(dp\)了 设\(dp_i\)表示\(i\)结尾的最长不下降子序列的长度 显然我们要找一个\(j\)来转移 也就是\(dp_i=max(dp_j+1)\) 那么什么样的 ...
- python中的类(二)
python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...
- Odoo中的模型
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9280164.html [Odoo中,一切皆模型,连视图都是模型.Odoo将各种数据,如:权限数据 ...
- 4、Android-数据存储方案(SQLite数据库存储)
4.4.SQLite数据库存储 这是Android内置的数据库 是一款轻量级的关系型数据库 运算速度非常快.占用资源少.通常只需要几百kb的内存就够了 因而特别适合在移动端设备上使用 SQLite不仅 ...
- [SQL注入] 逗号拦截绕过
在SQL注入时,在确定了注入点后,一般都需要使用联合查询猜表的列数,也就是常见的order by n,n从大到小,直到返回正常,就确定了当前查询的列的个数. 然后再使用 UNION SELECT 1, ...
- 如何将pip更新到最新版
通过该命令即可达到目的:python -m pip install --upgrade pip pip在Python中是非常常用的,就像node.js里面的npm一样.两者共同的作用是包的管理工具.
- 测试用例组合--PICT
测试用例组合 一原理 1.配对组合原理(两两组合原理),应用工具PICT自动输出组合 name=a,b value=1,2 key=m,n 如果自己组合那么有2*2*2=8条用例 a1m a2m a1 ...
- rocketmq双主发送消息 SLAVE_NOT_AVAILABLE 状态
RocketMQ最佳实践之Producer 投递状态 发送消息时,将得到包含SendStatus的SendResult.首先,我们假设消息的isWaitStoreMsgOK = true(默认是tru ...
- MAX7456和DP7456的对比
DP7456 是一款集成了 EEPROM 的单通道.单色随屏显示发生器,集成了视频驱动器.同步分离器.视频分离开关以及 EEPROM,提高了系统的集成度,有效降低了系统成本. DP7456 采用符合 ...
- Jmeter测试实例
说明:测试某系统登陆功能,登陆中的验证码已被屏蔽,辅助工具Firebug. 1.打开被测系统准备好firebug,准备抓包登陆操作: