linux环境 [ubuntu、麒麟等系统] 安装配置Elasticsearch分布式存储集群及配置
简介及应用场景
- Elasticsearch (简称ES)是一个基于Lucene构建的开源、分布式、RESTful 接口全文搜索引擎。Elasticsearch还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它可以在很短的时间内在存储、搜索和分析大量的数据。 它通常作为具有复杂搜索场景情况下的核心发动机。ES是由java语言编写的。
- 应用场景,大型分布式日志分析系统 ELK elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据)。
大型电商商品搜索系统、网盘搜索引擎等,主要用于大数据收集。
一、使用离线rpm方式安装
上传zip包到linux安装大家都会,我这里就不多说了;
elasticsearch简称es服务,es服务安装需要jdk环境,需要jdk1.8及以上,我这里已经装好jdk;
我这里使用的是离线安装,上传的rpm源安装,把rpm源上传到服务器,使用rpm -ivh rpm文件名称,如下图:
安装顺序如下:
先安装 elasticsearch-lib-xxx.rpm
再安装 elasticsearch-systemd-xxx.rpm
最后安装 elasticsearch-5.6.8-1.x86_64.rpm
大部分操作系统rpm安装好后,目录结构如下图所示:
type | path |
---|---|
home | /usr/share/elasticsearch/ |
bin | /usr/share/elasticsearch/bin/ |
config(file) | /etc/elasticsearch/ |
config(env) | /etc/sysconfig/elasticsearch |
data | /var/lib/elasticsearch/ |
logs | /var/log/elasticsearch/ |
plugins | /usr/share/elasticsearch/plugins |
Elasticsearch用户及目录权限样式
使用rpm安装的es服务,已自动创建 用户:elasticsearch 用户组:elasticsearch 我们就不用重新创建用户了!
目录权限样式如下图
二、使用zip压缩包方式安装
直接上传zip包到想要安装的目录,直接解压后即可,解压目录如下:
Elasticsearch用户及目录权限样式
使用zip方式安装需要创建es用户,因为es服务不能使用root用户启动,这是出于系统安全考虑设置的条件。
由于es服务可以接收用户输入的脚本并且执行,为了系统安全考虑,建议创建一个单独的用户用来运行Elasticsearch,如下图所示,创建es用户组和es用户并授权解压后的文件夹:
创建用户组:groupadd es
创建用户并把该用户加入刚创建的组内:useradd es -g es -p es
将文件夹授权给刚创建的用户:chown -R es:es /usr/local/elasticsearch-5.6.8
三、集群配置信息,如需要单机配置以下 [192.168.80.130] 对应配置即可
(1)master [192.168.80.130] elasticsearch.yml
# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称,单机版可不设置默认即可
node.name: node-130
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置,单机版可不设置默认即可
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过,单机版可不设置默认即可
http.cors.allow-origin: "*"
#作为master节点,单机版可不设置默认即可
node.master: true
#是否存储数据,单机版可不设置默认即可
node.data: false
#设置节点 访问的地址 设置master所在机器的ip,单机版可不设置默认即可
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]
(2)node [192.168.80.131] elasticsearch.yml
# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称
node.name: node-131
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过
http.cors.allow-origin: "*"
#作为master节点
node.master: false
#是否存储数据
node.data: true
#设置节点 访问的地址 设置master所在机器的ip
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]
(3)node [192.168.80.132] elasticsearch.yml
# 集群名称 所有节点要相同
cluster.name: my-elasticsearch
# 本节点名称
node.name: node-132
------------------NetWork----------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。
network.bind_host: 0.0.0.0
# 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
network.publish_host: 0.0.0.0
# 这个参数是用来同时设置bind_host和publish_host上面两个参数,默认默认为0.0.0.0
network.host: 0.0.0.0
# 对外访问的http端口,默认9200
http.port: 9200
# head插件设置
http.cors.enabled: true
#设置可以访问的ip 这里全部设置通过
http.cors.allow-origin: "*"
#作为master节点
node.master: false
#是否存储数据
node.data: true
#设置节点 访问的地址 设置master所在机器的ip
discovery.zen.ping.unicast.hosts: ["192.168.80.130"]
四、启动Elasticsearch
进入master、node服务器进行相应的启动与停止
1.使用rpm安装的启动方式:
#使用root用户设置elasticsearch开启自启
systemctl enable elasticsearch.service
#使用root用户启动elasticsearch
systemctl start elasticsearch.service
#使用root用户查看启动状态、查看启动进程
systemctl status elasticsearch.service
#使用root用户停止服务
systemctl stop elasticsearch.service
ps -ef|grep elasticsearch
# 或者查看es服务启动日志文件
cd /usr/share/elasticsearch/logs
tail -f elasticsearch.log
2.使用zip压缩包安装的启动方式:
#切换为zip解压后创建的es用户启动
su es
#使用es用户,进入解压后的目录bin文件夹,使用./或者sh后台启动es服务如下:-d代表后台启动
cd /usr/local/elasticsearch-5.6.8/bin
./elasticsearch -d
# 查看es服务进程
ps -ef|grep elasticsearch
# 停止es服务进程
kill -9 进程号
# 或者查看es服务日志文件
cd /usr/local/elasticsearch-5.6.8/logs
tail -f elasticsearch.log
五、Elasticearch解释
Elasticsearch集群中有的节点一般有三种角色:master node、data node和client node。
- master node——master节点点主要用于元数据(metadata)的处理,比如索引的新增、删除、分片分配等。
- client node——client 节点起到路由请求的作用,实际上可以看做负载均衡器。
- data node——data 节点上保存了数据分片。它负责数据相关操作,比如分片的CRUD,以及搜索和整合操作。这些操作都比较消耗 CPU、内存和 I/O 资源;
定义发现的节点:
注意,分布式系统整个集群节点个数N要为奇数个!!!
discovery.zen.ping.unicast.hosts:["192.168.80.130:9300", "192.168.80.131:9300", "192.168.80.132:9300"]
是否参与master选举和是否存储数据
#node.master: true
#node.data: true
分片数和副本数
#index.number_of_shards: 5
#index.number_of_replicas: 1
六、Elasticsearch集群是如何工作的?
elasticsearch集群一旦建立起来以后,会选举出一个master,其他都为slave节点。
但是具体操作的时候,每个节点都提供写和读的操作。就是说,你不论往哪个节点中做写操作,这个数据也会分配到集群上的所有节点中。
七、常见错误
异常1
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决方案
# 编辑limits.conf文件,添加以下两行即可解决
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
异常2
max number of threads [3818] for user [admin] is too low, increase to at least [4096]
解决方案
# 编辑limits.conf文件,添加以下两行即可解决
vim /etc/security/limits.conf
* soft nproc 4096
* hard nproc 4096
异常3
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方案
# 编辑sysctl.conf文件,添加以下一行即可解决,注意,这里配置完之后需要重启一下linux,否则不一定起效果
vim /etc/sysctl.conf
vm.max_map_count=262144
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78205.html