ES

​https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz​​​​


​https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.0-linux-x86_64.tar.gz​​​​


配置要求

1、资源配置:1核2GB


一、软件及环境准备服务器环境

CentOS6.9_64位两台

es-master:172.16.10.5

es-slave:172.16.10.9

es-slave:172.16.10.10

注意:内存允许的情况下,稍微给大一点内存,否则启动会失败,本地测试可以使用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...​

TencentKona8.0.8.b1_jdk_fiber_linux-x86_64_8u312.tar.gz

下载地址:​​https://github.com/Tencent/TencentKona-8/releases/download/Fiber-8.0.8-GA/TencentKona8.0.8.b1_jdk_fiber_linux-x86_64_8u312.tar.gz​​​​

JDK11

​https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz​​​​

  • 环境规划

es-master包括一个节点:elasticesearch-node1

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

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

(1)服务器172.16.10.5上操作:

各节点hosts文件添加

[root@localhost ~]#  vi /etc/hosts

172.16.10.8 es-node1

172.16.10.3 es-node2

172.16.10.9 es-node3


[root@localhost ~]# hostname es-master

[root@localhost ~]# vim /etc/sysconfig/network#修改以下内容:

HOSTNAME=es-master  #退出重新登录

[root@localhost ~]# logout

(2)服务器172.16.10.9、172.16.10.10上操作:

[root@localhost ~]# hostname es-slave

[root@localhost ~]# vim /etc/sysconfig/network       #修改以下内容:

HOSTNAME=es-slave

#退出重新登录

[root@localhost ~]# logout

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

[root@es-master ~]# service iptables stop
[root@es-slave ~]# service iptables stop

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

-------------

[root@gxq-4-test ~]# hostname es-master


[root@es-master ~]# vi /etc/hostname

[root@es-master ~]# bash


二、JDK安装配置

主机es-master上操作

  • 下载,并解压到指定目录

[root@es-master ~]# mkdir -pv /home/software

[root@es-master ~]# cd /home/software/

上传jdk压缩包

[root@es-master software]# mkdir -pv /usr/local/java

[root@es-master software]# tar xf TencentKona8.0.8.b1_jdk_fiber_linux-x86_64_8u312.tar.gz -C /usr/local/java


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

  • 配置环境变量,es-master和es-slave上配置过程相同,如下

[root@master java]# vim /etc/profile

#在末尾添加如下内容:

JAVA_HOME=/usr/local/java/TencentKona-8.0.8-312-fiber

export PATH=$PATH:$JAVA_HOME/bin

#使环境变量生效

[root@es-master ~]# source /etc/profile

  • 测试是否安装完成

[root@es-master software]# java -version

openjdk version "1.8.0_312_fiber"

OpenJDK Runtime Environment (Tencent Kona 8.0.8) (build 1.8.0_312_fiber-b1)

OpenJDK 64-Bit Server VM (Tencent Kona 8.0.8) (build 25.312-b1, mixed mode, sharing)

#输出版本号,表示配置成功.


三、ElasticSearch安装及配置

es-master上的操作如下:

  • 下载及解压ElasticSearch6.4.0

[root@es-master ~]# cd /home/software/

[root@es-master software]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz

[root@es-master software]# tar xf elasticsearch-6.4.0.tar.gz -C /usr/local/

[root@es-master software]# cd /usr/local/

[root@es-master local]# mv elasticsearch-6.4.0 elasticsearch-node1


  • 创建es用户,并将elasticsearch-node1授权给es

注意:由于elasticsearch启动的时候不能直接用root用户启动,所以需要创建普通用户

[root@es-master local]# useradd es

[root@es-master local]# chown -R es:es elasticsearch-node1

  • 分别创建两个elasticsearch节点的数据目录和日志目录

[root@es-master local]# mkdir -pv /data/elasticsearch1/{data,logs}

[root@es-master local]# chown -R es:es /data/elasticsearch1/{data,logs}


注意:如果想在一个主机中安装两个节点,可以按照如下操作:

---------------------一个主机中两节点分割线----------------------------------------

#复制一份作为第二个es节点

[root@es-master local]# cp -r elasticsearch-node4 elasticsearch-node5

