一 常用概念
-
Elastic Stack 四大金刚
- ElasticSearch 基于json的分布式搜索和分析引擎
- Logstash 动态数据收集管道,生态丰富 采集日志到es中 基于jvm
- Kibana 提供数据可视化界面
- Beats 轻量级的数据采集器 采集日志到es中 功能和 logstash类似 但比logstash轻量 基于go开发
二 安装
2.1 安装jdk
es的安装依赖jdk 并且不同的es版本对jdk版本的要求是不一样的 es提供了一个jvm的兼容性列表 链接如下:https://www.elastic.co/cn/support/matrix 其最低要求是jdk1.8
2.2 ES 安装
单节点安装
# 下载地址 下载对应系统的版本即可
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
# 单节点启动 直接在 bin目录下执行 -d 表示后台启动 默认端口是9200
./elasticsearch -d
ES安装包文件夹说明
#es安装包解压后包括如下几个文件夹
bin #存放二进制文件 可执行脚本
config #配置文件目录 如es的配置 jvm配置等
lib #存放的是es的第三方依赖
data #存放es数据的目录
logs #默认的日志存储路径
modules #包含es所有的模块
plugins #已经安装的插件的目录
jdk/jak.app #es7.0x以后 自带的jdk目录 在windows下是jdk 在mac下是jdk.app
集群安装
# 第一步将es安装包拷贝3份(本次集群只做3个节点)
cp -r elasticsearch-7.10.0 es-node1
cp -r elasticsearch-7.10.0 es-node2
cp -r elasticsearch-7.10.0 es-node3
# 第二步修改配置文件 主要修改 cluster.name、node.name、path.data、path.logs、
# network.host、http.port、transport.tcp.port、discovery.seed_hosts、cluster.initial_master_nodes
# 具体的配置见后面
vim elasticsearch.yml
# 第三步 拷贝es-node1的配置 并修改 node.name、path.data、path.logs、http.port、transport.tcp.port
# 第四步 分别执行 ./elasticsearch -d 后台启动es 然后查看对应logs文件夹下的 ${cluster.name}.log文件 ${cluster.name}替换为真正的集群名称 如果看到started 即表名 es正常启动了
# 第五步 网页验证 通过请求 http://localhost:9200 http://localhost:9201 http://localhost:9202 能看到正确的响应即可
# 也可以执行 http://localhost:9202/_cat/health?v 去查看集群的状态
es集群配置
# 集群名称 同一个集群名称要一样
cluster.name: es-test
# 节点的名称
node.name: node-1
# 是否有资格作为主节点 可以不配置
#node.master: true
# 是否存储数据 可以不配置
# node.data: true
# 最大的存储节点数 可以不配
#node.max_local_storage_nodes: 3
# 数据存储路径 如果是一台机器部署多节点 则要改es-node1 不同的节点的数据存不同的文件夹 日志也一样
path.data: /usr/local/es-node1/data
# 日志存储路径
path.logs: /usr/local/es-node1/logs
# 网关地址 改成0.0.0.0 如果配置特定ip就只能访问这个ip
network.host: 0.0.0.0
# web端口 一台机器部署多节点的话 不同的节点要不一样
http.port: 9200
#内部节点之间通信端口 一台机器部署多节点的话 不同的节点要不一样
transport.tcp.port: 9300
# 写入候选主节点的地址 端口为内部通信端口
discovery.seed_hosts: ["localhost:9300", "localhost:9400", "localhost:9500"]
# es7.x之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
bootstrap.system_call_filter: false
# 开启允许跨域访问
http.cors.allow-origin: "*"
http.cors.enabled: true
http.cors.allow-headers : X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true
安装博客地址
#es集群安装也可以参考这篇博客
https://www.cnblogs.com/chenyanbin/p/13493920.html
2.3 安装ES Head
-
安装nodejs
es-head 是一个es插件 可以理解为kibana的简化版 安装es-head之前要先安装nodejs nodejs 的下载地址 https://nodejs.org/en/download/ 可以用 node -v 命令来查看nodejs 是否安装成功
-
安装grunt
可以通过 npm install -g grunt-cli 命令来安装grunt 然后通过 grunt -version命令来检查是否安装成功
-
安装es-head
依赖安装完成后 在github上下载es-head插件 地址如下 https://github.com/mobz/elasticsearch-head
1、下载es-head并解压
2、修改Gruntfile.js文件 在connect节点下加入 hostname: '*' 下面是Gruntfile.js调整后的样子connect: { server: { options: { // 加入hostname hostname: '*', port: 9100, base: '.', keepalive: true } } }
3、进入es-head目录 执行 sudo npm install 安装es-head 如果不用sudo 可能会报错
4、然后再es-head的目录下 执行npm run start 来启动es-head
5、如果发现无法连接es节点 可以尝试在es的配置文件(elasticsearch.yml)中设置允许跨域访问的配置http.cors.allow-origin: "*" http.cors.enabled: true
6、也可以利用google浏览器安装的es-head的插件
2.4 安装kibana
#kibana官网下载地址
https://www.elastic.co/cn/downloads/kibana
#修改配置文件 config/kibana.yml 详细配置见下面
#启动kibana ./bin/kibana 即可
#访问http://localhost:5601 能够访问通即表明kibana已经启动成功了
kibana配置 kibana的更详细的配置解释可以参考
https://www.elastic.co/guide/cn/kibana/current/settings.html
#默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。
server.port: 5601
#默认值: "localhost" 指定后端服务器的主机地址。
server.host: "localhost"
#如果启用了代理,指定 Kibana 的路径,该配置项只影响 Kibana 生成的 URLs,转发请求到 Kibana 时代理会移除基础路径值,该配置项不能以斜杠 (/)结尾
#server.basePath: ""
#默认值: 1048576 服务器请求的最大负载,单位字节
server.maxPayloadBytes: 1048576
#默认值: "您的主机名" Kibana 实例对外展示的名称。
server.name: "kibanae"
#默认值: "/app/kibana" Kibana 的默认路径,该配置项可改变 Kibana 的登录页面
#server.defaultRoute: "/app/kibana"
#默认值: "http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。
elasticsearch.url: ["http://localhost:9200", "http://localhost:9201", "http://localhost:9202"]
#默认值: ".kibana" Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引
kibana.index: ".kibana"
#默认值: "home" 默认加载的应用
kibana.defaultAppId: "home"
#指定 Kibana 的进程 ID 文件的路径。
pid.file: xx
#默认值: stdout 指定 Kibana 日志输出的文件
logging.dest: stdout
#默认值: false 该值设为 true 时,禁止所有日志输出
logging.silent: false
Kibana安装过程中遇到的问题
#错误信息: Kibana server is not ready yet
#可能的原因 # 1、Kibana与Es版本不一致
# 2、检查kibana配置文件的elasticsearch.hosts属性中配置的es地址是否正确
# 3、es的配置中elasticsearch.yaml是否开启了允许跨域访问
# 4、防火墙是否关闭
# 5、es所在磁盘空间不足百分之90%(切记是es所在服务器的磁盘空间)
三 ES集群健康值检查
如何判断ES集群是否正常?
- (1) 利用es-head
- 如果集群健康状态为绿色 则表示集群正常 所有的Primary分片 和 Replica分片都是active状态
- 如果集群健康状态为黄色 则表示至少有一个Replica不可用 但是所有的主分片都是active的
- 如果集群健康状态为红色 则表示至少有一个Primary分片不可用
需要注意的是 es主节点(五角星标注的节点) 不负责具体的读写 只是负载调度 工作节点(圆圈标注的节点)才是干活的 主分片 不一定在主节点上 主分片是可读可写的 在下面的截图中加粗的边框标注的分片为主分片 (Primary分片) 不加错的 为备份分片(Replica分片) 备份分片只读不写
- (2) 利用api
- _cat/health
这个api可以查看es的健康状况 具体的用法如下: 可以在kibana中使用 GET _cat/health?v 来查看 也可以直接在浏览器中输入 http://localhost:9200/_cat/health?v 来查看 路径后面加v可以查看每个参数的含义
- _cluster/health
这个api与_cat/health一样 也可以查看集群的健康状况 显示也更加友好 同样也可以通过 http://localhost:9200/_cluster/health
网友评论