ELK-介绍及Elasticsearch集群搭建

  • ELK是三个开源软件的缩写,分别为Elasticsearch、Logstash、kibana它们都是开源软件。后来新增了一个FileBeat,它是一个轻量及的日志收集处理工具,因为Logstash由java程序开发,比较消耗内存资源,后来将Logstash使用go语言重新编译,升级为了FileBeat。
  • Elasticsearch是一个基于Lucene搜索引擎的NoSql数据库,用于存储Logstash(日志管道工具)收集来的数据,最后由Kibana图形化界面工具来呈现出来,它工作在Elasticsearch之上。
  • Es集群中没有中心节点,从外部来看ES集群在逻辑上是一个整体,你与任何一个节点的通信和与整个es集群通信都是等价的。
  • Elasticsearch集群:
    • 1)节点(node):一个节点是集群中的一台服务器,是集群的一部分。它存储数据,参与集群的索引和搜索功能。集群中有一个主节点,主节点通过ES集群内部选举产生。
    • 2)集群(cluster):一组节点组织在一起称为一个集群,它们共同持有整个的数据,并一起提供索引和搜索功能。
    • 3)分片(shards):ES可以把完整的索引分成多个分片,分别存储在不同的节点上。
    • 4)副本(replicas):ES可以为每个分片创建副本,提高查询效率,保证在分片数据丢失后的恢复。
    • 分片数量只能在索引创建时指定,索引创建后不能再更改分片数量,但可以改变副本的数量。
  • 本章实验环境介绍:
    • 三台服务器:
      • 192.168.8.5、192.168.8.6、192.168.8.7
      • elasticsearch 软件版本:6.6.0
    • 开始部署:
      • 三台主机分别安装es:

        • 安装软件包(无需依赖包):
          • rpm -ivh elasticsearch-6.6.0.rpm
        • elasticsearch目录和文件讲解:

          • /etc/elasticsearch/elasticsearch.yml #配置文件
          • /etc/elasticsearch/jvm.options #java虚拟机
          • /etc/init.d/elasticsearch #服务启动脚本
          • /etc/sysconfig/elasticsearch #elasticsearch服务变量
          • /usr/lib/sysctl.d/elasticsearch.conf #设置elasticsearch用户使用的内存大小
          • /usr/lib/systemd/system/elasticsearch.service #添加系统服务文件
          • /var/log/elasticsearch/elasticsearch.log #日志文件路径
        • 修改配置文件:
          • vim /etc/elasticsearch/elasticsearch.yml
            • 去掉以下几行前边的注释:

              • node.name: node-1 #群集中本机节点名
              • path.data: /data/elasticsearch #数据目录
              • path.logs: /var/log/elasticsearch #日志目录
              • bootstrap.memory_lock: true #锁定内存,需要和/etc/elasticsearch/jvm.options关联
              • network.host: 192.168.8.10,127.0.0.1 #监听的ip地址
              • http.port: 9200 #端口号
        • 创建数据目录,并修改权限:

          • mkdir -p /data/elasticsearch
          • chown -R elasticsearch.elasticsearch /data/elasticsearch/
        • 加载重启服务:

          • systemctl daemon-reload
          • systemctl restart elasticsearch
        • 查看9200端口是否开启:
          • netstat -anput | grep 9200
        • 第一台部署成功后,使用浏览器下载插件访问8.5主机:

          • 直接访问可以看到它的状态信息
          • 谷歌浏览器示范:

            • 谷歌-扩展程序-管理扩展程序
            • 此页面代表es1 服务部署成功,现在创建索引在es1服务器上
              • curl -XPUT '192.168.8.5:9200/vipinfo/users/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"name": "guofucheng","age": "45","job": "mingxing"}'
            • 在浏览器上查看是否有了刚才创建的索引:

              • 右上方黄色代表副本不完整
              • elasticsearch群集:
                • 状态颜色:

                  • 灰色:未连接
                  • 绿色:数据完整态
                  • 黄色:副本不完整
                  • 红色:数据分片不完整
                  • 紫色:数据分片复制过程
                  • 群集主机角色:
                  • 主节点master:负责管理调度
                  • 工作节点: 负责处理数据
                  • 默认情况,所有节点都是工作节点,即主节点也处理数据
          • 向集群中添加第二台主机:192.168.8.6
            • 安装步骤与es1一样,配置文件需要修改:

              • vim /etc/elasticsearch/elasticsearch.yml

                • path.data: /data/elasticsearch
                • path.logs: /var/log/elasticsearch
                • network.host: 192.168.8.20,127.0.0.1
                • http.port: 9200
                • discovery.zen.ping.unicast.hosts: "192.168.8.6", "192.168.8.20"
                • discovery.zen.minimum_master_nodes: 2 #添加的值=节点数/2 + 1
              • 创建数据目录。并修改权限:

                • mkdir -p /data/elasticsearch
                • chown -R elasticsearch.elasticsearch /data/elasticsearch/
              • 启动服务:

                • systemctl daemon-reload
                • systemctl restart elasticsearch
              • 查看端口:
                • netstat -anput | grep 9200
          • 向集群中添加第三台主机:192.168.8.7

            • 安装与es1一样,修改配置文件
            • vim /etc/elasticsearch/elasticsearch.yml

              • 修改一下的配置:
              • path.data: /data/elasticsearch
              • path.logs: /var/log/elasticsearch
              • bootstrap.memory_lock: true
              • network.host: 192.168.8.7,127.0.0.1
              • http.port: 9200
              • discovery.zen.ping.unicast.hosts: "192.168.8.5", "192.168.8.7"
              • discovery.zen.minimum_master_nodes: 2
            • 创建数据目录,并修改权限

              • mkdir -p /data/elasticsearch
              • chown -R elasticsearch.elasticsearch /data/elasticsearch/
            • 重启服务:

              • systemctl daemon-reload
              • systemctl restart elasticsearch
            • 查看端口是否存在
              • netstat -anpt | grep 9200
            • 再次访问8.5群集,查看是否发生了变化
            • 常见群集管理监控命令
            • (1)查看索引信息
            • curl -XGET '192.168.8.5:9200/_cat/indices?pretty'
            • (2)查看群集健康状态
            • curl -XGET '192.168.8.5:9200/_cluster/health?pretty'
            • (3)统计群集节点
            • curl -XGET '192.168.8.5:9200/_cat/nodes?human&pretty'
            • (4)查看群集所有节点详细信息
            • curl -XGET '192.168.8.5:9200/_nodes/_all/info/jvm.process?human&pretty'
            • 注意:企业环境使用脚本监控群集健康状态是否为green 或 节点数不匹配 就邮件报警
            • (5)创建索引index1时,修改分片为3和副本数为2

              • curl -X PUT 192.168.8.5:9200/index1 -H 'Content-Type: application/json' -d '{
              • "settings" : {
              • "index" : {
              • "number_of_shards" : 3,
              • "number_of_replicas" : 2
              • }
              • }
              • }'
            • (6)针对已有索引,可修改副本数,不可改分片数。下面语句把index1的副本数由2改为1

              • curl -X PUT '192.168.8.5:9200/index1/_settings?pretty' -H 'Content-Type: application/json' -d '{
              • "settings": {
              • "number_of_replicas": "1"
              • }
              • }'
