批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用
一、分布式ELK平台
ELK的介绍:
ELK 是什么?
Sina、饿了么、携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM...... 这些公司都在使用 ELK!ELK!ELK!
ELK竟然重复了三遍,是个什么鬼?
ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写
- Elasticsearch:负责日志检索和储存
- Logstash:负责日志的收集和分析、处理
- Kibana:负责日志的可视化
这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK
ELK 能做什么?
ELK组件在海量日志系统的运维中,可用于解决:
- 分布式日志数据集中式查询和管理
- 系统监控,包含系统硬件和应用各个组件的监控
- 故障排查
- 安全信息和事件管理
- 报表功能
ELK 是什么样子的?
ELK 是什么样子的?
ELK 是什么样子的?
二、Elasticsearch介绍
Elasticsearch是什么?
ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口。
Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Elasticsearch主要特点:
- 实时分析
- 分布式实时文件存储,并将每一个字段都编入索引
- 文档导向,所有的对象全部是文档
- 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
- 接口友好,支持 JSON
Elasticsearch(简称ES)没有什么?
- Elasticsearch 没有典型意义的事务.
- Elasticsearch 是一种面向文档的数据库。
- Elasticsearch 没有提供授权和认证特性
ES相关概念:
Node: 装有一个 ES 服务器的节点。
Cluster: 有多个Node组成的集群
Document: 一个可被搜素的基础信息单元
Index: 拥有相似特征的文档的集合
Type: 一个索引中可以定义一种或多种类型
Filed: 是 ES 的最小单位,相当于数据的某一列
Shards: 索引的分片,每一个分片就是一个 Shard
Replicas: 索引的拷贝
ES 与关系型数据库的对比:
在 ES 中,文档归属于一种 类型 (type) ,而这些类型存在于索引 (index) 中,类比传统关系型数据库
DB --> Databases --> Tables --> Rows --> Columns
关系型 --> 数据库 --> 表 --> 行 --> 列
ES --> Indices --> Types --> Documents --> Fields
ES --> 索引 --> 类型 --> 文档 --> 域(字段)
ES 与关系型数据库的对比:
Elasticsearch架构图:
三、Elasticsearch集群安装
安装思路:
- 安装第一台 ES 服务器
- 设置主机名称和 ip 对应关系
- 解决依赖关系
- 安装软件包
- 修改配置文件
- 启动服务
- 检查服务
安装步骤:
步骤 1:设置 ip 与主机名称对应关系
配置 /etc/hosts
192.168.4.11 node1
步骤 2:安装 JDK
Elasticsearch 要求至少 Java 7,一般推荐使用 OpenJDK 1.8,配置好安装源以后,我们先解决依赖关系
yum install -y java-1.8.0-openjdk
步骤 3:安装 ES
rpm –ivh elasticsearch-2.3.4-1.noarch
步骤 4:修改配置文件
elasticsearch.yml
network.host: 0.0.0.0 //修改后监控范围为所有网段主机
步骤 5:启动服务,设置自启动
systemctl enable elasticsearch
systemctl start elasticsearch
验证:
netstat –ltunp
能够看到 9200,9300 被监听
通过浏览器或 curl 访问 9200 端口
curl http://192.168.4.11:9200/
{
"name" : "node1",
"cluster_name" : "my-es",
"version" : {
"number" : "2.3.4",
...... ...... ......
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search“
}
课堂练习:
1> 准备 1 台虚拟机
2> 部署 elasticsearch 第一个节点
3> 访问 9200 端口查看是否安装成功
ES 集群配置:
ES 集群配置也很简单,只需要对配置文件做少量的修改即可,其他步骤和单机完全一致
1> ES 集群配置文件
cluster.name: my-es
node.name: node1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["node1", "node2","node3"]
2> 集群中的所有节点要相互能够 ping 通,要在所有集群机器上配置 /etc/hosts 中的主机名与 ip 对应关系;集群中所有机器都要安装 java 环境
cluster.name 集群名称配置要求完全一致
node.name 为当前节点标识,应配置本机的主机名
discovery 为集群节点机器,不需要全部配置
3> 配置完成以后启动所有节点服务(有可能会有一定的延时,需要等待几十秒)
4> 验证集群,使用 ES 内置字段 _cluster/health
curl http://192.168.4.11:9200/_cluster/health?pretty
{
"cluster_name" : "my-es",
"status" : "green",
...... ...... ......
"number_of_nodes" : 5,
"number_of_data_nodes" : 5,
...... ...... ......
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
5> 返回字段解析
"status“ : ”green“ 集群状态,绿色为正常,黄色表示有问题但不是很严重,红色表示严重故障
“number_of_nodes” : 5, 表示集群中节点的数量
"number_of_data_nodes" : 5,
...... ...... ......
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
课堂练习:
一共安装 5 台虚拟机
在所有机器中部署 ES
启动服务查看验证集群状态
四、ES 插件的安装与使用
ES 常用插件:
head 插件:
- 它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作
- 它提供一组针对集群的查询API,并将结果以json和表格形式返回
- 它提供一些快捷菜单,用以展现集群的各种状态
kopf 插件
是一个ElasticSearch的管理工具,它提供了对ES集群操作的API
bigdesk 插件
是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等
ES 插件安装、查看
查看安装的插件:
/usr/share/elasticsearch/bin/plugin list
安装插件:
/usr/share/elasticsearch/bin/plugin install ftp://192.168.4.254/head.zip //类似yum源的第一种安装方式
/usr/share/elasticsearch/bin/plugin install file:///tmp/kopf.zip //类似yum源的第二种安装方式
这里必须使用 url 的方式进行安装,如果文件在本地,我们也需要使用 file:// 的方式指定路径,例如文件在/tmp/xxx 下面,我们要写成 file:///tmp/xxx 删除使用 remove 指令
ES head 插件
ES kopf 插件
ES bigdesk 插件
############################################################
课堂练习:
ES集群安装:
环境要求:6台机器;5台装ES 名称min{1..5} 内存:1G;1台装kibana和logstash 名称min6 内存:4G
第一步:所有机器都安装java环境
# yum list |grep java //过滤出java版本,安装要求至少1.7以上版本
# for i in min{1..6};do ssh ${i} 'yum -y install java-1.8.0-openjdk';done //批量安装命令,前提密钥已经传到各个机子上面了,否则打断,具体查看ansible里面将密钥传递到各个被管理机子方法
第二步:所有机器都安装es集群环境
# for i in min{2..6};do scp -r elasticsearch-2.3.4.rpm ${i}:/opt;done //将es包批量传到被管理机器上
# for i in min{2..6};do ssh ${i} 'cd /opt;rpm -ivh elasticsearch-2.3.4.rpm';done //在被管理主机上批量安装es包
第三步:更改主节点机器的es服务的配置文件
# rpm -qc elasticsearch //查询es服务配置文件位置
# vim /etc/elasticsearch/elasticsearch.yml //配置文件行要顶格,格式要求很严格
17 cluster.name: my-min1 //定义集群名
23 node.name: min1 //节点主机名,填写本机自身的hostname名字
54 network.host: 0.0.0.0 //监控的主机为所有网段主机
68 discovery.zen.ping.unicast.hosts: ["min1", "min2","min3"] //配置集群的节点主机,不需要全部配置
第四步:将主节点机器es服务的配置文件传给从节点主机,并关闭、卸载所有节点主机的防火墙
# for i in min{2..5};do scp -r elasticsearch.yml $i:/etc/elasticsearch/ ;done //将主节点机器配置文件传到从节点主机配置文件对应位置,以便批量更改
# for i in min{1..5};do ssh $i 'systemctl stop firewalld';done //批量关闭防火墙
# for i in min{1..5};do ssh $i 'systemctl mask firewalld';done //批量卸载防火墙
第五步:批量更改从节点机器的es服务的配置文件里面的节点主机名
# for i in min{2..5};do ssh $i 'sed -i "s/^\(node.name: \).*/\1$HOSTNAME/" /etc/elasticsearch/elasticsearch.yml';done //批量将从节点主机es服务配置文件里面的节点主机名字改为主机本身名字
第六步:更改节点主机解析地址
# vim /etc/hosts //将节点主机解析地址写入主机文件,不然启动是解析报错
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.4.1 min1
192.168.4.2 min2
192.168.4.3 min3
192.168.4.4 min4
192.168.4.5 min5
192.168.4.6 min6
# for i in min{2..6};do scp -r hosts $i:/etc/;done
# for i in min{1..5};do ssh $i 'systemctl start elasticsearch';done //批量启动es服务
# for i in min{2..5};do ssh $i 'systemctl status elasticsearch';done //查看节点主机的es服务启动状态
第七步:验证://真机上浏览器访问查看到已连接的节点主机
http://192.168.4.1:9200/_cluster/health?pretty
主节点机器min1:
主节点机器min2:
主节点机器min3:
主节点机器min4:
主节点机器min5:
主节点机器min6: //节点机器6没有开启,所以没有状态,无法连接
ES插件安装:
# tar -xf elk.tar
# cd /usr/share/elasticsearch/bin/
# ./plugin list
# ./plugin install file:///opt/elk/elasticsearch-head-master.zip
# ./plugin install file:///opt/elk/elasticsearch-kopf-master.zip
# ./plugin install file:///opt/elk/bigdesk-master.zip
验证:
http://192.168.4.1:9200/_plugin/head
http://192.168.4.1:9200/_plugin/kopf
http://192.168.4.1:9200/_plugin/bigdesk
############################################
批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用的更多相关文章
- 五十七.分布式ELK平台、ES安装 、 扩展插件 、Kibana安装
1. ES集群安装 准备1台虚拟机 部署elasticsearch第一个节点 访问9200端口查看是否安装成功 1ELK是日志分析平台,不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写 ...
- ELK 之一:ElasticSearch 基础和集群搭建
一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...
- ElasticSearch高可用集群环境搭建和分片原理
1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...
- 全文搜索引擎 Elasticsearch 入门:集群搭建
本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...
- 原创 | 手摸手带您学会 Elasticsearch 单机、集群、插件安装(图文教程)
欢迎关注笔者的公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site/ ...
- ElasticSearch 集群环境搭建,安装ElasticSearch-head插件,安装错误解决
ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决 说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文 ...
- 使用Spring Data ElasticSearch+Jsoup操作集群数据存储
使用Spring Data ElasticSearch+Jsoup操作集群数据存储 1.使用Jsoup爬取京东商城的商品数据 1)获取商品名称.价格以及商品地址,并封装为一个Product对象,代码截 ...
- ELK+Kafka学习笔记之搭建ELK+Kafka日志收集系统集群
0x00 概述 关于如何搭建ELK部分,请参考这篇文章,https://www.cnblogs.com/JetpropelledSnake/p/9893566.html. 该篇用户为非root,使用用 ...
- MySQL集群---②Windows平台搭建MySQL CLUSTER集群
原文:http://blog.csdn.net/mazhaojuan/article/details/42211857 本文将通过两台电脑来简单介绍一下Windows平台如何搭建MySQL集群. My ...
随机推荐
- JS手写状态管理的实现(转)
https://juejin.im/post/5c528411e51d456898361e43
- Docker安装及部署实例.Net Core
1.什么是Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...
- django-xadmin常用内容记录
自定义菜单名称: 1 修改app下的 apps.py文件 添加 class OperationConfig(AppConfig): name = 'operation' verbose_name = ...
- C++中的通用结构定义,及相应的序列化、反序列化接口
一个通用的C++结构定义如下: typedef struct tagCommonStruct { long len; void* buff; }CommonStruct_st; 此接口对应的普通序列化 ...
- LeetCode——141 设计链表
题目: 简单说下思路: 用两个指针,一个跑得快,一个跑得慢(例如一个每次前进两步,一个前进一步),这样只要快指针不会撞上NULL(如果遇到了NULL的情况那么必然不存在环),快指针肯定会和慢指针碰面( ...
- linux启动内核源码分析
内核的启动时从main.c这个文件里面的start_kernel函数开始的,这个文件在linux源码里面的init文件夹下面 下面我们来看看这个函数 这个函数很长,可以看个大概过去 asmlinkag ...
- [2019杭电多校第六场][hdu6641]TDL
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6641 题意为求出最小的n,满足(f(n,m)-n)^n=k,其中f(n,m)为第m大的x,其中x满足g ...
- 回溯--- Permutations
46.Permutations (Medium)](https://leetcode.com/problems/permutations/description/) [1,2,3] have the ...
- asp.net core2.1认证和授权解密
来源:https://www.cnblogs.com/pangjianxin/p/9372562.html asp.net core2.1认证和授权解密 本篇文章翻译自:https://digital ...
- SQL结构化查询语言
一.SQL 结构化查询语言 1.T-SQL 和 SQL的关系 T-SQL是SQL的增强版 2.SQL的组成 2.1 DML (数据操作语言) 增加,修改,删除等数据操作 2.2 DCL (数据控制语言 ...