欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ElasticSearch6.4.0集群搭建

程序员文章站 2022-07-05 07:58:52
...

一、软件及环境准备

  • 服务器环境

CentOS6.9_64位两台
es-master:192.168.0.11
es-slave:192.168.0.12
注意:内存允许的情况下,稍微给大一点内存,否则启动会失败,本地测试可以使用1.5-2G内存,es-master上准备搭建两个节点,所以内存最好给到2G以上.

  • ES软件

最新版ElasticSearch6.4.0
下载地址:https://artifacts.elastic.co/...

  • JDK软件

jdk-8u161-linux-x64.tar.gz
下载地址:http://download.oracle.com/ot...

  • 环境规划

es-master包括两个节点:elasticesearch-node1,elasticesearch-node3
es-slave包括一个节点:elasticesearch-node2

  • 修改服务器主机名称,方便后续操作

(1)服务器192.168.0.11上操作:

[[email protected] ~]# hostname es-master
[[email protected] ~]# vim /etc/sysconfig/network
#修改以下内容:
HOSTNAME=es-master
#退出重新登录
[[email protected] ~]# logout

(2)服务器192.168.0.12上操作:

[[email protected] ~]# hostname es-slave
[[email protected] ~]# vim /etc/sysconfig/network
#修改以下内容:
HOSTNAME=es-slave
#退出重新登录
[[email protected] ~]# logout

(3)为了后续操作方便,分别关闭es-master和es-slave服务器的防火墙

[[email protected] ~]# service iptables stop
[[email protected] ~]# service iptables stop

注意:生产环境不能直接关防火墙,可以添加防火墙规则,使得ES的tcp端口对远程指定主机开放。

二、JDK安装配置

主机es-master上操作

  • 下载,并解压到指定目录
 [[email protected] ~]# mkdir -pv /home/software
 [[email protected] ~]# cd /home/software/
 [[email protected] software]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
 注意:如果没有网络,可以手动下载,然后上传即可。
 [[email protected] software]# mkdir -pv /usr/local/java
 [[email protected] software]# tar xf jdk-8u181-linux-x64.tar.gz -C /usr/local/java

主机es-slave上操作同上,略.

  • 配置环境变量,es-master和es-slave上配置过程相同,如下
[[email protected] software]# vim /etc/profile
#在末尾添加如下内容:
JAVA_HOME=/usr/local/java/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
#使环境变量生效
[[email protected] ~]# source /etc/profile
  • 测试是否安装完成
[[email protected] ~]# java -version
java version "1.8.0_161"
#输出版本号,表示配置成功.

三、ElasticSearch安装及配置

es-master上的操作如下:

  • 下载及解压ElasticSearch6.4.0
