安装部署
安装JDK
tar zxf jdk-11.0.4_linux-x64_bin.tar.gz -C /opt/
vim /etc/profileexport JAVA_HOME=/opt/jdk-11.0.4export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin
source /etc/profilejava -versionjava version "11.0.4" 2019-07-16 LTSJava(TM) SE Runtime Environment 18.9 (build 11.0.4+10-LTS)Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.4+10-LTS, mixed mode)
角色分配
| 节点名称 | IP地址 | 集群角色 |
|---|---|---|
| centos76-01 | 192.168.4.151 | master node、data node |
| centos76-02 | 192.168.4.149 | data node |
| centos76-03 | 192.168.4.113 | master node、data node |
配置hosts
vim /etc/hosts
192.168.4.151 centos76-01
192.168.4.149 centos76-02
192.168.4.113 centos76-03
解压准备
tar zxf elasticsearch-7.3.0-linux-x86_64.tar.gz -C /opt
cd /opt
mv elasticsearch-7.3.0-linux-x86_64 elasticsearch
操作系统调优
调整内核参数:
vim /etc/sysctl.conf
fs.file-max = 655360
vm.max_map_count = 262144
sysctl -p
调整进程最大打开文件描述符,最大用户进程数,最大锁定内存地址空间:
vim /etc/security/limits.conf
* soft nproc 204800
* hard nproc 204800
* soft nofile 204800
* hard nofile 204800
* soft memlock unlimited
* hard memlock unlimited
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 204800
JVM调优
vim elasticsearch/config/jvm.options
-Xms2g
-Xmx2g
创建相关目录
mkdir -p /esdata/{data1,data2}
修改相关配置项
vim elasticsearch/config/elasticsearch.yml
cluster.name: escluster
node.name: centos76-01 # 此处三台机器分别不一样
node.master: true
node.data: true
path.data: /esdata/data1,/esdata/data2
path.logs: /opt/elasticsearch/logs/
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: ["192.168.4.151","192.168.4.149"]
配置项详解
- cluster.name:
配置elasticsearch集群名称,默认是elasticsearch。这里修改为esbigdata,elasticsearch会自动发现在同一网段下的集群名为esbigdata的主机,如果在同一网段下有多个集群,就可以通过这个属性来区分不同的集群。线上生产环境时建议更改。 - node.name:
节点名,任意指定一个即可,这里是server1,我们这个集群环境中有三个节点,分别是server1、server2和server3,记得根据主机的不同,要修改相应的节点名称。 - node.master:
指定该节点是否有资格被选举成为master,默认是true,elasticsearch集群中默认第一台启动的机器为master角色,如果这台服务器宕机就会重新选举新的master。我们这个集群环境中,定义了server1和server3两个master节点,因此这两个节点上node.master的值要设置为true。 - node.data:
指定该节点是否存储索引数据,默认为true,表示数据存储节点,如果节点配置node.master:false并且node.data:false,则该节点就是client node。这个client node类似于一个“路由器”,负责将集群层面的请求转发到主节点,将数据相关的请求转发到数据节点。在我们这个集群环境中,定义了server1、server2和server3均为数据存储节点,因此这三个节点上node.data的值要设置为true。 - path.data:
设置索引数据的存储路径,默认是elasticsearch根目录下的data文件夹,这里自定义了两个路径,可以设置多个存储路径,用逗号隔开。 - path.logs:
设置日志文件的存储路径,默认是elasticsearch根目录下的logs文件夹 - bootstrap.memory_lock:
此配置项一般设置为true用来锁住物理内存。在linux下物理内存的执行效率要远远高于虚拟内存(swap)的执行效率,因此,当JVM开始使用swap内存时elasticsearch的执行效率会降低很多,所以要保证它不使用swap,保证机器有足够的物理内存分配给elasticsearch。同时也要允许elasticsearch的进程可以锁住物理内存,linux下可以通过“ulimit -l”命令查看最大锁定内存地址空间(memlock)是不是unlimited,这个参数在之前系统调优的时候已经设置过了。 - network.host:
此配置项是network.publish_host和network.bind_host两个配置项的集合,network.bind_host用来设置elasticsearch提供服务的IP地址,默认值为0.0.0.0,此默认配置不太安全,因为如果服务器有多块网卡(可设置多个IP,可能有内网IP,也可能有外网IP),那么就可以通过外网IP来访问elasticsearch提供的服务,显然,elasticsearch集群在外网访问的话将非常不安全,因此,建议将network.bind_host设置为内网IP地址比较好。
network.publish_host用来设置elasticsearch集群中该节点和其它节点间交互通信的IP地址,一般设置为该节点所在的内网IP地址即可。需要保证可以和集群中其它节点进行通信。
在elasticsearch新版本中,增加了network.host配置项,此配置项用来同时设置bind_host和publish_host上面两个参数,根据上面的介绍,此值设置为服务器的内网IP地址即可。也就是设置bind_host和publish_host为同一个IP地址。 - http.port:
设置elasticsearch对外提供服务的http端口,默认为9200。其实,还有一个端口配置选项transport.tcp.port,此配置项用来设置节点间交互通信的TCP端口,默认是9300。 - discovery.zen.minimum_master_nodes:
配置当前集群中最少的master节点数,默认为1,也就是说,elasticsearch集群中master节点数不能低于此值,如果低于此值,elasticsearch集群将停止运行。在三个以上节点的集群环境中,建议配置大一点的值,推荐2至4个为好。 - discovery.zen.ping.unicast.hosts:
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。这里需要注意,master节点初始列表中对应的端口是9300。即为集群交互通信端口。
创建启动用户并赋权
useradd elasticsearch
chown -R elasticsearch.elasticsearch /opt/elasticsearch
chown -R elasticsearch.elasticsearch /esdata/
启动服务
su - elasticsearch
cd /opt/elasticsearch
bin/elasticsearch -d
exit
验证集群的正确性
将所有elasticsearch节点的服务启动后,在任意一个节点执行如下命令:
curl http://192.168.4.151:9200
{
"name" : "centos76-01",
"cluster_name" : "escluster",
"cluster_uuid" : "_na_",
"version" : {
"number" : "7.3.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "de777fa",
"build_date" : "2019-07-24T18:30:11.767338Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
curl http://192.168.4.149:9200
{
"name" : "centos76-02",
"cluster_name" : "escluster",
"cluster_uuid" : "_na_",
"version" : {
"number" : "7.3.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "de777fa",
"build_date" : "2019-07-24T18:30:11.767338Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
curl http://192.168.4.113:9200
{
"name" : "centos76-03",
"cluster_name" : "escluster",
"cluster_uuid" : "_na_",
"version" : {
"number" : "7.3.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "de777fa",
"build_date" : "2019-07-24T18:30:11.767338Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
支持,elasticsearch集群安装、配置完成。
