栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ElasticSearch安装部署

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ElasticSearch安装部署

ElasticSearch
一个完整的集中式日志系统, 需要包含以下几个主要特点:
• 收集-能够采集多种来源的日志数据
• 传输-能够稳定的把日志数据传输到中央系统
• 存储-如何存储日志数据
• 分析-可以支持 UI 分析
• 警告-能够提供错误报告, 监控机制(Elastalert)

ELK能够完美的解决上述问题
ELK提供了一整套解决方案, 并且都是开源软件, 之间互相配合使用, 完美衔接, 高效的满足了很多场合的应用,是目前主流的日志系统
ELK由ElasticSearch、Logstash和Kibana三个开源工具组成:
1)ElasticSearch
ElasticSearch是一个基于Lucene的开源分布式搜索服务器
特点:

分布式, 零配置, 自动发现, 索引自动分片, 索引副本机制, restful风格接口, 多数据源, 自动搜索负载等它提供了一个分布式多用户能力的全文搜索引擎, 基于RESTful web接口,Elasticsearch是用Java开发的, 并作为Apache许可条款下的开放源码发布设计用于云计算中, 能够达到实时搜索, 稳定, 可靠, 快速, 安装使用方便

2)Logstash
Logstash是一个完全开源工具, 可以对你的日志进行收集、过滤、分析
一般为c/s架构, client端安装在需要收集日志的主机上, server端负责将收到的各节点日志进行过滤、修改等操作再一并发往elasticsearch上去

3)Kibana
Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具, 也是一个开源和免费的工具
Kibana可以为 ElasticSearch 提供日志分析友好的 Web 界面, 可以帮你汇总、分析和搜索重要数据日志

部署
版本要进行统一

配置java环境

tar -xf jdk-8u181-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_181/ /usr/local/java
vim /etc/profile.d/java.sh
. /etc/profile.d/java.sh

解压elasticsearch

tar xf elasticsearch-6.4.1.tar.gz -C /usr/local/
ln -s /usr/local/elasticsearch-6.4.1/ /usr/local/es
useradd es   #创建es用户 不可使用root运行
chown es.es -R /usr/local/es/
echo "1" |passwd --stdin es

配置文件

cd /usr/local/es/
vim config/elasticsearch.yml 
cluster.name: es-cluster              # 集群名称,各节点配成相同的集群名称
node.name: es1                          # 节点名称,各节点配置不同。
node.master: true                        # 指示某个节点是否符合成为主节点的条件
node.data: true                            # 指示节点是否为数据节点。数据节点包含并管理索引的一部分
path.data: /data/es/data             # 数据存储目录
path.logs: /data/es/logs              # 日志存储目录
bootstrap.memory_lock: true       # 内存锁定,是否禁用交换
network.host: 0.0.0.0                     # 绑定节点IP
http.port: 9200                              # rest api端口
discovery.zen.ping.unicast.hosts: ["es1", "es2"]   # 提供其他 Elasticsearch 服务节点的单点广播发现功能
#bootstrap.system_call_filter        系统调用过滤器。
#discovery.zen.minimum_master_nodes    集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
#discovery.zen.ping_timeout         节点在发现过程中的等待时间。
#discovery.zen.fd.ping_retries        节点发现重试次数。
#http.cors.enabled                          是否允许跨源 REST 请求,用于允许head插件访问ES。
#http.cors.allow-origin                   允许的源地址
配置es-data        
在master的基础上作如下修改:
node.name: es2
node.master: false
node.data: true

启动服务

su - es
$ /usr/local/es/bin/elasticsearch -d # 参数 -d 后台运行
#查看端口进行验证是否正常启动:
netstat -tnpl
tcp6       0      0 :::9200                 :::*                    LISTEN
tcp6       0      0 :::9300                 :::*                    LISTEN

查看集群健康状况

curl IP:9200/_cluster/health?pretty
{
  "cluster_name" : "my-es",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
• number_of_nodes 和 number_of_data_nodes 这个命名完全是自描述的。
• active_primary_shards 指出你集群中的主分片数量。这是涵盖了所有索引的汇总值。
• active_shards 是涵盖了所有索引的所有分片的汇总值,即包括副本分片。
• relocating_shards 显示当前正在从一个节点迁往其他节点的分片的数量。通常来说应该是0,不过在ES发现集群不太均衡时,该值会上涨。
比如说:添加了一个新节点,或者下线了一个节点。
• initializing_shards 是刚刚创建的分片的个数。比如,当你刚创建第一个索引,分片都会短暂的处于 initializing 状态。
这通常会是一个临时事件,分片不应该长期停留在 initializing 状态。
你还可能在节点刚重启的时候看到 initializing 分片:当分片从磁盘上加载后,它们会从 initializing 状态开始。
• unassigned_shards 是已经在集群状态中存在的分片,但是实际在集群里又找不着。通常未分配分片的来源是未分配的副本。
比如,一个有5分片和1副本的索引,在单节点集群上,就会有5个未分配副本分片。
如果你的集群是 red 状态,也会长期保有未分配分片(因为缺少主分片)。

颜色状态:

green - 所有的主分片和副本分片都正常运行.yellow - 所有的主分片都正常运行,但不是所有的副本分片都正常运行.red - 有主分片没能正常运行. 启动时遇到问题




解决方法: 使用普通用户运行






max number of threads [3818] for user [es] is too low, increase to at least [4096]
解决方法:主机物理内存小于2G,加内存!


问题[1]: 进程最大可同时打开文件数太小,至少要65536
解决方法:
# echo “elk soft nofile 65536” >> /etc/security/limits.conf
# echo “elk hard nofile 65536” >> /etc/security/limits.conf
# su - elk
$ ulimit -n
65536




问题[2]: 请求锁内存失败,系统默认能让进程锁住的最大内存为64k
解决方法:
# echo “elk soft memlock unlimited” >> /etc/security/limits.conf
# echo “elk hard memlock unlimited” >> /etc/security/limits.conf



问题[3]: elk用户拥有的内存权限太小了,至少需要262114
解决方法:
# echo vm.max_map_count=262144 >> /etc/sysctl.conf
# sysctl -p
vm.max_map_count = 262144


插件安装
需要用到的工具:
bzip2
unzip
安装插件包:
插件下载地址: https://github.com/mobz/elasticsearch-head
node下载地址: https://npm.taobao.org/mirrors/node/latest-v10.x/node-v10.0.0-linux-x64.tar.gz
#node-v10.0.0-linux-x64.tar.gz
#elasticsearch-head-master.zip
tar xf node-v10.0.0-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/node-v10.0.0-linux-x64/ /usr/local/node
vim /etc/profile.d/node.sh
export NODE_HOME=/usr/local/node
export NODE_PATH=$NODE_HOME/lib/node_modules
export PATH=$NODE_HOME/bin:$PATH
. /etc/profile.d/node.sh
node -v
unzip elasticsearch-head-master.zip -d /usr/local/
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g grunt-cli
cnpm install
cd /usr/local/elasticsearch-head-master
vim Gruntfile.js
connect: {
        server: {
            options: {
                hostname: 'IP',   #添加此项
                port: 9100,
                base: '.',
                keepalive: true
            }
        }
    }
grunt server &   #挂入后台运行即可
su - es
/usr/local/es/bin/elasticsearch
随后浏览器访问http://IP:9100 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号