“小白也能玩转!ES集群搭建零报错全攻略,轻松上手指南!”

2024-03-20 03:20

本文主要是介绍“小白也能玩转!ES集群搭建零报错全攻略,轻松上手指南!”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


🌐 全新的“Open开袁”官方网站现已上线!https://open-yuan.com,汇聚编程资源、深度技术文章及开源项目地址,助您探索技术新境界。

📱 关注微信公众号“全栈小袁”,随时掌握最新项目动态和技术分享,开启技术新篇章!

想要与更多志同道合的伙伴交流心得、分享经验吗?快来加入我们的技术交流社区吧!


环境

JDK版本对应关系:地址

系统环境

软件版本
JDK8
Ubuntu20
ES7.12.0

ES节点环境

主机IP对外服务的http端口
(默认9200)
节点间交互的tcp端口
(默认9300)
ES1192.168.31.10092029301
ES2192.168.31.10192029302
ES3192.168.31.10292029303

三台Linux服务器已经准备完毕
image.png

安装

下载

📢 Open开原官网地址有 ES 资源提供下载,访问 Open官网地址

切换至home目录,执行下载安装包命令(all)

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-linux-x86_64.tar.gz

解压

tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz

重命名

mv elasticsearch-7.12.0 es

创建日志目录

mkdir -p /home/es/logs

用户组

创建新用户,不允许root用户操作
useradd es
设置密码
passwd es
分配用户和用户组
chown -R es:es es/

增加内存大小限制

文件末尾追加配置,然后刷新

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

末尾加上这段内容,es为新添加的用户组

echo "es hard nofile 65536" >> /etc/security/limits.conf
echo "es soft nofile 65536" >> /etc/security/limits.conf

ES配置

配置文件

vi config/elasticsearch.yml
es-1节点
#集群名称
cluster.name: openyuan-cluster-es
#节点名称
node.name: es-1
#数据存储路径
path.data: /home/es/data
#日志存储路径
path.logs: /home/es/logs
#绑定的ip地址(“0.0.0.0”说明都可以访问)
network.host: 192.168.31.100
#对外服务的http端口,默认9200
http.port: 9202
#节点间交互的tcp端口,默认是9300
transport.tcp.port: 9301
#节点列表
discovery.zen.ping.unicast.hosts: ["192.168.31.100:9301", "192.168.31.101:9302","192.168.31.102:9303"]
# 初始主节点列表,用于选举主节点
cluster.initial_master_nodes: ["es-1", "es-2", "es-3"]
#至少两个节点在线
discovery.zen.minimum_master_nodes: 2
# 候选主节点,是否可以推举为主节点
node.master: true
#接入es-head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
es-2节点
#集群名称
cluster.name: openyuan-cluster-es
#节点名称
node.name: es-2
#数据存储路径
path.data: /home/es/data
#日志存储路径
path.logs: /home/es/logs
#绑定的ip地址(“0.0.0.0”说明都可以访问)
network.host: 192.168.31.101
#对外服务的http端口,默认9200
http.port: 9202
#节点间交互的tcp端口,默认是9300
transport.tcp.port: 9302
#节点列表
discovery.zen.ping.unicast.hosts: ["192.168.31.100:9301", "192.168.31.101:9302","192.168.31.102:9303"]
# 初始主节点列表,用于选举主节点
cluster.initial_master_nodes: ["es-1", "es-2", "es-3"]
#至少两个节点在线
discovery.zen.minimum_master_nodes: 2
# 候选主节点,是否可以推举为主节点
node.master: true
#接入es-head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
es-3节点
#集群名称
cluster.name: openyuan-cluster-es
#节点名称
node.name: es-3
#数据存储路径
path.data: /home/es/data
#日志存储路径
path.logs: /home/es/logs
#绑定的ip地址(“0.0.0.0”说明都可以访问)
network.host: 192.168.31.102
#对外服务的http端口,默认9200
http.port: 9202
#节点间交互的tcp端口,默认是9300
transport.tcp.port: 9303
#节点列表
discovery.zen.ping.unicast.hosts: ["192.168.31.100:9301", "192.168.31.101:9302","192.168.31.102:9303"]
# 初始主节点列表,用于选举主节点
cluster.initial_master_nodes: ["es-1", "es-2", "es-3"]
#至少两个节点在线
discovery.zen.minimum_master_nodes: 2
# 候选主节点,是否可以推举为主节点
node.master: true
#接入es-head插件
http.cors.enabled: true
http.cors.allow-origin: "*"

