ELK日志处理部署笔记-1.部署elasticsearch集群

ELK概念简介

ELK建立在三个服务上即
Elasticsearch :: 日志检索和储存
Logstash :: 日志收集分析处理
Kibana :: 日志可视化

Elasticsearch

Elasticsearch 属于NoSQL数据库类型,更具体地说,它是一个文档型数据库(Document-Oriented Database)。在Elasticsearch中,数据以JSON格式的文档形式存储,并且支持动态模式,即无需预先定义数据结构。同时,Elasticsearch因其强大的全文搜索、实时分析和分布式特性
数据类型
Index 拥有相似特征的文档集合
Type 索引定义的类型
Document 一行具体数据
Filed 字段一个存储单元

集群模式
Elasticsearch采用了经典的raft模式,推荐将一部分专门配置为候选主节点(master-eligible nodes),而另一部分节点则仅作为数据节点(data nodes)。这样可以避免存储大量索引数据的节点同时承担集群管理任务,减轻单个节点的压力,提高整个集群的稳定性。
主节点(Master Node)是通过选举产生的,其主要作用是负责集群级别的元数据管理和变更操作,监控等作用,它是集群架构中的协调中心,负责控制集群的状态和结构变化,但并不直接处理搜索请求或存储数据。

Elasticsearch端口

9200/tcp -> 数据输出
9300/tcp -> 集群通信

配置方式

Redhat系列Linux中,配置文件通常位于/etc/elasticsearch/elasticsearch.yml

#集群名称
17:  cluster.name: my-es
#本节点名称,需要是唯一的
23:  node.name: es-0001
#允许来自任何IP地址的连接。这意味着该节点准备接受集群内其他节点以及客户端的连接请求。
56:  network.host: 0.0.0.0
#广播节点,新节点启动时将其加入到集群中,至少两台,防止单点故障
70:  discovery.seed_hosts: ["es-0001", "es-0002", "es-0003"]
#候选节点,至少三台,从其中选取管理的主节点
74:  cluster.initial_master_nodes: ["es-0001", "es-0002", "es-0003"]

HEAD插件

head插件是将elasticsearch管理可视化的工具,收集9200端口信息,将其转发到网页端

# 在某个节点比如es-0001上安装 web 服务,并部署插件
dnf install -y nginx

#将插件解压到网页目录,通过 ELB 的 8080 端口,发布服务到互联网
tar -zxf head.tar.gz -C /usr/share/nginx/html/

systemctl enable --now nginx

设置proxy的nginx监听80端口,前端端口可自定义,这里我设置成8080
此时访问【proxyIP】:8080/es-head是互动管理页面,但是没有本机数据
【proxyIP】:8080/es是原始json页面,有本机数据
还需要nginx做转发

创建/etc/nginx/default.d/esproxy.conf文件,设置转发并设置管理页面需要密码登录

location ~* ^/es/(.*)$ {
    proxy_pass http://127.0.0.1:9200/$1;
    auth_basic "Elasticsearch admin"
    auth_basic_user_file /etc/nginx/auth-user; 
}

此时访问的转发路径是
访问proxy节点8080端口 => 转到es节点80端口 => 转到es节点9200端口

用户名密码设置工具,重新启动nginx服务

dnf install -y httpd-tools

htpasswd -cm /etc/nginx/auth-user admin #互动设定密码

systemctl reload nginx

此时可以通过【proxyIP】:8080/es-head管理

API管理

#创建分片副本
curl -XPUT -H 'Content-Type: application/json' \
    http://127.0.0.1:9200/_template/index_defaults -d '{
{
  "index_patterns": ["*"],   # 这个模板将应用于所有新创建的索引
  "settings": {
    "number_of_shards": 5,    # 默认每个索引有5个主分片
    "number_of_replicas": 1   # 每个主分片默认有一个副本分片
  }
}'
{"acknowledged":true}

# 创建 test 索引
curl -XPUT http://127.0.0.1:9200/tedu?pretty
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test"
}

#增加数据
curl -XPUT -H "Content-Type: application/json" \
    http://127.0.0.1:9200/tedu/teacher/1?pretty -d '{
        "职业": "诗人","名字": "李白","称号": "诗仙","年代": "唐"
    }' 

#查询数据
curl -XGET http://127.0.0.1:9200/tedu/teacher/_search?pretty
curl -XGET http://127.0.0.1:9200/tedu/teacher/1?pretty

#修改数据
curl -XPOST -H "Content-Type: application/json" \
    http://127.0.0.1:9200/tedu/teacher/1/_update -d '{ 
      "doc": {"年代":"公元701"}
    }'

#删除一条
curl -XDELETE http://127.0.0.1:9200/tedu/teacher/1

#删除索引
curl -XDELETE http://127.0.0.1:9200/tedu

附注

如果elasticcsearch因为集群启动顺序原因,没有被加入到节点,重启即可
设置默认分片的命令无法改变之前数据的分片情况

posted @ 2024-03-14 15:38  ling_2945  阅读(39)  评论(0)    收藏  举报