目录
- 一、elasticsearch实战
- 1.elasticsearch介绍
- 2. 下载地址
- 3. 安装及设置
- 4 插件安装
- 5. 从节点安装配置
- 6. elasticsearch节点角色
- 7. 节点优化
一、elasticsearch实战
1.elasticsearch介绍
1.简介
2.基础模块
cluster | 管理集群状态,维护集群层面的配置信息 |
alloction | 封装了分片相关的功能和策略 |
discovery | 发现集群中的节点,以及选举主节点 |
gateway | 对收到master广播下来的集群状态数据的持久化存储 |
indices | 管理全局级的索引设置 |
http | 允许通过JSON over HTTP的方式访问ES的API |
transport | 用于集群内节点之间的内部通信 |
engine | 封装了对Lucene的操作及translog的调用 |
3.应用场景
- 信息检索
- 日志分析
- 业务数据分析
- 数据库加速
- 运维指标监控
2. 下载地址
elastic的中文社区下载地址:https://elasticsearch.cn/download/
3. 安装及设置
[root@node1 ~]# rpm -ivh elasticsearch-7.6.1-x86_64.rpm
(1)主配置文件修改:
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
[root@node1 ~]# vim /etc/security/limits.conf
[root@node1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
重载并启动服务:
systemctl daemon-reload
systemctl start elasticsearch
查看一下端口:
4 插件安装
1.下载elastic-head插件:
[root@node1 ~]#wget https://github.com/mobz/elasticsearch-head/archive/v5.0.0.zip
[root@node1 ~]#unzip v5.0.0.zip
2.head插件本质上是一个nodejs的工程,因此需要安装node:
[root@node1 ~]#wget https://mirrors.tuna.tsinghua.edu.cn/nodesource/rpm_9.x/el/7/x86_64/nodejs-9.11.2-1nodesource.x86_64.rpm #下载
[root@node1 ~]#rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm #安装
[root@node1 ~]#node -v
[root@node1 ~]#npm -v
3.更换npm源安装elastic插件:
[root@node1 elasticsearch-head-5.0.0]# npm install --registry=https://registry.npm.taobao.org #期间会自动下载phantomjs,为了速度快,提前下载好phantomjs-2.1.1-linux-x86_64.tar.bz2
phantomjs运行:
[root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64
[root@node1 phantomjs-2.1.1-linux-x86_64]# ls
bin ChangeLog examples LICENSE.BSD README.md third-party.txt
[root@node1 phantomjs-2.1.1-linux-x86_64]# cd bin/
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin/ #做一个链接
[root@node1 bin]# ll /usr/local/bin/phantomjs
-rwxr-xr-x 1 root root 67932064 Mar 17 09:34 /usr/local/bin/phantomjs
[root@node1 bin]# cd ~
[root@node1 ~]# phantomjs #第一次运行不起来,缺东西
phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory
[root@node1 ~]# yum provides */libfontconfig.so.1 #查看缺少的文件是由什么提供的
[root@node1 ~]# yum install -y fontconfig-2.13.0-4.3.el7.x86_64 #安装
[root@node1 ~]# phantomjs #成功运行
phantomjs>
3.再次安装elastic插件:
[root@node1 elasticsearch-head-5.0.0]# npm install --registry=https://registry.taobao.org #再次更换源安装elasticsearch
4打入后台运行:
[root@node1 elasticsearch-head-5.0.0]# npm run start &
[1] 4357
[root@node1 elasticsearch-head-5.0.0]#
> elasticsearch-head@0.0.0 start /root/elasticsearch-head-5.0.0
> grunt server
(node:4367) ExperimentalWarning: The http2 module is an experimental API.
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
5.浏览器中输入:
http://172.25.7.131:9100
刚开始显示的是localhost:9100,最好该一下端口
[root@node1 elasticsearch-head-5.0.0]# vim _site/app.js
4354行: http://localhost:9100----> http://172.25.7.131:9100
[root@node1 elasticsearch-head-5.0.0]# npm run start & #重新运行
浏览器中再次登录,未连接,
再次查看:
5. 从节点安装配置
1.更改限制内存大小:
[root@node3 ~]# vim /etc/elasticsearch/jvm.options
-Xms256M
-Xmx256M
2.systemd服务:
[root@node3 ~]# vim /usr/lib/systemd/system/elasticsearch.service
LimitMEMLOCK=infinity #添加这句
3.禁用swap分区:
[root@node3 ~]# swapoff -a
[root@node3 ~]# vim /etc/fstab
#/dev/mapper/rhel-swap swap swap defaults 0 0 #注释掉
[root@node3 ~]# echo 1 > /proc/sys/vm/swappiness
4.安全限制:
[root@node3 elasticsearch]# vim /etc/security/limits.conf
elasticsearch - nofile 65535
elasticsearch - nproc 4096
elasticsearch - soft memlock unlimited
elasticsearch - hard memlock unlimited
5.主配置文件修改:
[root@node3 elasticsearch]# vim /etc/elasticsearch/elasticsearch.yml
6.启动服务:
[root@node3 elasticsearch]# systemctl daemon-reload
[root@node3 elasticsearch]# systemctl start elasticsearch
三个节点安装配置完,刷新浏览器:
6. elasticsearch节点角色
Master | 主要负责集群中索引的创建,删除以及数据的rebalance等操作。master不负责数据的索引和检索,所以负载较轻。当master节点失联或者刮掉的时候,ES集群会自动从其他节点选举出一个Leader |
Data Node | 主要负责集群中数据的检索和索引,一般压力较大 |
Coordinating Node | 原来的Client node的,主要功能是用来分发请求和合并结果的。所有节点默认就是Coordinating node,且不能关闭该属性 |
ingest | 专门对索引文档处理做 |
7. 节点优化
写进/etc/elasticsearch/elasticsearch.yml文件:
五钟组合方式
(1)第一种组合(默认)
node.master: true
node.data: true
node.ingest: true
search.remote.connect: true
这种组合表示这个节点既有成为主节点的资格,又存储数据。如果这个节点被选举成为了真正的节点,那么它还要存储数据,这样对于这个节点的压力就比较大了。
测试环境下这样做,但实际工作中:
不建议这样设置
(2)第二种组合(Data node)
node.master: false
node.data: true
node.ingest: false
search.remote.connect: false
这样组合表示这个节点没有资格成为主节点,只会存储数据。这个节点称为数据节点,在集群中需要单独设置几个这样的节点负责存储数据,后期提供存储和查询服务。
(3)第三种组合(master node)
node.master: true
node.data: false
node.ingest: false
search.remote.connect: false
此节点不会存储数据,有资格被选为主节点
(4)第四种组合后(Coordinating node)
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false
此节点的意义是作为一个协调节点,主要是针对海量请求的时候可以进行负载均衡。
它不会成为主节点,也不会存储数据
(5)第五种组合(Ingest node)
node.master: false
node.data: false
node.ingest: true
search.remote.connect: false
此节点是ingest节点,对索引的文档做预处理。
不会成为主节点,也不会存储数据
生产环境中对这些节点的职责进行划分:
- 建议集群中设置三台以上的的节点作为master节点,这些节点只负责成为主节点,维护整个集群的状态。数量保持奇数。
- 再设置一批data节点,这些节点只负责存储数据,后期提供建立索引和查询索引的服务,这样的话如果用户请求比较频繁,这些节点的压力也比较大
- 所以在集群中再设置一些协调节点,这些节点只负责处理用户请求,实现请求转发,负载均衡等功能。
节点需求:
- master节点: 普通服务器即可(内存,cpu消耗一般)
- data节点: 主要消耗磁盘,内存
path.data:data1,data2,data3
这样配置可能导致数据写入不均,建议制定一个数据路径,磁盘卡可以使用radio阵列,而不需要高成本的ssd - Coordinating节点:对cpu,memory要求较高