配置系统命令

通过systemctl操作ES的启动、停止、重启等,无需切换es用户

建立es服务文件

vi /lib/systemd/system/es.service

ps:指定es用户(根据自己情况修改),配置启动命令(根据自己情况修改)

配置文件
[Unit]
Description=elasticsearch
Documentation=https://www.elastic.co
After=network.target[Service]
Type=simple
PrivateTmp=true
# 指定ES用户
User=es
Group=es
LimitNOFILE=100000
LimitNPROC=100000
Restart=yes
# 启动命令
ExecStart=/home/es/bin/elasticsearch
ExecRestart=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID[Install]
WantedBy=multi-user.target
加载服务命令

重新加载systemctl服务,使其生效

sudo systemctl daemon-reload

测试服务命令

启动ES
sudo systemctl start es
结束ES
sudo systemctl stop es

或普通操作

ps aux | grep elasticsearch | grep -v grep | awk '{print $2}' | xargs kill
查看ES状态
sudo systemctl status es

image.png

ES命令

查看节点状况

以es-1为例

curl http://192.168.31.100:9202

image.png

查看集群状况

  • 表示为主节点
curl http://192.168.31.100:9202/_cat/nodes?v

image.png

集群一键脚本

📢 注意:我这里以es-1作为主节点,在es-1生成秘钥拷贝至es-2和es-3,在es-1中执行一键脚本命令。
可自行配置

免密登录

清空ssh秘钥信息(全部节点)
rm -r ~/.ssh
生成秘钥(全部节点)

一路回车

ssh-keygen -t rsa
重命名 && 拷贝秘钥(es-1)
mv /root/.ssh/id_rsa.pub /root/.ssh/id_rsa_es1.pub

拷贝到es-2es-3

scp /root/.ssh/id_rsa_es1.pub root@192.168.31.101:/root/.ssh/
scp /root/.ssh/id_rsa_es1.pub root@192.168.31.102:/root/.ssh/
写入秘钥(es-2和es-3)
cat /root/.ssh/id_rsa_es1.pub >> /root/.ssh/authorized_keys
ssh免密成功
ssh root@192.168.31.252

配置shell脚本

一键启动脚本
vi /home/es-start.sh
#!/bin/bashsystemctl start es
echo "节点: 192.168.31.100 ==> 启动ES...[ done ]"esServers='192.168.31.101 192.168.31.102'# 启动所有的ES
for es in $esServers
dossh root@$es <<EOFsystemctl start es
EOFecho "节点: $es ==> 启动ES...[ done ]"sleep 1
done
一键停止脚本
vi /home/es-stop.sh
#!/bin/bashsystemctl stop es
echo "节点: 192.168.31.100 ==> 停止ES...[ done ]"esServers='192.168.31.101 192.168.31.102'# 启动所有的ES
for es in $esServers
dossh root@$es <<EOFsystemctl stop es
EOFecho "节点: $es ==> 停止ES...[ done ]"sleep 1
done
一键重启脚本
vi /home/es-restart.sh
#!/bin/bashsystemctl restart es
echo "节点: 192.168.31.100 ==> 重启ES...[ done ]"esServers='192.168.31.101 192.168.31.102'# 启动所有的ES
for es in $esServers
dossh root@$es <<EOFsystemctl restart es
EOFecho "节点: $es ==> 重启ES...[ done ]"sleep 1
done
脚本权限授权
chmod u+x /home/es-start.sh /home/es-stop.sh /home/es-restart.sh

