部署ELK日志分析系统2-Elasticsearch

4 篇文章 0 订阅

1. Elasticsearch简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,是当前流行的企业级搜索引擎。用于构建高可用和可扩展的系统。

1.1 集群介绍

集群中有多个节点,其中有一个为主节点,主节点可以通过选举产生或者配置指定,主从节点是对于集群内部来说的。es的一个概念就是去中心化,对于集群外部来说是无中心节点的,从外部来看es集群,在逻辑上是个整体,与任何一个节点的通信和与整个es集群通信是等价的。

  • 索引分片(shards):es把一个完整的索引分成多个分片,把一个大的索引拆分成多个小的索引并分布到不同的节点上,构成分布式搜索。分片的数量只能在索引创建前指定且索引创建后不能更改。
  • 索引副本(replicas):es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点的分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
  • 数据恢复(recovery):es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,宕掉的节点重新启动时也会进行数据恢复。
  • 数据源(river):表示数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
  • 快照存储方式(geteway):表示索引快照的存储方式,ES默认把索引存放到内存中,当内存满了再持久化到磁盘。geteway对索引快照进行存储,当这个集群关闭再重新启动时就会从geteway中读取索引备份数据。ES支持多种类型的gateway,如本地文件系统(默认)。
  • 节点自动发现(discovery.zen):ES是一个基于P2P协议的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
  • 交互方式(transport):表示es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议、thrift、memcached、zeroMQ等传输协议。

2. 集群部署

2.1 部署环境

系统节点名IP
CentOS7.3els1192.168.1.11
CentOS7.3els2192.168.1.12
CentOS7.3els3192.168.1.13

2.2 ES部署

2.2.1 系统环境配置

#下载java8并解压
tar -zxvf jdk-8u111-linux-x64.tar.gz

#将java环境添加到系统配置文件中
vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_111
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
#添加用户elsearch,应用不能使用root用户启动
useradd elsearch
#赋予文件夹权限
chown -R elsearch:elsearch /usr/local/elasticsearch
#为避免出现以下错误:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

#增加系统配置
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p

vim /etc/security/limits.conf
#allow user 'elsearch' mlockall
elsearch soft memlock unlimited
elsearch hard memlock unlimited
elsearch soft nproc 2048
elsearch hard nproc 2048

2.2.2 ES下载

从ELasticsearch的官方站点下载即可。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz
tar -zxvf elasticsearch-6.2.2.tar.gz
#相关配置文件
/etc/elasticsearch-6.2.2/elasticsearch.yml            # ES的配置文件
/etc/elasticsearch-6.2.2/jvm.options                  # JVM相关的配置,内存大小等
/etc/elasticsearch-6.2.2/log4j2.properties            # 系统日志配置文件

2.2.3 JVM配置

ES是Java开发的,可以通过elasticsearch-6.2.2/config/jvm.options文件来配置JVM参数。

#修改ES运行时能使用的内存,官方建议一个服务分配不超过32g内存
vim elasticsearch-6.2.2/config/jvm.options
-Xms1g
-Xmx1g

2.2.4 集群配置

cluster.name: my-elk                 # 集群名称,同集群节点名称相同
node.name: els1                     # 节点名称,默认会随机取名称
path.data: /data/es-data             # 数据的存放路径
path.logs: /var/log/elasticsearch/   # 日志的默认存放路径
bootstrap.memory_lock: true          #JVM将在启动时锁定堆(heap)的初始(Xms)大小,提升性能
bootstrap.system_call_filter: false
network.host: 0.0.0.0                # 监听主机IP
http.port: 9200                      # 监听端口
node.master: true                    # 表示节点是否具有成为主节点的资格
node.data: true                      #表示节点是否存储数据
# 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["192.168.1.11","192.168.1.12","192.168.1.13"]
# 为了避免集群脑裂,节点数最少为(n/2+1)
discovery.zen.minimum_master_nodes: 3
#是否启用对同一分片在同一个主机上出现多个分配实例的检测,这个选项只有在同一个node上启动多个es实例的情况下才有意义
cluster.routing.allocation.same_shard.host: true
#指定是否允许跨源 REST 请求
http.cors.enabled: true
http.cors.allow-origin: "*"
#节点负责存储数据,提供建立索引和查询索引的服务
node.master: false
node.data: true

#节点不会存储数据,有成为主节点的资格,维护整个集群的状态
node.master: true
node.data: false

#客户端节点,负责处理用户请求,实现请求转发、负载均衡等功能
node.master: false
node.data: false

2.2.5 启动与测试

#使用新建的用户elsearch来启动
/usr/local/elasticsearch/bin/elasticsearch -d
#测试
curl -XGET 'http://127.0.0.1:9200/_cat/nodes?pretty'

192.168.1.11 6 64 0 0.00 0.01 0.05 md - els1
192.168.1.12 8 62 0 0.00 0.01 0.05 md * els2
192.168.1.13 5 61 0 0.00 0.04 0.05 md - els3
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值