创建es用户,并将elasticsearch-node1和elasticsearch-node3授权给es

注意:由于elasticsearch启动的时候不能直接用root用户启动,所以需要创建普通用户

[root@es-master local]# useradd es

[root@es-master local]# chown -R es:es elasticsearch-node4 elasticsearch-node5

分别创建两个elasticsearch节点的数据目录和日志目录

[root@es-master local]# mkdir -pv /data/{data/elasticsearch4,elasticsearch5}/{data,logs}

[root@es-master local]# chown -R es:es /data/{elasticsearch4,elasticsearch5}/{data,logs}

---------------------一个主机中两节点分割线------------------------------------


  • 修改操作系统的内核配置文件sysctl.conf

[root@es-master ~]# vi /etc/sysctl.conf

#在配置文件最后面添加如下内容

vm.max_map_count=262144

echo "vm.max_map_count=262144" >> /etc/sysctl.conf

解释:max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。

在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。

当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。


#使修改之后的配置文件生效

[root@es-master local]# sysctl -p


  • 修改limits.conf文件

#limits.conf:用来保护系统的资源访问,和sysctl.conf很像,但是limits.conf是针对于用户,而sysctl.conf是针对于操作系统.

[root@es-master local]# vim /etc/security/limits.conf

#在文件末尾添加如下内容:

es soft nofile 65536

es hard nofile 131072

es soft nproc 4096

es hard nproc 4096

  • 修改elasticsearch-node1节点的配置文件jvm.options

[root@es-master local]# cd elasticsearch-node1/config/

[root@es-master config]# vim jvm.options

修改如下两个选项:

-Xms512m #elasticsearch启动时jvm所分配的初始堆内存大小

-Xmx512m #elasticsearch启动之后允许jvm分配的最大堆内存大小,生产环境中可能需要调大

注意:如果内存足够大,可以不用修改,默认为1G

  • 修改elasticsearch-node1节点的配置文件elasticsearch.yml