[[email protected] ~]# cd /home/software/
[[email protected] ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
[[email protected] software]# tar xf elasticsearch-6.2.4.tar.gz -C /usr/local/
[[email protected] local]# mv elasticsearch-6.4.0 elasticsearch-node1/
#复制一份作为第二个es节点
[[email protected] local]# cp -r elasticsearch-node1/ elasticsearch-node3
  • 创建elk用户,并将elasticsearch-node1和elasticsearch-node3授权给elk
注意:由于elasticsearch启动的时候不能直接用root用户启动,所以需要创建普通用户
[[email protected] local]# useradd elk
[[email protected] local]# chown -R elk:elk elasticsearch-node1/ elasticsearch-node3/
  • 分别创建两个elasticsearch节点的数据目录和日志目录
[[email protected] local]# mkdir -pv /data/{elasticsearch1,elasticsearch3}/{data,logs}
[[email protected] local]# chown -R elk:elk /data/{elasticsearch1,elasticsearch3}
  • 修改操作系统的内核配置文件sysctl.conf
[[email protected] local]# vim /etc/sysctl.conf
#在配置文件最后面添加如下内容
vm.max_map_count=655360

解释:max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。
在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。
当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。

#使修改之后的配置文件生效
[[email protected] local]# sysctl -p
  • 修改limits.conf文件
#limits.conf:用来保护系统的资源访问,和sysctl.conf很像,但是limits.conf是针对于用户,而sysctl.conf是针对于操作系统.
[[email protected] local]# vim /etc/security/limits.conf
#在文件末尾添加如下内容:
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 4096
elk hard nproc 4096
  • 修改elasticsearch-node1节点的配置文件jvm.options
[[email protected] local]# cd elasticsearch-node1/config/
[[email protected] config]# vim jvm.options
修改如下两个选项:
-Xms512m  #elasticsearch启动时jvm所分配的初始堆内存大小
-Xmx512m  #elasticsearch启动之后允许jvm分配的最大堆内存大小,生产环境中可能需要调大
注意:如果内存足够大,可以不用修改,默认为1G
  • 修改elasticsearch-node1节点的配置文件elasticsearch.yml
[[email protected] local]# vim elasticsearch-node1/config/elasticsearch.yml
#修改以下项
#表示集群标识,同一个集群中的多个节点使用相同的标识
cluster.name: elasticsearch
#节点名称
node.name: "es-node1"
#数据存储目录
path.data: /data/elasticsearch1/data
#日志目录
path.logs: /data/elasticsearch1/logs
#节点所绑定的IP地址,并且该节点会被通知到集群中的其他节点
network.host: 192.168.0.11
#绑定监听的网络接口,监听传入的请求,可以设置为IP地址或者主机名
network.bind_host: 192.168.0.11
#发布地址,用于通知集群中的其他节点,和其他节点通讯,不设置的话默认可以自动设置。必须是一个存在的IP地址
network.publish_host: 192.168.0.11
#对外提供服务的http端口,默认为9200
http.port: 9200
#集群中主节点的初始列表,当主节点启动时会使用这个列表进行非主节点的监测
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
#下面这个参数控制的是,一个节点需要看到的具有master节点资格的最小数量,然后才能在集群中做操作。官方推荐值是(N/2)+1;
#其中N是具有master资格的节点的数量(我们的情况是3,因此这个参数设置为2)
#但是:但对于只有2个节点的情况,设置为2就有些问题了,一个节点DOWN掉后,肯定连不上2台服务器了,这点需要注意
discovery.zen.minimum_master_nodes: 2
#ES默认开启了内存地址锁定,为了避免内存交换提高性能。但是Centos6不支持SecComp功能,启动会报错,所以需要将其设置为false
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
  • 修改elasticsearch-node3节点的配置文件jvm.options
[[email protected] local]# cd elasticsearch-node3/config/
[[email protected] config]# vim jvm.options
修改如下两个选项:
-Xms512m
-Xmx512m
  • 修改elasticsearch-node3节点的配置文件elasticsearch.yml
[[email protected] local]# vim elasticsearch-node3/config/elasticsearch.yml
#修改以下项
cluster.name: elasticsearch
node.name: "es-node3"
path.data: /data/elasticsearch3/data
path.logs: /data/elasticsearch3/logs
network.host: 192.168.0.11
network.bind_host: 192.168.0.11
network.publish_host: 192.168.0.11
http.port: 9201
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
discovery.zen.minimum_master_nodes: 2
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

至此,es-master上的配置操作完成。


es-slave上的操作如下:

  • 上传elasticsearch的安装包,然后解压重命名,可以直接从es-master上远程拉取
[[email protected] ~]# cd /home/software/
[[email protected] software]# scp 192.168.0.11:/home/software/elasticsearch-6.4.0.tar.gz ./
[[email protected] software]# tar xf elasticsearch-6.4.0.tar.gz -C /usr/local/
  • 创建elk用户,并将elasticsearch-node2授权给elk
[[email protected] local]# useradd elk
[[email protected] local]# chown -R elk:elk elasticsearch-node2
  • 创建数据目录,并将目录的属主和属组改为elk用户,elk组
[[email protected] local]# mkdir -pv /data/elasticsearch2/{data,logs}
[[email protected] local]# chown -R elk:elk /data/elasticsearch2
  • 修改操作系统的内核配置文件sysctl.conf
[[email protected] local]# vim /etc/sysctl.conf
#在配置文件最后面添加如下内容
vm.max_map_count=655360
[[email protected] local]# sysctl -p
  • 修改limits.conf文件,可以直接从es-master的配置中复制过来
[[email protected] local]# vim /etc/security/limits.conf
#在文件末尾添加如下内容:
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 4096
elk hard nproc 4096
  • 修改elasticsearch-node2节点的配置文件jvm.options
[[email protected] local]# cd elasticsearch-node2/config/
[[email protected] config]# vim jvm.options
修改如下两个选项:
-Xms512m
-Xmx512m
  • 修改elasticsearch-node2节点的配置文件elasticsearch.yml
[[email protected] local]# vim elasticsearch-node2/config/elasticsearch.yml
#修改以下项
cluster.name: elasticsearch
node.name: "es-node2"
path.data: /data/elasticsearch2/data
path.logs: /data/elasticsearch2/logs
network.host: 192.168.0.12
network.bind_host: 192.168.0.12
network.publish_host: 192.168.0.12
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
discovery.zen.minimum_master_nodes: 2
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

至此es-slave上的elasticsearch节点配置完成。

四、启动ES集群

  • 首先切换为elk用户,并启动es-slave服务器上的elasticsearch-node2节点
[[email protected] local]# su - elk
[[email protected] ~]$ cd /usr/local/elasticsearch-node2/bin/
[[email protected] bin]$ ./elasticsearch -d
注意:-d参数表示以后台进程启动,默认情况下会在控制台输出日志。
  • 查看是否启动成功,可以通过查看进程及端口来确定是否启动成功,如果启动失败,可以通过查看日志来排查原因
[[email protected] bin]$ ps -ef| grep elasticsearch
[[email protected] bin]$ lsof -i:9200
注意:日志文件在elasticsearch.yml配置文件中所指定的目录下
  • 测试是否可以访问
[[email protected] ~]$ curl 192.168.0.12:9200
如果返回类似如下结果,表示启动正常:
{
  "name" : "es-node2",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "gczyFNKrTe2YbEQmlg7-nw",
  "version" : {
    ...
  },
  "tagline" : "You Know, for Search"
}
  • 切换到es-master服务器上,然后切换到elk身份,分别启动elasticSearch-node1节点和elasticsearch-node3节点
[[email protected] ~]# su - elk
[[email protected] ~]$ cd /usr/local/elasticsearch-node1/bin/
[[email protected] bin]$ ./elasticsearch -d
[[email protected] bin]$ cd /usr/local/elasticsearch-node3/bin/
[[email protected] bin]$ ./elasticsearch -d
  • 查看进程及端口,确定是否启动成功
#查看进程,可以看到有两个节点的进程
[[email protected] bin]$ ps -ef| grep elasticsearch
[[email protected] bin]$ lsof -i:9200
[[email protected] bin]$ lsof -i:9300
  • 使用curl测试节点是否可以正常访问,方法同上,需要验证elasticsearch-node1和elasticsearch-node3节点
[[email protected] ~]$ curl 192.168.0.11:9200
[[email protected] ~]$ curl 192.168.0.11:9300
  • 验证完毕之后,ES集群就启动完毕。

五、安装及配置ES前端图形化操作工具

  • 下载kibana,并上传到es-master服务器上
下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
  • 解压,重命名
[[email protected] software]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
[[email protected] software]# tar xf kibana-6.4.0-linux-x86_64.tar.gz -C /usr/local
[[email protected] software]# cd /usr/local
[[email protected] local]# mv kibana-6.4.0-linux-x86_64 kibana-6.4.0
  • 修改kibana的配置文件kibana.yml
[[email protected] local]# cd kibana-6.4.0/config
[[email protected] config]# vim kibana.yml
#修改如下内容:
#对外服务监听端口
server.port: 5601
#绑定可以访问5601端口服务的IP地址,0.0.0.0表示任何地址在没有防火墙限制的情况下都可以访问,生产环境别这样设置,不安全。
server.host: "0.0.0.0"
#默认值为主机名称,表示kibana实例绑定的主机,可以是IP地址或者主机名称.
server.name: "es-master"
#用来处理ES请求的服务URL
elasticsearch.url: "http://192.168.0.11:9200"
#用来控制证书的认证,可选的值为full,none,certificate。此处由于没有证书,所以设置为null,否则启动会提示错误.
elasticsearch.ssl.verificationMode: none
  • 启动kibana
[[email protected] config]# cd /usr/local/kibana-6.4.0/bin
#以后台进程启动,kibana默认是控制台方式启动,Ctrl+C就会退出
[[email protected] bin]# nohup ./kibana &
#查看日志是否启动正常
[[email protected] bin]# tail -f nohup.out
  • 如果启动正常,在浏览器端访问http://192.168.0.11:5601,即可看到图形化操作工具

至此,就可以愉快的开始ES的语法学习之旅了。
ES的语法学习可参考:https://www.elastic.co/guide/...

六、ElasticSearch和kibana的停止

目前es和kibana的bin目录下未提供停止ES服务和kibana服务的脚本,可以使用kill -9 pid来停止服务

  • 停止ES服务
[[email protected] bin]# ps -ef| grep elasticsearch | grep -v grep | awk '{print $2}'
[[email protected] bin]# kill -9 pid[上一步所输出的pid]
  • 停止Kibana服务
[[email protected] bin]# ps -ef| grep node | grep -v grep | grep -v elasticsearch | awk '{print $2}'
[[email protected] bin]# kill -9 pid[上一步所输出的pid]

至此,所有内容整理完毕,欢迎评论转发!