ElasticSearch 7.6.2版本集群搭建及踩坑

环境准备

服务器说明

本次演示采用三台RockyLinux 8.5版本服务器

服务器IP备注
es-master172.16.7.11主节点
es-node01172.16.7.501节点
es-node02172.16.7.1302节点

内核版本

[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

image.png

创建用户

useradd cncfclub
passwd cncfclub
chown -R cncfclub:cncfclub  elasticsearch-7.6.2

下载软件包

下载软件

ES中文社区下载连接:

挑一个自己觉得稳定的版本我这里选择了7.6.2image.png

创建文件夹并将es传输到文件夹内并解压

mkdir -p /server/tools && cd /server/tools

将下载 的es安装包分别传输到三台服务器上
image.png
解压并删除压缩文件

## 解压
tar xf elasticsearch-7.6.2-linux-x86_64.tar.gz
## 删除
rm -f elasticsearch-7.6.2-linux-x86_64.tar.gz

集群部署

目录结构说明

image.png

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

验证

image.png
image.png
image.png

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

image.png

坑一:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

image.png

解决办法

### 修改文件
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.

image.png

### 修改
vim jvm.options
### 修改参数
-XX:+UseConcMarkSweepGC 改为 -XX:+UseG1GC

坑三:java.nio.file.AccessDeniedException: /server/tools/elasticsearch-7.6.2/config/elasticsearch.keystore

image.png

## 权限问题
chown -R cncfclub:cncfclub /server/tools/elasticsearch-7.6.2/config
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值