写在前边

昨天晚上就已经完成这篇博客了,就是在测试这块是否正常跑起来,晚上没搞完,上班前把电脑关机带着,结果没保存!基本上昨天写的东西都丢了,好在博客园的图片url还在。

为了让大家都轻松些,我轻松写,你轻松看。打算把文章的篇幅缩小,拆分成多个部分,这样更新频率会提高,写起来看起来也不会那么累,也不会再出现一次性丢那么多稿的问题……

本文记述Elasticsearch集群部分,下边会有说明具体的结构

部署架构

整体图

本文部分结构图

node 1~3为集群的数据节点,同时竞争master,tribe-node为部落节点,负责Logstash与Kibana的连接

好处是无需指明master节点,不用多启动一个只负责协调的节点,减少资源浪费。

环境准备

  • GNU/Debian Stretch 9.9 linux-4.19
  • elasticsearch-7.1.1-linux-x86_64.tar.gz

本文为了模拟,使用Docker的centos7,文中不会出现Docker操作部分,与正常主机无异

开始搭建

1.root权限编辑/etc/security/limits.conf sudo vim /etc/security/limits.conf

添加如下内容:

  1. * soft memlock unlimited
  2. * hard memlock unlimited

其中*可替换为启动es的linux用户名

保存退出. 生效需要重启

2.[可选] 禁用swap分区 # echo "vm.swappiness=1" >> /etc/sysctl.conf,配置性能大大提高

3.重启系统

不重启有些配置无法生效,启动es后报错依旧

4.为各主机添加用户和组

  1. sudo groupadd elasticsearch #添加elasticsearch组
  2. sudo usermod -aG elasticsearch 用户名 #添加elasticsearch用户

5.解压elasticsearch-7.1.1-linux-x86_64.tar.gz ,复制到各主机/home/elasticsearch

6.分别为每个主机的/home/elasticsearch/elasticsearch-7.1.1/config/elasticsearch.yml内容最后追加配置

es-node-1

  1. # ======================== Elasticsearch Configuration =========================
  2. cluster.name: es-cluster
  3. node.name: node-1
  4. node.attr.rack: r1
  5. bootstrap.memory_lock: true
  6. http.port: 9200
  7. network.host: 172.17.0.2
  8. transport.tcp.port: 9300
  9. discovery.seed_hosts: ["172.17.0.3:9300","172.17.0.4:9300","172.17.0.5:9300"]
  10. cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
  11. gateway.recover_after_nodes: 2

es-node-2

  1. # ======================== Elasticsearch Configuration =========================
  2. cluster.name: es-cluster
  3. node.name: node-2
  4. node.attr.rack: r1
  5. bootstrap.memory_lock: true
  6. http.port: 9200
  7. network.host: 172.17.0.3
  8. transport.tcp.port: 9300
  9. discovery.seed_hosts: ["172.17.0.2:9300","172.17.0.4:9300","172.17.0.5:9300"]
  10. cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
  11. gateway.recover_after_nodes: 2

es-node-3

  1. # ======================== Elasticsearch Configuration =========================
  2. cluster.name: es-cluster
  3. node.name: node-3
  4. node.attr.rack: r1
  5. bootstrap.memory_lock: true
  6. http.port: 9200
  7. network.host: 172.17.0.4
  8. transport.tcp.port: 9300
  9. discovery.seed_hosts: ["172.17.0.3:9300","172.17.0.2:9300","172.17.0.5:9300"]
  10. cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
  11. gateway.recover_after_nodes: 2

es-tribe-node

  1. # ======================== Elasticsearch Configuration =========================
  2. cluster.name: es-cluster
  3. node.name: tribe-node
  4. node.master: false
  5. node.data: false
  6. node.attr.rack: r1
  7. bootstrap.memory_lock: true
  8. http.port: 9200
  9. network.host: 172.17.0.5
  10. transport.tcp.port: 9300
  11. discovery.seed_hosts: ["172.17.0.3:9300","172.17.0.4:9300","172.17.0.2:9300"]
  12. cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
  13. gateway.recover_after_nodes: 2

各参数说明放到文末,请自行参考

7.使用命令启动各节点ES_JAVA_OPTS="-Xms512m -Xmx512m" bin/elasticsearch

注意:

  • 这里只能用非root用户,即文章最开始部分的创建的账号
  • 本命令相对es的解压目录的路径
  • JVM参数堆大小可自行调节

查看效果

这里使用浏览器查看

此图中的tribe-node节点不是mdi,是我之前忘加node.data: false的图,现在是i

可以看出node-3是master节点,最近发现了个好用的elasticsearch查看工具cerebro

使用cerebro查看 cerebro github

图片看不清可以右键新标签页打开看大图

点nodes,查看各节点状态

还可以通过more来修改集群设置,功能好强大

