ELK 搭建

ELK 是 elastic 公司旗下三款产品 ElasticSearch 、Logstash 、Kibana 的首字母组合。

ElasticSearch 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题      --------百度百科

Logstash 传输和处理你的日志、事务或其他数据。

Kibana 将 Elasticsearch 的数据分析并渲染为可视化的报表。

下载包到服务器 /home/software 目录下

进行解压 tar -xf *.gz    unzip *.zip

修改配置

ElasticSearch安装

官网:https://www.elastic.co/downloads 下载包 rz -E 把包传到服务器或者直接在服务器下载

解压

启动 elasticsearch     后台启动 elasticsearch -d

因为elasticsearch是无权限启动,因此root超管启存在风险,用普通用户启动

增加用户组:groupadd pz

增加普通用户 useradd name -g pz所要加的用户组方便管理)  -p  pass

添加权限 chown -R 组:名 elasticsearch

切换用户 su name进行启动 在elasticsearch的bin目录下启动

启动成功最后一行显示recovered[0] indices into cluster_state 成功

输入curl localhost:9200 或curl ip:9200 只要可以访问就是成功

jps 查看进程或者ps

配置在elasticsearch/config/elasticsearch.yml中配置 IP和PORT 以及集群名和节点信息

cluster.name: 集群名称

node.name: 节点名称   集群最少三个不同节点,意思是三太服务器 集群名相同,节点名不同

network.host: ip

http.port: 9200 端口 没改过

HEAD插件安装:基于HTML5编写的集群操作和管理工具,可现实集群拓扑结构,进行一些操作

安装node 环境基于jdk

创建一个文件与software同级

安装jdk

安装node  下载地址https://nodejs.org/en/download/

解压

进入bin目录执行npm命令  npm install -g grunt-cli

node -v      npm -v   gnunt -version   检查各个版本

安装head插件

下载包 wget  https://github.com/mobz/elasticsearch-head/archive/master.zip  从网上找的

解压包unzip

在elasticsearch.yml末端下添加两个命令  开启http对外服务,让head插件能够访问集群

http.cors.enabled: true

http.cors.allow-origin: "*"

修改head插件配置文件 Gruntifile.js

connection属性:options里面添加 hostname: 'ip',   逗号不能少

完成后配置node的环境变量

在vim /etc/profiel

添加 NODE_HOME=/home/software/node6  里面的jdk要一致 JAVA_HOME=/home/software/jdk版本

保持  source /etc/profile 配置生效命令

进入head根目录 启动 grunt server

出现 Start connect web server on http://ip:9100 成功

若提示Unbale to find local grunt  执行npm install -g grunt

grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动

在浏览器启动 若访问不到可能是没有开启对外访问,在elasticsearch.yml里面配置

 

IK中文分词器安装

获取ik安装包 elasticsearch-analysic-ik-版本.zip

解压到elasticsearch的plugins的目录下改名为ik   mv  elasticsearch  ik

OK

 

Logstash的安装基本一致

安装包放到software,解压

运行测试 logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}' 收集控制台打印内容,并抓化成固定格式的字符串在控制台输出

运行命令后 随便输字符串 等待几秒 出现像键值对一样的数据就正确了

就是把数据库数据帮到logstash上了

进入mysql 执行set names utf8;  先编码一下

mysql数据导入索引(IK分词器使用)需要安装jdbc input插件logstash-input-jdbc的包放到logstash的plugins下(没有就创建)

解压    这个包的作用就是可以使用logstash从mysql导入数据到路径在配置文件中指定

logstash启动加载的文件(导入的数据源制定,导入的属性指定) 网上找  jdbc.conf 放到bin目录下

jdbc.sql  一条搜索语句: 表示要把那张表里的数据导入到IK进行分词搜索

启动 logstash -f jdbc.conf   出现数据说明正在导入

 

集群搭建在elasticsearch.yml配置文件中

集群名,节点名 ip, port, 发现节点

discovery.zen.ping.unicast.hosts: ["本ip","其他节点ip"]

discovery.zen.minimum_master_nodes:  这是个数字     用来防止脑裂(就是一台服务器因为网络波动而使集群中其他节点认为它宕机了,其实没宕机,而出现两个master控制,造成数据不一致现象)的出现 用过半算法(mastere/2+1)防止出现脑裂

笔记

集群分布式个高可用在ES中都是默认配置和计算
  集群的分布式,es的所有数据默认5个分片,每个分片默认一个副本(总共每个分片有2分,一份值主分片,一份是副分片)
  集群配置完成后,启动所有集群节点, 分片和副本的数据将会自动计算分配到不同的 节点存储,只有从少到多的移动,没有从多到少的移动
  分配默认5片,副本默认1片,自动根据集群节点数量最优的分配,分片越多,节点越多,副本越多,整个集群的分布式性能越高,高可用能力越高
  配置的自动发现的list和最大的mster数量
  集群的节点角色
  master:负责管理集群,掌握信息元数据(所有的索引的分片数量,副本数量,分片的存储位置)所有的操作都是通过master完成的
  data:数据节点,保存数据,被读,被写
  负载均衡节点:既不管理集群,也不存储数据,只负责请求的转发,分担连接的压力
  配置文件中node.master.true 表示主节点能力
      node.data:true  表示数据存储能力
      当都是false表示负载均衡

      index.number_of_shards:5 默认是5 可以调节,一旦数据已经分片落地,
      则不能改变
      index.number_of_replicas: 1 值越大高可用能力越高,一旦落地,数据就不能改动
  ES的脑裂  最小的master数量可以防止脑裂产生
   计算公式:master数/2+1  过半
   元数据:描述数据的数据(描述分片的数据)
   master通信过程保持元数据一直,网络波动造成master之间的通信障碍,一旦超时
   不管集群中的master如何出现脑裂的情况,只要按照过半配置

 

逻辑不是很清晰,存在问题,请百度解决,谢谢。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值