环境准备
服务器说明
本次演示采用三台RockyLinux 8.5版本服务器
服务器 | IP | 备注 |
---|---|---|
es-master | 172.16.7.11 | 主节点 |
es-node01 | 172.16.7.5 | 01节点 |
es-node02 | 172.16.7.13 | 02节点 |
内核版本
[root@es-master ~]# uname -a
Linux es-master 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Thu Mar 10 20:59:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
修改系统名
## 主节点
hostnamectl set-hostname es-master
## node1节点
hostnamectl set-hostname es-node01
## node2节点
hostnamectl set-hostname es-node02
配置hosts
所有服务器配置一些/etc/hosts
172.16.7.11 es-master
172.16.7.5 es-node01
172.16.7.13 es-node02
安装JDK
##### 7.x开始内置了JDK不需要安装了,官网连接:
https://www.elastic.co/cn/support/matrix#logstash_plugins
创建用户
useradd cncfclub
passwd cncfclub
chown -R cncfclub:cncfclub elasticsearch-7.6.2
下载软件包
下载软件
ES中文社区下载连接:
挑一个自己觉得稳定的版本我这里选择了7.6.2
创建文件夹并将es传输到文件夹内并解压
mkdir -p /server/tools && cd /server/tools
将下载 的es安装包分别传输到三台服务器上
解压并删除压缩文件
## 解压
tar xf elasticsearch-7.6.2-linux-x86_64.tar.gz
## 删除
rm -f elasticsearch-7.6.2-linux-x86_64.tar.gz
集群部署
目录结构说明
bin :脚本文件,包括 ES 启动 & 安装插件等等
config :elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等
JDK :内置的 JDK,JAVA_VERSION=“12.0.1”
lib :类库
logs :日志文件
modules :ES 所有模块,包括 X-pack 等
plugins :ES 已经安装的插件。默认没有插件
data :ES 启动的时候,会有该目录,用来存储文档数据。该目录可以设置
JVM优化
根据官方提供的《堆内存:大小和交换编辑》:https://www.elastic.co/guide/cn/elasticsearch/guide/current/heap-sizing.html
ES 默认安装后设置的堆内存是 1 GB,在实际用的肯定是少了,我目前用的演示的服务器的内存大小是4GB,所以我就不改动了,官方说过如果足够的内存,也尽量不要 超过 32 GB。即每个节点内存分配不超过 32 GB。因为它浪费了内存,降低了 CPU 的性能,还要让 GC 应对大内存。如果你想保证其安全可靠,设置堆内存为 31 GB 是一个安全的选择。
elasticsearch.yml配置文件说明
[root@es-master config]# cat elasticsearch.yml
# 集群名称,设置一个统一的名字
cluster.name: cncfclub-es-cluster
# 节点名字,每个节点不同
node.name: es-master
# 是否有资格成为主节点
node.master: true
#是否存储数据
node.data: true
#设置最大集群节点数
node.max_local_storage_nodes: 3
#数据存储路径
path.data: /server/data
#日志存储路径
path.logs: /server/logs
# CentOS6 版本需要加入这两行
#bootstrap.memory_lock: true
#bootstrap.system_call_filter: false
#设置IP地址0.0.0.0 外网访问谁IP都能不然默认就是内网IP
network.host: 0.0.0.0
#设置端口
http.port: 9200
#集群通信接口
transport.tcp.port: 9300
#设置节点发现
discovery.seed_hosts: ["host1", "host2"]
#设置初始化集群选举
cluster.initial_master_nodes: ["node-1", "node-2"]
Master节点elasticsearch.yml配置
cluster.name: cncfclub-es-cluster
node.name: es-master
node.master: true
node.data: true
node.max_local_storage_nodes: 3
path.data: /server/data
path.logs: /server/logs
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["es-master:9300", "es-node01:9300","es-node02:9300"]
cluster.initial_master_nodes: ["es-master", "es-node01","es-node02"]
node01节点elasticsearch.yml配置
cluster.name: cncfclub-es-cluster
node.name: es-node01
node.master: true
node.data: true
node.max_local_storage_nodes: 3
path.data: /server/data
path.logs: /server/logs
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["es-master:9300", "es-node01:9300","es-node02:9300"]
cluster.initial_master_nodes: ["es-master", "es-node01","es-node02"]
node02节点elasticsearch.yml配置
cluster.name: cncfclub-es-cluster
node.name: es-node02
node.master: true
node.data: true
node.max_local_storage_nodes: 3
path.data: /server/data
path.logs: /server/logs
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["es-master:9300", "es-node01:9300","es-node02:9300"]
cluster.initial_master_nodes: ["es-master", "es-node01","es-node02"]
创建数据和日志目录
mkdir -p /server/data && mkdir -p /server/logs全部赋权
#给有关es的
chown -R cncfclub:cncfclub /server
启动服务
## 进入cncfclub用户
su cncfclub
## 进入bin启动目录
cd /server/tools/elasticsearch-7.6.2/bin
# 运行
./elasticsearch
# 后台运行
./elasticsearch -d
验证
head插件
elasticsearch-head是一个用来浏览、与Elasticsearch簇进行交互的web前端展示插件。 因此elasticsearch-head是一个用来监控Elasticsearch状态的客户端插件
简单粗暴浏览器直接安装Multi elasticsearch head插件
或者docker run一个web服务
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head
坑
坑一:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法
### 修改文件
vim /etc/sysctl.conf
### 添加参数 最后一行添加
vm.max_map_count = 262144
### 重启配置
sysctl -p
坑二:OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
### 修改
vim jvm.options
### 修改参数
-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC
坑三:java.nio.file.AccessDeniedException: /server/tools/elasticsearch-7.6.2/config/elasticsearch.keystore
## 权限问题
chown -R cncfclub:cncfclub /server/tools/elasticsearch-7.6.2/config