Elasticsearch6.2集群搭建, centos7
原文地址,转载请注明出处: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集群搭建, centos7的更多相关文章
- Elasticsearch6.2集群搭建
Elasticsearch6.2集群搭建 2018年04月02日 11:07:45 这个名字想了很久 阅读数:14154 版权声明:本博客为学习.笔记之用,以笔记形式记录学习的知识与感悟.学习过 ...
- Centos7下Etcd集群搭建
一.简介 "A highly-available key value store for shared configuration and service discovery." ...
- centos7下Etcd3集群搭建
一.环境介绍 etcd主要功能是分布式的存储键值,优点不多说了,分布是集群,自动选举等等,自行百度,主要说下配置方法,折腾了几天,终于优点眉目了,记录下操作方法,本文参考了如下链接 https://w ...
- [Kubernetes]CentOS7下Etcd集群搭建
Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...
- Spark项目之电商用户行为分析大数据平台之(二)CentOS7集群搭建
一.CentOS7集群搭建 1.1 准备3台centos7的虚拟机 IP及主机名规划如下: 192.168.123.110 spark1192.168.123.111 spark2192.168.12 ...
- Redis(二)CentOS7安装Redis4.0.10与集群搭建
一 Redis单机安装 1 Redis下载安装 1.1 检查依赖环境(Redis是C语言开发,编译依赖gcc环境) [root@node21 redis-]$ gcc -v -bash: gcc: c ...
- CentOS7/RHEL7 pacemaker+corosync高可用集群搭建
TOC \o "1-3" \h \z \u 一.集群信息... PAGEREF _Toc502099174 \h 4 08D0C9EA79F9BACE118C8200AA004B ...
- 初试 Centos7 上 Ceph 存储集群搭建
转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...
- Linux centos7 zookeeper集群搭建
Zookeeper集群搭建 描述:本章节主要单服务器搭建集群,在一个服务器上启动多个不同端口的zookeeper服务,非真实环境. 真实环境下zookeeper集群会搭建在多个物理服务器上,并非单一的 ...
随机推荐
- HNOI2015菜肴制作
一开始,没想出来,先topsort判环,把impossible拿到手,然后划分联通块,对每个联通块跑一遍topsort,觉得可对了,然后被大样例教育明白了,知道自己的策略错在哪了. 接着在纸上疯狂手模 ...
- python中的定时器threading.Timer
由浅入深学SQL Server 2012 --> python开发中用到,定时操作.例如每隔1s执行一次,发现 threading.Timer,这个东西,可以直接用. 其原理为执行函数中置定时 ...
- 邻居子系统输出 之 neigh_output、neigh_hh_output
概述 ip层在构造好ip头,检查完分片之后,会调用邻居子系统的输出函数neigh_output进行输出,输出分为有二层头缓存和没有两种情况,有缓存时调用neigh_hh_output进行快速输出,没有 ...
- CentOS6.5 64位下装Docker
试装,仅仅是做个记录. [root@localhost ~]# sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' > ; > [do ...
- 自然语言20.1 WordNet介绍和使用
https://study.163.com/provider/400000000398149/index.htm?share=2&shareId=400000000398149(欢迎关注博主 ...
- 关于排查python内存泄露的简单总结
这次的内存泄露问题是发生在多线程场景下的. 各种工具都试过了,gc,objgraph, pdb,pympler等,仍然没有找到问题所在. pdb感觉用起来很方便,可以调试代码,对原来的代码无侵入性. ...
- pandas之时间序列(data_range)、重采样(resample)、重组时间序列(PeriodIndex)
1.data_range生成时间范围 a) pd.date_range(start=None, end=None, periods=None, freq='D') start和end以及freq配合能 ...
- SQL学习(五)多表关联-join
在实际工作中会用到多表联查,此时需要用到关键字JOIN 一.inner join(内连接) 至少有一个匹配时返回行,只返回两个表中连接字段相等的行 如: select * from ticket in ...
- Jmeter之集合点
Jmeter之集合点 Jmeter中也有集合点,看样子还是很强呀 哇哈哈 它只是通过计时器Synchronizing Timer实现的假集合点功能. 没有时间整理,来实际的,直接上图. 在线程下添加集 ...
- LoadRunner脚本编写之三(事务函数)
LoadRunner脚本编写之三(事务函数) 关于脚本的这块,前两篇都在讲C语言,其实,要整理点实用的东西挺难,在应用中多对录制的脚本分析,但对于新手学脚本确实无从下手. 先贴一个脚本: 完整代码: ...