执行一键脚本

sh /home/es-startup.sh
sh /home/es-stop.sh
sh /home/es-restart.sh

image.png

配置集群安全验证

修改ES配置

📢 注意:是每个节点都要

vi config/elasticsearch.yml

末尾加上这段配置

# 开启安全验证
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
# 证书认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

生成证书

📌 在es-1节点操作,这个没要求

输入完命令,直接回车就行,在config目录下就有一个新的 elastic-certificates.p12 文件
📢 注意:需要将证书拷贝到其他节点的es目录的config目录下

/home/es/bin/elasticsearch-certutil \
cert -out \
/home/es/config/elastic-certificates.p12 -pass

提示输入密码,直接回车即可
image.png

拷贝证书到其他节点

scp /home/es/config/elastic-certificates.p12 root@192.168.31.101:/home/es/config/
scp /home/es/config/elastic-certificates.p12 root@192.168.31.102:/home/es/config/

image.png

证书授权(每个节点)

chown -R es:es /home/es/config/elastic-certificates.p12 && \
chmod 644 /home/es/config/elastic-certificates.p12

重启ES服务(每个节点)

配置了一键脚本的,可以直接一键stop然后一键start

sudo systemctl restart es

设置密码

📢 注意:这里是上面生成证书的那个节点,我这里是es-1

直接选择自动生成,输入y,记得自己保存好,一共七个用户

# 手动设置密码
/home/es/bin/elasticsearch-setup-passwords interactive# 自动设置密码
/home/es/bin/elasticsearch-setup-passwords auto

image.png

Changed password for user apm_system
PASSWORD apm_system = VPnTuWixz5WQJo6zfhk7Changed password for user kibana_system
PASSWORD kibana_system = jmgNNWkbG8mTo6hTNPCWChanged password for user kibana
PASSWORD kibana = jmgNNWkbG8mTo6hTNPCWChanged password for user logstash_system
PASSWORD logstash_system = rX9FTcgBAGB94pM0RWcJChanged password for user beats_system
PASSWORD beats_system = unQDJ4h4x4WwOl0Mta4XChanged password for user remote_monitoring_user
PASSWORD remote_monitoring_user = A0hgS6Xve1nCcGIolOlfChanged password for user elastic
PASSWORD elastic = VbAiNAUopcBojx79yrQ7

修改密码

curl -H "Content-Type:application/json" -XPOST \
-u elastic 'http://127.0.0.1:9202/_xpack/security/user/elastic/_password' \
-d '{ "password" : "123456" }'

验证

查看节点状态
curl http://192.168.31.100:9202

未授权401错误
image.png
新命令

curl http://192.168.31.100:9202 -u elastic:VbAiNAUopcBojx79yrQ7

image.png

查看集群状态
curl http://elastic:VbAiNAUopcBojx79yrQ7@192.168.31.100:9202/_cat/nodes?v

image.png

浏览器访问

image.png

其他说明

启动失败,无法再次启动

删除data数据目录和日志目录

rm -rf /home/es/data/* && rm -rf /home/es/logs/*
IP或ES配置变更后,秘钥问题

重新生成一次密码即可,无需其他操作

# 自动设置密码
/home/es/bin/elasticsearch-setup-passwords auto

后续拓展

Kibana

后续出…

ELK/EFK

后续出…


🌐 全新的“Open开袁”官方网站现已上线!https://open-yuan.com,汇聚编程资源、深度技术文章及开源项目地址,助您探索技术新境界。

📱 关注微信公众号“全栈小袁”,随时掌握最新项目动态和技术分享,开启技术新篇章!

想要与更多志同道合的伙伴交流心得、分享经验吗?快来加入我们的技术交流社区吧!


这篇关于“小白也能玩转!ES集群搭建零报错全攻略,轻松上手指南!”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828131

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文