zoukankan      html  css  js  c++  java
  • 批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用

    一、分布式ELK平台

    ELK的介绍:

    ELK 是什么?

    Sina、饿了么、携程、华为、美团、freewheel、畅捷通 、新浪微博、大讲台、魅族、IBM...... 这些公司都在使用 ELK!ELK!ELK!

    ELK竟然重复了三遍,是个什么鬼?

    ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写

    1. Elasticsearch:负责日志检索和储存
    2. Logstash:负责日志的收集和分析、处理
    3. Kibana:负责日志的可视化

    这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK

    ELK 能做什么?

    ELK组件在海量日志系统的运维中,可用于解决:

    • 分布式日志数据集中式查询和管理
    • 系统监控,包含系统硬件和应用各个组件的监控
    • 故障排查
    • 安全信息和事件管理
    • 报表功能

    ELK 是什么样子的?

    ELK 是什么样子的?

    ELK 是什么样子的?

    二、Elasticsearch介绍

    Elasticsearch是什么?

    ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful API 的 web 接口。

    Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    Elasticsearch主要特点:

    1. 实时分析
    2. 分布式实时文件存储,并将每一个字段都编入索引
    3. 文档导向,所有的对象全部是文档
    4. 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
    5. 接口友好,支持 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集群安装

    安装思路:

    1. 安装第一台 ES 服务器
    2. 设置主机名称和 ip 对应关系
    3. 解决依赖关系
    4. 安装软件包
    5. 修改配置文件
    6. 启动服务
    7. 检查服务

    安装步骤:

    步骤 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 插件:

    1. 它展现ES集群的拓扑结构,并且可以通过它来进行索引(Index)和节点(Node)级别的操作
    2. 它提供一组针对集群的查询API,并将结果以json和表格形式返回
    3. 它提供一些快捷菜单,用以展现集群的各种状态

    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 

    ############################################

  • 相关阅读:
    NSCalendar
    保护连接字符串
    System.Runtime.InteropServices.COMException: 拒绝访问.
    Windows 7 初体验
    Sql语句收藏
    因为WMI配置,无法执行Sql Server 系统配置检查器的解决办法
    url带中文参数显示乱码的问题
    想建立一个好的团队,有意者加我
    庆祝一下,早上的帖子上了24小时排行第三
    C/S结构和b/s结构的比较
  • 原文地址:https://www.cnblogs.com/baichuanhuihai/p/8475932.html
Copyright © 2011-2022 走看看