elastic search本身是无法从redis获取数据的,只能从logstash,
此处logstash只是作为本地的日志收集工具,logstash有三个组件(input 获取到数据,filter 过滤转换,output输出,每类组件都有一堆的插件)
filebeat是直接读数据发给ES集群,缺少过滤转换的功能,为了更正规,一般在前面加logstash server(logstash太占资源,对于ngixn自身主机性能影响较大)由logstash fileter 在本地完成过滤发给ES集群
logstash能收集的数据种类非常多,可以输出到各种,比如ES,redis
可以尝试中间加redis队列众多主机发给logstash server主机可能承受不来了太大的压力,
所有数据发给logstash server 之前先要发给redis,redis只是做队列用的,logstash server ,从中逐条读,并处理,可以有多个logstash ,每一个logstash server 只处理一部分,由同一个ES集群进行处理,
kibana压力大也可以做多个kibana
如果有多个ES主机,我们请求应该找哪个主机,多个ES主机,可能每台只持有一部分,请求来,ES如何处理请求
有两个节点组成集群,两个分片 get-togerther 都有主分片和副本分片,如果用户请求发给1节点,node1节点有一部分数据,node2节点也有一部分数据,主分片能读能写,副本分片是只读的
对ES来讲每一个节点都能接受所有请求,无论是读还是写,收到请求有可能一部分是本地处理,代理一部分是其他主机处理,类似redis cluster 无中心节点,任何一个 主机都可以接受所有请求
ES会监听在两个端口上
搜索服务:
9200/tcp 对外提供服务
集群服务:
9300/tcp,集群服务判定的
els集群的工作逻辑:
多播、单播:9300/tcp 探测成员关系,(如何判定这个是当前集群成员,clustername )
关键因素:clustername 集群名称,集群名称相同都处在都一个集群
所有节点选举一个主节点,负责管理整个集群的状态(green/yellow/red),以及各shards的分布方式;
(为了确定整个集群没有问题还需要一个主节点,来负责整个集群状态管理
集群起来以后,各节点要周期汇报是否可用 心跳探测,任何节点不可用的时候,故障都需要处理)
集群工作是在9300端口
插件:
现在node1,node2,node3,所有分布式系统,时间必须同步,ES是java研发,非常消耗内存,较新版本的ES依赖8版本的JDK
node2,,3都安装
同一个集群,使用/etc/hosts是比较妥当的
非常耗内存,建议启用一个节点即可
https://www.elastic.co/cn/downloads/elasticsearch
复制到其他节点上
三个节点安装 elasticsearch ElasticSearch 5的程序环境:
配置文件:
/etc/elasticsearch/elasticsearch.yml 主配置文件
/etc/elasticsearch/jvm.options
/etc/elasticsearch/log4j2.properties
Unit File:elasticsearch.service(打开的文件数量可能要很多,后面可能要修改ulimit)
程序文件:
/usr/share/elasticsearch/bin/elasticsearch 敏感配置信息,比如账号密码,可以放到keystore加密文件中
/usr/share/elasticsearch/bin/elasticsearch-keystore:
/usr/share/elasticsearch/bin/elasticsearch-plugin:管理插件程序
**cluster name集群名字
node.name:node 节点名称
node.attr.rackL: r1 也可以+当前节点自定义属性,将来可以引用
path data存放索引路径最好是个raid0
path.logs 日志文件需要自己定义 **
**确保ES起来后有那么多内存可用
boot strap.memory_lock:true不管要不要,都分配那么多
当前的ELS节点监听在哪个地址端口上 默认是本机所有地址,9200端口
服务器至少有4个网卡,建议只监听内网
**
如何去判断成员关系,是单播,zen是els判定成员关系的协议,ping来探测,避免仅靠集群名称来判断成员关系了
既然有三个节点,一旦脑裂该如何,
避免脑裂,来定义法定票数2
把配置文件复制到其他节点上
修改节点名称
主配置文件OK了,还有两个配置文件jvm,log4j2
初始化堆内存,
最大堆内存大小
另外两个节点由于内存不足,应该修改修改
node2,,3一样
1G可能不够用,会消耗swap
创建目录,修改权限
3个节点都这么做
启动服务
默认监听地址是127,需要修改
node2也需要修改地址
查看日志
超时
重启服务就成功了,node2也需要重启
和els交互需要使用curl命令来实现
内部有一个cat可以输出集群信息的
当前集群叫myels,处于green状态,pretty可以加查询符号,美观一点,?pretty=?pretty=true
带*号的是主节点
当前堆内存多大,使用了真正多少,cpu占用量,一分钟负载,5分钟负载,15分钟评价负载,节点角色,是否master ,节点名称
查看插件,
想要知道内部有几个索引
自定义显示那些信息
不同节点运行是当前节点名
list列出已经安装的插件
install可以安装插件,想用插件就克隆到本地来,
到了第5版需要以独立守护来运行
https://github.com/mobz/elasticsearch-headhttps://github.com/mobz/elasticsearch-head.git
安装npm 之后一定要在目录下运行命令
监听在9100端口
链接不上是因为对应默认的,elasticsearch 是有一个插件功能,http启动起来https://www.elastic.co/guide/en/elasticsearch/reference/5.5/modules-http.html
默认false需要改成enable
加一段http
添加一个文档编号1,
索引名students
major类型名
显示有一个索引叫students
由5个分片,每一个分片有两个副本,一般而言让你的分片数量等于节点数量
再添加一个用户
没写查询条件,把所有的查出来了
找一找有没有剑法字符串的