ElasticSearch安装部署

ElasticSearch安装部署,第1张

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 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5707636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存