环境准备
- 使用的操作系统镜像为:CentOS-7-x86_64-Minimal-2009
- 需要提前准备ntp工具的离线安装包
- 在校园网中,三台虚拟机需进行ntpdate时间同步
- 在外网中,使用指令sudo ntpdate 0.asia.pool.ntp.org进行时间同步
- 本例集群共设三个节点,其中es-a作为集群master节点
es-a:192.168.200.11
es-b:192.168.200.12
es-c:192.168.200.13
配置时间同步及主机映射
1.在三个节点全部安装ntp工具
复制ntp-rpms文件夹到/root目录下
yum -y localinstall /root/ntp-rpms/*.rpm
2.在三台虚拟机上全部配置时间同步timedatectl set-timezone Asia/Shanghai
3.在三台虚拟机中配置主机映射
vi /etc/hosts
192.168.200.12 es-b
192.168.200.13 es-c(另外两个节点同上,添加与本机不同的两条映射)
配置Java环境并开放端口
1.上传jdk1.8.0_211.tar.gz至三台虚拟机的/root目录下
2.su root
tar -zxvf jdk1.8.0_211.tar.gz
mkdir -p /usr/local/jdk
mv jdk1.8.0_211 /usr/local/jdk/
vi ~/.bashrc,并向该文件中追加以下内容
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_211
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
systemctl start firewalld
firewall-cmd --add-port=9200/tcp --zone=public --permanent
firewall-cmd --reload
systemctl stop firewalld
上述操作在三个节点分别配置一遍
安装elasticsearch
- 上传elasticsearch-7.2.1-linux-x86_64.tar.gz 至三台虚拟机的/root目录下
- su root
tar -zxvf elasticsearch-7.2.1-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv elasticsearch-7.2.1/ elasticsearch
useradd es
chown -R es:es ./elasticsearch/
修改/etc/sysctl.conf文件,添加以下内容
fs.file-max=655360
vm.max_map_count=262144
向/etc/security/limits.conf文件,添加以下内容
* soft nproc 204800
* hard nproc 204800
* soft nofile 655360
* hard nofile 655360
* soft memlock unlimited
* hard memlock unlimited
修改文件/etc/security/limits.d/20-nproc.conf中的内容
* soft nproc 204800
sysctl -p
CTRL + D退出当前终端,而后重新登录
可修改/usr/local/elasticsearch/config/jvm.options文件中的下列内容
-Xms256m
-Xmx256m
上述操作在三个节点分别配置一遍
3.su es(要以es用户登录!首先登录es-a)
mkdir -p /home/es/data1/elasticsearch
mkdir -p /home/es/data2/elasticsearch
cd /usr/local/elasticsearch/config按如下内容修改elasticsearch.yml
cluster.name: elkbigdata
node.name: es-a
node.master: true
path.data: /home/es/data1/elasticsearch/, /home/es/data2/elasticsearch
path.logs: /usr/local/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: [“es-a”]
discovery.zen.ping.unicast.hosts: [“192.168.200.12:9300”, “192.168.200.13:9300”]
注:node.name三个节点不同;cluster.initial_master_nodes: [“es-a”]不变,三个节点都配es-a;discovery.zen.ping.unicast.hosts三个节点不同,每个节点记录的都是另外两个节点的IP
启动elasticsearch集群
1.分别以es用户登录es-a、es-b、es-c
nohup /usr/local/elasticsearch/bin/elasticsearch &
或者
nohup ./elasticsearch > test1.out &
tail -F test1.out
2.运行指令检查集群运行状态
curl http://es-a:9200/_cat/health?v
curl http://es_a:9200/_cat/nodes?v
问题集合
1.注意配置文件每一项冒号之后都有一个空格
2.启动集群之后报错Killed
解决:修改jvm.options ,这里我是改小
vi /usr/local/elasticsearch/config/jvm.options
-Xms256m
-Xmx256m
重新启动即可
3.启动集群之后报错
{“error”:{“root_cause”:[{“type”:“master_not_discovered_exception”,“reason”:null}],“type”:“master_not_discovered_exception”,“reason”:null},“status”:503}
或者如下:
[es-a] master not discovered or elected yet, an election requires at least 2 nodes with ids from
解决:
是由于不是第一次启动,而之前配置了path.data,在该路径下可能有一些缓存垃圾导致elasticsearch.yml配置文件再次修改无法生效,将path下的节点文件删除,重新启动即可
三个节点都进行上述操作,重新启动