elasticsearch.yml参数配置的解释

  1. cluster.name: es-cluster #指定es集群名
  2. node.name: xxxx #指定当前es节点名
  3. node.data: false #非数据节点
  4. node.master: false #非master节点
  5. node.attr.rack: r1 #自定义的属性,这是官方文档中自带的
  6. bootstrap.memory_lock: true #开启启动es时锁定内存
  7. network.host: 172.17.0.5 #当前节点的ip地址
  8. http.port: 9200 #设置当前节点占用的端口号,默认9200
  9. discovery.seed_hosts: ["172.17.0.3:9300","172.17.0.4:9300","172.17.0.2:9300"] #启动当前es节点时会去这个ip列表中去发现其他节点,此处不需配置自己节点的ip,这里支持ip和ip:port形式,不加端口号默认使用ip:9300去发现节点
  10. cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] #可作为master节点初始的节点名称,tribe-node不在此列
  11. gateway.recover_after_nodes: 2 #设置集群中N个节点启动时进行数据恢复,默认为1。可选
  12. path.data: /path/to/path #数据保存目录
  13. path.logs: /path/to/path #日志保存目录
  14. transport.tcp.port: 9300 #设置集群节点发现的端口

这里的discovery.seed_hosts在之前几个版本中叫 discovery.zen.ping.unicast.hosts

配置我发现个比较全的,只是有些现在已经不用了,还是很有借鉴价值, elasticsearch配置文件详解

遗留问题

  1. 最后就是本次测试的时候,没有考虑脑裂问题,如有需要请自行添加修改,比如用tribe-node当master,不存数据;又比如加一个node.master: true的节点,修改cluster.initial_master_nodes只有这一个master节点
  2. 文中为了简单,没有的把数据存储目录挂载出去,生产环境请勿必挂载出去

本文系原创文章,禁止转载

【7.1.1】ELK集群搭建 之 ES集群的更多相关文章

  1. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

  2. mongodb 3.4 集群搭建升级版 五台集群

    最新版mongodb推荐使用yaml语法来做配置,另外一些旧的配置在最新版本中已经不在生效,所以我们在生产实际搭建mongodb集群的时候做了一些改进.如果大家不熟悉什么是分片.副本集.仲裁者的话请先 ...

  3. mongodb3.6集群搭建:分片+副本集

    mongodb是最常用的noSql数据库,在数据库排名中已经上升到了前五.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  4. 分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程/Jstorm集群一键安装部署

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  5. 基于Dokcer搭建Redis集群搭建(主从集群)

    最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...

  6. Kubernetes集群搭建之Etcd集群配置篇

    介绍 etcd 是一个分布式一致性k-v存储系统,可用于服务注册发现与共享配置,具有以下优点. 简单 : 相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过g ...

  7. ELK+kafka+filebeat搭建生产ELFK集群

    文章原文 ELK 架构介绍 集群服务版本 服务 版本 java 1.8.0_221 elasticsearch 7.10.1 filebeat 7.10.1 kibana 7.10.1 logstas ...

  8. ELK介绍及搭建 Elasticsearch 分布式集群

    上:https://blog.51cto.com/zero01/2079879 下:https://blog.51cto.com/zero01/2082794

  9. MongoDB 3.6.9 集群搭建 - 切片+副本集

    1. 环境准备 在Mongo的官网下载Linux版本安装包,然后解压到对应的目录下:由于资源有限,我们采用Replica Sets + Sharding方式来配置高可用.结构图如下所示: 这里我说明下 ...

随机推荐

  1. poj 2836 Rectangular Covering

    Rectangular Covering Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2776   Accepted: 7 ...

  2. JS允许找不到对象 不必判断是否存在某个div

    原文发布时间为:2009-11-10 -- 来源于本人的百度文章 [由搬家工具导入] 加一个try catch 即可。。。。 例子: for(var i=0;i<10;i++)     {    ...

  3. css3 ani-2-trans, any to transform!!! css3 animation jingsui! Hover

    http://www.daqianduan.com/example?pid=2959 animation, transition, transform or ani 2 trans

  4. 自定义JavaScript字典类jsdictionary.js

    /* Dictionary类:本类实现了字典功能,所有方法.属性都模仿System..Collection.Generic.Dictionary类 构造函数: Dictionary() 属性: Com ...

  5. [LeetCode] Factorial Trailing Zeroes 阶乘末尾0

    Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...

  6. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  7. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---27

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. hdu 5056(尺取法思路题)

    Boring count Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. 数据库索引实现原理—B_TREE

    数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B_TREE.B_TREE索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据:相反 ...

  10. Codeforces 761E Dasha and Puzzle(构造)

    题目链接 Dasha and Puzzle 对于无解的情况:若存在一个点入度大于4,那么直接判断无解. 从根结点出发(假设根结点的深度为0), 深度为0的节点到深度为1的节点的这些边长度为2^30, ...