ElasticSearch (一) : ES 安装 与 kibana 安装
ElasticSearch (一) : ES 安装 与 kibana 安装
1、ElasticSearch集群安装
一、环境选择
ElasticSearch 集群安装依赖JDK,本文的ElasticSearch版本为6.5.4,对应的Kibana也是6.5.4,这里顺便说下Kibana的版本最好不要低于ElasticSearch的版本,JDK的版本为1.8。
下载地址:
ElasticSearch-6.5.4: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
Kibana-6.5.4: https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz
JDK1.8 : http://www.oracle.com/technetwork/java/javase/downloads
ES集群安装服务器说明:
二、Linux配置
在安装ElasticSearch之前,我们需要对Linux的环境做一些调整,防止在后续过程中出现一些问题!
1、修改最大内存限制
修改sysctl.conf文件
vim /etc/sysctl.conf
在末尾增加如下配置:
vm.max_map_count = 655360
vm.swappiness=1
然后保存退出,输入以下命令使其生效
sysctl -p
如果提示找不到 sysctl 命令, 到 /usr/sbin/sysctl -p 下面执行 或使用 whereis sysctl 查找命令的路径

2、修改最大线程个数
修改 /etc/security/limits.d 下的 *-nproc.conf 文件(Linux版本的原因先进入到文件夹下,查看名字后在修改,名字可能不同。)
cd /etc/security/limits.d
vim 20-nproc.conf
// 修改如下
* soft nproc 4096
3、修改最大打开文件个数、线程数
修改limits.conf
vim /etc/security/limits.conf
在末尾添加如下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
4、防火墙开放端口
开启端口:9200、9201、9300、9301
firewall-cmd --zone=public --add-port=9200/tcp --permanent
重启防火墙:
firewall-cmd --reload
查询有哪些端口是开启的:
firewall-cmd --list-port
三、JDK安装
参考: https://www.cnblogs.com/dw3306/p/14360518.html
四、ElasticSearch安装
1、文件准备
将下载好的 elasticsearch 文件上传并解压:
1.1、上传到 /usr/local/ 文件夹下,并解压
tar -zxvf elasticsearch-6.5.4.tar.gz
1.2、移动解压后的文件到 /usr/local/es-6.5.4/masternode 下(自动重命名masternode), 执行如下:
mkdir es-6.5.4
mv elasticsearch-6.5.4/ ./es-6.5.4/masternode
2、配置修改
因为 elasticsearch 需要在 非root的用户 下面操作,并且elasticsearch的文件夹的权限也为非root权限, 因此我们需要创建一个用户进行操作,我们创建一个 es 用户,并赋予该目录的权限。
命令如下:
adduser es
chown -R es:es /usr/local/es-6.5.4
这里我们顺便再来指定 ElasticSearch 数据 存放的路径地址,我们可以先使用 df -h 命令查看当前系统的盘主要的磁盘在哪,然后再确认数据存放的路径。 我这里直接在刚才移动后的masternode 目录下创建ElasticSearch数据的文件夹,这里的文件夹创建用我们刚刚创建好的用户去创建,切换到 es 用户,然后创建文件夹。
su es
cd /usr/local/es-6.5.4/masternode/
mkdir masterdata
主节点(master)配置
创建成功之后,我们先修改 masternode 节点的配置,修改完成之后在同级目录进行copy一下,名称为datanode,然后只需少许更改datanode节点的配置即可。这里我们要修改 elasticsearch.yml 和jvm.options 文件即可! 注意这里还是 es 用户!
2.1、修改 masternode 的 elasticsearch.yml 文件配置如下:
vim /usr/local/es-6.5.4/masternode/config/elasticsearch.yml
cluster.name: my-cluster
node.name: my-master
path.data: /usr/local/es-6.5.4/masternode/masterdata
path.logs: /usr/local/es-6.5.4/masternode/logs
network.host: 0.0.0.0
network.publish_host: 192.168.248.130
transport.tcp.port: 9301
http.port: 9201
discovery.zen.ping.unicast.hosts: ["192.168.248.130:9301","192.168.248.131:9301","192.168.248.132:9301"]
node.master: true
node.data: false
node.ingest: false
discovery.zen.minimum_master_nodes: 1
http.max_content_length: 1024mb
elasticsearch.yml文件参数配置说明:
-
cluster.name: 集群名称,同一集群的节点配置应该一致。es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
-
node.name: 该节点的名称。
-
path.data: 数据存放的路径。
-
path.logs: 日志存放的路径。
-
network.host: 设置ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。
-
network.publish_host: 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。
-
transport.tcp.port: 设置节点间交互的tcp端口,默认是9300。
-
http.port: 设置对外服务的http端口,默认为9200。
-
discovery.zen.ping.unicast.hosts: 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
-
node.master: 指定该节点是否有资格被选举成为node,默认是true。
-
node.data: 指定该节点是否存储索引数据,默认为true。
-
node.ingest: 指定该节点是否使用管道,默认为true。
-
index.number_of_shards: 设置默认索引分片个数,默认为5片。
-
index.number_of_replicas: 设置默认索引副本个数,默认为1个副本。
-
discovery.zen.minimum_master_nodes: 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)。
-
bootstrap.memory_lock: 设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,Linux下可以通过
ulimit -l unlimited
命令。 -
http.max_content_length: 设置内容的最大容量,默认100mb。
这里在顺便说下 ElasticSearch节点的属性:
-
node.master: true 并且 node.data: true
这种组合表示这个节点即有成为主节点的资格,又存储数据。
如果某个节点被选举成为了真正的主节点,那么他还要存储数据,这样对于这个节点的压力就比较大了。ElasticSearch默认每个节点都是这样的配置,在测试环境下这样做没问题。实际工作中建议不要这样设置,因为这样相当于主节点和数据节点的角色混合到一块了。 -
node.master: false 并且 node.data: true
这种组合表示这个节点没有成为主节点的资格,也就不参与选举,只会存储数据。 这个节点我们称为data(数据)节点。在集群中需要单独设置几个这样的节点负责存储数据,后期提供存储和查询服务。 -
node.master: true 并且 node.data: false
这种组合表示这个节点不会存储数据,有成为主节点的资格,可以参与选举,有可能成为真正的主节点,这个节点我们称为master节点。 -
node.master: false node.data: false
这种组合表示这个节点即不会成为主节点,也不会存储数据,这个节点的意义是作为一个client(客户端)节点,主要是针对海量请求的时候可以进行负载均衡。 -
node.ingest: true
执行预处理管道,不负责数据和集群相关的事物。
它在索引之前预处理文档,拦截文档的bulk和index请求,然后加以转换。
将文档传回给bulk和index API,用户可以定义一个管道,指定一系列的预处理器。
2.2、将 jvm.options配置 Xms 和 Xmx 改成 2G,配置如下:
vim /usr/local/es-6.5.4/masternode/config/jvm.options
-Xms2g
-Xmx2g
关于ElasticSearch更多配置可以参考ElasticSearch官方文档!
数据节点(datanode)配置
在配置完masternode节点的ElasticSearch之后,我们再来配置datanode节点的,我们将masternode复制一份改名为 nodedata,然后 简单更改一下即可。
命令如下:
cp -r /usr/local/es-6.5.4/masternode/ /usr/local/es-6.5.4/datanode
存放数据的文件夹重命名一下
cd datanode
mv masterdata/ ./data
修改 datanode 的 elasticsearch.yml 文件配置如下:
vim /usr/local/es-6.5.4/datanode/config/elasticsearch.yml
elasticsearch.yml :
cluster.name: my-cluster
node.name: data-node
path.data: /usr/local/es-6.5.4/datanode/data
path.logs: /usr/local/es-6.5.4/datanode/logs
network.host: 0.0.0.0
network.publish_host: 192.168.248.130
transport.tcp.port: 9300
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.248.130:9301","192.168.248.131:9301","192.168.248.132:9301"]
node.master: false
node.data: true
node.ingest: false
discovery.zen.minimum_master_nodes: 1
http.max_content_length: 1024mb
将 jvm.options 配置 Xms 和 Xmx 改成8G,配置如下:
vim /usr/local/es-6.5.4/datanode/config/jvm.options
-Xms8g
-Xmx8g
注:配置完成之后需要使用 ll 命令检查一下 masternode 和 datanode 权限是否属于 es 用户的,若不属于,可以使用 chown -R es:es + 路径 命令进行赋予权限。
上述配置完成之后,可以使用相同的方法在其他的机器在操作一次,或者使用 ftp 工具进行传输,又或者使用 scp 命令进行远程传输文件然后根据不同的机器进行不同的修改。
3、启动ElasticSearch
这里还是需要使用 es 用户来进行启动,每台机器的每个节点都需要进行操作!
输入:
su es
cd /usr/local/es-6.5.4/
./masternode/bin/elasticsearch -d
./datanode/bin/elasticsearch -d
启动成功之后,在浏览器上输入 ip:9200 或 ip:9201进行查看。
出现以下界面表示成功:
二、Kibana 安装
kinaba 安装只需要在一台机器上部署即可,直接通过root用户进行操作,需要注意的是 kinaba 需要和 ElasticSearch 服务器网络 ping通即可。
1,文件准备
将下载下来的 kibana-6.5.4-linux-x86_64.tar.gz 的配置文件进行解压
在linux上输入:
tar -zxvf kibana-6.5.4-linux-x86_64.tar.gz
然后将文件夹重命名为 kibana6.5.4
输入:
mv kibana-6.5.4-linux-x86_64 kibana6.5.4
2,配置修改
进入文件夹并修改kibana.yml配置文件:
cd /kibana6.5.4
vim config/kibana.yml
将配置文件中的:
server.host: "0.0.0.0"
修改为:
server.host: "192.168.248.130"
然后一行新增,这行的意思是不使用帐号密码登录
xpack.security.enabled: false
保存退出!
3,Kinaba 启动
使用root用户进行启动。
在kibana6.5.4文件夹目录输入:
nohup ./bin/kibana >/dev/null 2>&1 &
防火墙开启端口:5601
开启端口:5601
firewall-cmd --zone=public --add-port=5601/tcp --permanent
重启防火墙:
firewall-cmd --reload
查询有哪些端口是开启的:
firewall-cmd --list-port
浏览器输入: 192.168.248.130: 5601