ElasticSearch目前最新版是7.7.0,其中部署的细节和以前的6.x有不少的不一样,因此这里单独拉出来写一下,但愿对用7.x的童鞋有一些帮助,而后部署完ES后配套的kibana也是7.7.0,这个就简单了放到最后说,下面先进入ES 7.7.0的部署. node
首先是下载es的安装包,官网下载便可,我这里的包是:elasticsearch-7.7.0-linux-x86_64.tar.gz,准备安装位置:/opt/elasticsearch,其实每一个节点操做都是同样的,我这里再也不详细叙述每一个机器的细节,而只是写通用的配置,第一步就是解压包到指定的位置:linux
tar -xvzf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /opt cd /opt ln -s elasticsearch-7.7.0 elasticsearch cd elasticsearch
上面作个软连接就是为了管理多个版本方便,老的版本不用删除,每次进目录直接cd到/opt/elasticsearch就能够了,这个根据本身的习惯来就能够git
进入目录后首先仍是修改ES的主配置文件:config/elasticsearch.yml,依次来看下面的配置项:github
cluster.name这个和以前同样配置集群名称,我这里配置为:cluster.name: es-clustershell
node.name 配置节点的名称,通常和主机名同样,或者本身定义一个集群中惟一的标识,我这和主机名不一样,第一个节点配置为:node.name: cloud-1,后面的节点以此类推就是cloud-2,cloud-3等等bootstrap
path.data 索引和数据存储目录,支持配置多个,通常状况下是1个,我这里配置为:path.data: /data/elasticsearchcentos
path.logs 日志存储目录,我这里默认注释,让日志打在/opt/elasticsearch/logs下面,默认解压出来就有这个logs目录浏览器
bootstrap.memory_lock 是否锁定内存,默认是注释的,这里建议打开,让es锁定jvm heap不被抢占,我这里配置是:bootstrap.memory_lock: true,可是这里还要开启另外的容许锁定内存的内核参数,这个待会再说明安全
network.host 配置es绑定主机的ip地址,能够设置为当前实际的ip,若是有多个网卡都想绑定的话,能够设置为:0.0.0.0,这样每一个机器都同样便可,network.host: 0.0.0.0app
http.port 配置http的端口号,默认9200,若是不修改能够不打开
transport.port 配置tcp的端口号,默认是9300,这个配置项不存在,若是修改须要本身添加,这个在es 6.x中配置项为:transport.tcp.port注意这个变化
discovery.seed_hosts 这个配置集群中的主机列表,以便可以在es启动的时候进行通讯,而且为主机发现提供种子,这个通讯使用的端口为tcp端口也就是transport.port配置的端口,默认的话能够不加端口,能够配置多个ip地址或者主机名均可以,若是有多个网卡这里要配置带宽高的,以便在集群中实现更快速的通讯,官网给出的配置示例以下:
这个参数在6.x中的配置为:discovery.zen.ping.unicast.hosts,将来会被废弃,要使用这个新的名称,可是含义是同样的
cluster.initial_master_nodes 这个配置启动全新的集群时,那些节点能够做为master节点进行选票,其实默认不配置es也能够自动选举,可是这样是不安全的,因此须要配置一部分能够做为master节点的机器,以前的node.master其实能够不用配置了,另外防止脑裂的节点个数配置也去掉了,要注意:这里配置的不是主机名和ip,而是节点名称,是前面node.name中配置的名称,务必注意.
简单地配置就是以上这些,具体还有不少配置须要根据须要参考文档,下面将刚才的配置整理以下:
cluster.name: es-cluster
node.name: cloud-1
path.data: /data/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
transport.port: 9300
discovery.seed_hosts: ["cloud1", "cloud2", "cloud3", "cloud4", "cloud5", "cloud6"]
cluster.initial_master_nodes: ["cloud-1", "cloud-2", "cloud-3"]
而后保存并退出,其实每一个机器不一样的地方只有node.name须要修改,若是network.host配置0.0.0.0则每一个机器都不用改
而后配置jvm heap大小,配置文件:config/jvm.options
注意这里不要超过jvm长指针临界空间的大小,最大不超过32G,可是实际上根据不一样机器有所变化,正常最大配置26G是安全的,在启动的时候日志中会有输出:
只要上面显示true则表示启用了压缩指针,对于实际的机器能够反复的修改调试找到一个合理的临界值.
修改完jvm配置后es就算基本配置完毕了,接下来就是要把整个安装目录发送到各个其余的节点并修改对应的node.name配置,
而后全部机器都要按照下面的操做配置内核参数:
1. 最大文件数
es要求文件数最小为65536,查看当前文件数命令为: ulimit -n ,调大文件数能够修改配置文件:/etc/security/limits.conf,添加以下配置:
* soft nofile 666666 * hard nofile 999999
保存配置后,从新登陆shell便可生效,能够再次经过上面的命令确认一下
2. 内核参数max_map_count
es要求max_map_count虚拟内存区域数量至少为262144,而默认操做系统的值都为:65536,所以也须要设置一下不然会报错,临时设置命令以下:
sysctl vm.max_map_count=2560000
这样设置重启机器参数值会还原因此还须要编辑/etc/sysctl.conf添加配置 vm.max_map_count=2560000 而且保存便可永久生效
3. 容许锁定内存
刚才配置文件设置了bootstrap.memory_lock为true,可是默认操做系统不容许用户程序锁定内存,所以还须要配置解除限制,配置文件一样是/etc/security/limits.conf,须要在其中添加:
elastic soft memlock unlimited
elastic hard memlock unlimited
第一列elastic是es的用户,这个待会会建立,要保证和这里的一致,unlimited表示不限制锁定内存的大小,保存配置待会切换到elastic用户便可自动生效
4. 配置内存交换倾向
若是没有交换分区则能够忽略这个配置,若是有交换分区的话并不建议彻底禁用,由于在系统内存占用很是大的时候能够经过临时交换到磁盘而避免系统崩溃,可是能够经过调整交换倾向让系统尽量的少使用交换分区,这个参数经过vm.swappiness进行配置在redhat/centos 7.x中这个值默认为60,比较大建议设置为1~10,临时修改一样使用: sysctl vm.swappiness=1 ,永久修改一样是改配置文件,这个参数在redhat/centos 8.x默认会根据机器配置调整,有可能已经就是10了,因此只须要看一下,有可能不用修改.
注意上面4个参数在每一个节点都要配置,配置完参数下面须要在每一个节点建立数据目录和用户并受权:
# 建立数据目录 mkdir /data/elasticsearch # 建立用户 useradd elastic # 设置密码 根据提示输入两次 passwd elastic # 进入es安装目录修改权限 chown -R elastic:elastic jdk config logs /data/elasticsearch
值得注意的是7.7版本的es安装包中已经有jdk环境了用的是AdoptOpenJDK,版本为最新的14,也就是说机器无需安装jdk环境就可使用es,上面四个目录是必需要受权的,jdk目录若是不受权启动es的时候会提示没法执行文件也就是没有权限,为了方便也能够直接给整个目录加上权限.
最后就是在每一个节点启动es了,
su - elastic cd /opt/elasticsearch bin/elasticsearch -d
启动以后jps肯定进程Elasticsearch正常存在,全部节点都启动后经过 curl 'localhost:9200/_cat/nodes?v' 确认当前的节点列表是否正常
如今es集群就部署完毕了,接下来能够部署一下es经常使用的管理界面kibana,这个基本部署特别简单,首先仍是下载最新的7.7.0安装包而后解压:
tar -xvzf kibana-7.7.0-linux-x86_64.tar.gz mv kibana-7.7.0-linux-x86_64 /opt/kibana-7.7.0 cd /opt/kibana-7.7.0
而后编辑配置文件,这里简单介绍一下基本的配置:
server.port kibana服务的端口号,默认是5601
server.host kibana绑定的ip,这里能够写实际的ip也能够写0.0.0.0绑定全部的网卡
server.name kibana的名称,这个用于界面显示,自定义便可
elasticsearch.hosts 须要链接的es集群主机列表,这个最好填写完整的集群节点,每一个节点内容是:http://host:port
kibana.index kibana进行相关的界面显示须要将一些数据存放到es中,这个为es中建立索引名的前缀,默认为:.kibana
kibana.defaultAppId 默认的应用程序,默认是:home
基本的配置就是上面这些,另外还有更多详细的参数配置,好比ES集群链接的超时参数等等,这些详细的配置须要参考文档调整,目前只是一个简单地配置和使用,上面配置整理以下:
server.port: 5601 server.host: "0.0.0.0" server.name: "cloud1" elasticsearch.hosts: ["http://cloud1:9200", "http://cloud2:9200","http://cloud3:9200", "http://cloud4:9200", "http://cloud5:9200", "http://cloud6:9200"] kibana.index: ".kibana" kibana.defaultAppId: "home"
配置保存以后就能够启动kibana服务了,须要注意kibana也须要用特定的用户启动,若是用root用户直接启动会给出提示,能够添加--allow-root强制启动,启动命令为: bin/kibana --allow-root ,启动以后可能会有几个警告,能够先不用关心,等启动完毕能够经过浏览器输入http://ip:5601进入kibana的界面,具体界面的使用这里就再也不详细的叙述了
上面就是ElasticSearch+kibana组合的简单部署,若是以为kibana过重量也能够尝试一下cerebro这个轻量的es管理工具,github连接为:https://github.com/lmenezes/cerebro,另外有关于ES的其余问题欢迎一块儿交流.