[root@es-master 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: 172.16.10.5

#绑定监听的网络接口,监听传入的请求,可以设置为IP地址或者主机名

#network.bind_host: 172.16.10.5

#发布地址,用于通知集群中的其他节点,和其他节点通讯,不设置的话默认可以自动设置。必须是一个存在的IP地址

#network.publish_host: 0.0.0.0

#对外提供服务的http端口,默认为9200

http.port: 9200

#集群中主节点的初始列表,当主节点启动时会使用这个列表进行非主节点的监测

discovery.zen.ping.unicast.hosts: ["172.16.10.5","172.16.10.9", "172.16.10.10"]

#下面这个参数控制的是,一个节点需要看到的具有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


或者参考一下配置项:

[root@es-master local]# vim elasticsearch-node1/config/elasticsearch.yml

#添加如下配置项

cluster.name: elasticsearch

node.name: es-node1

#node.master: true

node.data: true

path.data: /data/elasticsearch1/data

path.logs: /data/elasticsearch1/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

http.port: 9200

transport.tcp.port: 9300

network.host: 172.16.10.5

network.publish_host: 0.0.0.0

#cluster.initial_master_nodes: ["es-node1:9300", "es-node2:9300", "es-node3:9300"]

discovery.zen.minimum_master_nodes: 2

discovery.zen.ping_timeout: 3s

discovery.zen.ping.unicast.hosts: ["172.16.10.5", "172.16.10.9", "172.16.10.10"]


ES7.x版本配置项:


cluster.name: ES

node.name: es-node2

#node.master: true

node.data: true

path.data: /data/elasticsearch/data

path.logs: /data/elasticsearch/logs

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

http.port: 9200

transport.tcp.port: 9300

network.host: 0.0.0.0

network.publish_host: 0.0.0.0

cluster.initial_master_nodes: ["es-node1", "es-node2", "es-node3"]

#discovery.zen.minimum_master_nodes: 2

#discovery.zen.ping_timeout: 3s

discovery.seed_hosts: ["172.16.10.8", "172.16.10.3", "172.16.10.9"]



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

es-slave上的操作如下:(其实三个节点配置都相似)

  • 上传elasticsearch的安装包,然后解压重命名,可以直接从es-master上远程拉取

[root@es-slave ~]# cd /home/software/

[root@es-slave software]# scp 172.16.10.5:/home/software/elasticsearch-6.4.0.tar.gz ./

[root@es-slave software]# tar xf elasticsearch-6.4.0.tar.gz -C /usr/local/

  • 创建es用户,并将elasticsearch-node2授权给es

[root@es-slave local]# useradd es

[root@es-slave local]# chown -R es:es elasticsearch-node2

  • 创建数据目录,并将目录的属主和属组改为es用户,es组

[root@es-slave local]# mkdir -pv /data/elasticsearch2/{data,logs}

[root@es-slave local]# chown -R es:es /data/elasticsearch2

  • 修改操作系统的内核配置文件sysctl.conf

[root@es-slave local]# vim /etc/sysctl.conf

#在配置文件最后面添加如下内容

vm.max_map_count=655360

[root@es-slave local]# sysctl -p

  • 修改limits.conf文件,可以直接从es-master的配置中复制过来

[root@es-slave local]# vim /etc/security/limits.conf

#在文件末尾添加如下内容:

es soft nofile 65536

es hard nofile 131072

es soft nproc 4096

es hard nproc 4096

  • 修改elasticsearch-node2节点的配置文件jvm.options

[root@es-slave local]# cd elasticsearch-node2/config/

[root@es-slave config]# vim jvm.options

修改如下两个选项:

-Xms512m

-Xmx512m

  • 修改elasticsearch-node2节点的配置文件elasticsearch.yml

[root@es-slave 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: 172.16.10.9

#network.bind_host: 172.16.10.9

network.publish_host: 0.0.0.0

http.port: 9200

discovery.zen.ping.unicast.hosts: ["172.16.10.5", "172.16.10.9", "172.16.10.10"]

discovery.zen.minimum_master_nodes: 2

bootstrap.memory_lock: false

bootstrap.system_call_filter: false


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


四、启动ES集群

  • 首先切换为e用户,并启动es-slave服务器上的elasticsearch-node2节点

[root@es-slave local]# su - es

[es@es-slave ~]$ cd /usr/local/elasticsearch-node2/bin/

[es@es-slave bin]$ ./elasticsearch -d

注意:-d参数表示以后台进程启动,默认情况下会在控制台输出日志。

  • 查看是否启动成功,可以通过查看进程及端口来确定是否启动成功,如果启动失败,可以通过查看日志来排查原因

[es@es-slave bin]$ ps -ef| grep elasticsearch

[es@es-slave bin]$ lsof -i:9200

注意:日志文件在elasticsearch.yml配置文件中所指定的目录下

  • 测试是否可以访问

[es@es-slave ~]$ curl 172.16.10.9:9200

如果返回类似如下结果,表示启动正常:

{

"name" : "es-node2",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "gczyFNKrTe2YbEQmlg7-nw",

"version" : {

...

},

"tagline" : "You Know, for Search"

}

  • 切换到es-master服务器和另一台es-slave上,然后切换到es身份,分别启动elasticsearch-node1节点和elasticsearch-node3节点

[root@es-master ~]# su - es

[es@es-master ~]$ cd /usr/local/elasticsearch-node1/bin/

[es@es-master bin]$ ./elasticsearch -d

登录到节点3服务器

[root@es-slave ~]# su - es

[es@es-slave bin]$ cd /usr/local/elasticsearch-node3/bin/

[es@es-slave bin]$ ./elasticsearch -d

  • 查看进程及端口,确定是否启动成功

#查看进程,可以看到有两个节点的进程

[es@es-master bin]$ ps -ef| grep elasticsearch

[es@es-master bin]$ lsof -i:9200

[es@es-master bin]$ lsof -i:9300

  • 使用curl测试节点是否可以正常访问,方法同上,需要验证elasticsearch-node1和elasticsearch-node3节点

[es@es-master ~]$ curl 172.16.10.9:9200

[es@es-master ~]$ curl 172.16.10.9:9300

  • 验证完毕之后,ES集群就启动完毕。


查看kibana的PID号:

ps -ef | grep node | grep -v grep | grep -v elasticsearch