相关推荐
志栋智能4 分钟前
超自动化巡检:提升MTTR,缩短业务影响时间
运维·自动化
oqX0Cazj225 分钟前
2026超火Go-Zero实战:从架构原理到高并发接口落地,彻底解决接口超时、雪崩问题
开发语言·架构·golang
蝎子莱莱爱打怪26 分钟前
XZLL-IM干货系列 02|Protobuf 协议设计:从 JSON 切到二进制,每条消息省了 60%
后端·面试·架构
Java识堂34 分钟前
如何对微服务进行拆分?
微服务·云原生·架构
中讯慧通34 分钟前
无人机靠什么实时传画面?图传电台传输数据全明细
大数据·机器人·无人机
kong@react37 分钟前
Rocky Linux 10.2 全面解析:企业级 CentOS 替代方案及保姆级docker安装
java·linux·运维·docker
QYR_1143 分钟前
2032年全球料斗清洗机市场规模达14.67亿元:制药与食品行业驱动自动化清洗设备需求增长
大数据·市场调研
●VON43 分钟前
AtomGit Flutter鸿蒙客户端:收藏仓库
flutter·架构·跨平台·harmonyos·鸿蒙
今日综合1 小时前
激光雷达的机器人市场竞争,谁在“吃透”六个场景?
大数据·机器人
凡人叶枫1 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++