ES集群搭建、身份认证配置

虚机搭建

添加es用户

elasticsearch 默认不允许root用户启动,所以需要创建es用户

useradd elasticsearch
passwd elasticsearch

解压安装包

#解压es
tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz

将文件夹赋予es用户权限

#将文件夹赋予es用户权限
sudo chown -R elasticsearch:elasticsearch /data/elasticsearch/elasticsearch-7.14.2/

elasticsearch文件

elasticsearch.yml

cluster.name: es-cluster
#设置节点名称,集群内节点名称必须唯一。
node.name: node1
#表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
#当前节点是否用于存储数据,是:true、否:false
node.data: true
#索引数据存放的位置
path.data: /usr/share/elasticsearch/data
#日志文件存放的位置
path.logs: /usr/share/elasticsearch/logs
#需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false
#监听地址,用于访问该es
network.host: 0.0.0.0
#es对外提供的http端口,默认 9200
http.port: 9200
#TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
#cluster.initial_master_nodes: ["node1"]
#是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
#“*” 表示支持所有域名
http.cors.allow-origin: "*"##############
cluster.name: es-cluster
#设置节点名称,集群内节点名称必须唯一。
node.name: node2
#表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
#当前节点是否用于存储数据,是:true、否:false
node.data: true
#索引数据存放的位置
path.data: /usr/share/elasticsearch/data
#日志文件存放的位置
path.logs: /usr/share/elasticsearch/logs
#需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false
#监听地址,用于访问该es
network.host: 0.0.0.0
#es对外提供的http端口,默认 9200
http.port: 9200
#TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["node1ip:9300", "node2ip:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300"]
#cluster.initial_master_nodes: ["node1"]
#是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
#“*” 表示支持所有域名
http.cors.allow-origin: "*"

启动es集群

#前置环境(es启动需要最小内存4G,否则无法启动,OOM)
#通过修改机器进程虚拟内存可启动es

vim /etc/sysctl.conf
#fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高
fs.file-max=655360
#影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小
vm.max_map_count = 262144#生效
sysctl -p

设置安全认证

es配置文件添加认证

新增配置,每个集群节点都需要设置。

xpack.security.enabled: true
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"

 生成TLS 和身份验证

将会在config下生成elastic-certificates.p12文件,将此文件传到其他两个节点的config目录

注意文件权限

bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""chmod 644 /data/elasticsearch/config/elastic-certificates.p12
#sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12

启动集群 

es 集群不启动,下面的添加密码操作执行不了。

设置密码

在主节点上执行就行,数据会自动同步到其他节点

#启动es,之后执行
./bin/elasticsearch-setup-passwords interactive

springboot访问

    @Override@Beanpublic RestHighLevelClient elasticsearchClient (){final ClientConfiguration clientConfiguration =ClientConfiguration.builder().connectedTo(esUrl).withBasicAuth("elastic", "elastic").build();return RestClients.create(clientConfiguration).rest();}

docker 搭建ES集群

docker安装

sudo yum install docker
sudo systemctl start docker
sudo systemctl enable docker
sudo docker info

 下载镜像

sudo docker pull elasticsearch:7.14.2
#docker pull docker.elastic.co/elasticsearch/elasticsearch:7.14.2

创建数据挂载外链

mkdir -p /data/elasticsearch/data && mkdir -p /data/elasticsearch/config && mkdir -p /data/elasticsearch/logs && mkdir -p /data/elasticsearch/plugins

elasticsearch文件

cluster.name: es-cluster
#设置节点名称,集群内节点名称必须唯一。
node.name: node1
#表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
#当前节点是否用于存储数据,是:true、否:false
#node.data: true
#索引数据存放的位置
path.data: /usr/share/elasticsearch/data
#日志文件存放的位置
path.logs: /usr/share/elasticsearch/logs
#需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false
#监听地址,用于访问该es
network.host: 0.0.0.0
#es对外提供的http端口,默认 9200
http.port: 9200
#TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
#cluster.initial_master_nodes: ["node1"]
#是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
#“*” 表示支持所有域名
http.cors.allow-origin: "*"
xpack.security.enabled: false######################
cluster.name: es-cluster
#设置节点名称,集群内节点名称必须唯一。
node.name: node2
#表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
#当前节点是否用于存储数据,是:true、否:false
node.data: true
#索引数据存放的位置
path.data: /usr/share/elasticsearch/data
#日志文件存放的位置
path.logs: /usr/share/elasticsearch/logs
#需求锁住物理内存,是:true、否:false
bootstrap.memory_lock: false
#监听地址,用于访问该es
network.host: 0.0.0.0
#es对外提供的http端口,默认 9200
http.port: 9200
#TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
#设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
#es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1ip:9300", "node2ip:9300","node3ip:9300"]
cluster.initial_master_nodes: ["node1"]
#是否支持跨域,是:true,在使用head插件时需要此配置
http.cors.enabled: true
#“*” 表示支持所有域名
http.cors.allow-origin: "*"
xpack.security.enabled: false

 启动es集群

docker run -d --network=host --privileged=true \
-e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
-e TAKE_FILE_OWNERSHIP=true --name es \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data  \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs  \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins  \
--restart unless-stopped elasticsearch:7.14.2#elasticsearch:7.14.2或者已下载好的镜像docker.elastic.co/elasticsearch/elasticsearch:7.14.2 #参数解释
-d:将容器以后台模式(detached mode)运行。
--network=host:使用主机网络模式,容器与主机共享网络命名空间。
--privileged=true:为容器提供特权访问,允许容器内部进行特权操作。
-e ES_JAVA_OPTS="-Xms2g -Xmx2g":设置 Elasticsearch Java 虚拟机 (JVM) 的启动参数,其中 -Xms2g 是最小堆内存大小,-Xmx2g 是最大堆内存大小。
-e TAKE_FILE_OWNERSHIP=true:指示 Elasticsearch 在启动时获取文件所有权。
--name es:为容器指定一个名称为 "es"。
-v:将主机上的 Elasticsearch 配置文件挂载到容器内部
--restart unless-stopped:在容器退出时自动重启容器,除非手动停止容器。

设置安全验证

 es配置文件添加认证

新增配置,每个集群节点都需要设置。

xpack.security.enabled: true
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"

 生成TLS 和身份验证

进入docker

docker exec -it id bash

 生成证书

bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""chmod 644 /data/elasticsearch/config/elastic-certificates.p12
#sudo chmod 777 /data/elasticsearch/config/elastic-stack-ca.p12

 将证书同步到其他节点

#复制证书到外链目录
docker cp df3552171cf0:/usr/share/elasticsearch/config/elastic-certificates.p12 ./config/elastic-certificates.p12#scp到其他节点
scp ./config/elastic-certificates.p12 user@ip:/dir

启动集群 

es 集群不启动,下面的添加密码操作执行不了。

需挂载证书

docker run -d --network=host --privileged=true \
-e ES_JAVA_OPTS="-Xms2g -Xmx2g" \
-e TAKE_FILE_OWNERSHIP=true --name es \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml  \
-v /data/elasticsearch/config/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12  \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data  \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs  \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins  \
--restart unless-stopped elasticsearch:7.14.2

设置密码

在主节点上执行就行,数据会自动同步到其他节点

#进入docker#设置密码
./bin/elasticsearch-setup-passwords interactive

访问es

 curl -user elastic http://10.100.31.170:9200/_cluster/health    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

controlnet的preprocessor类型

GitHub - huggingface/controlnet_auxContribute to huggingface/controlnet_aux development by creating an account on GitHub.https://github.com/huggingface/controlnet_aux/https://huggingface.co/lllyasviel/sd_control_collection

js中日期Date的使用

日常搬砖过程中,凡事使用到Date总是一知半解,每次都要查阅资料,今天有时间把这里整理一下,希望今天储备的知识,够以后使用就不用查阅资料了哈,现在开始吧 new Date() 使用它可以创建一个日期实例,并返回代表当前时间的字符串 接收参数有5种形式 无参数,新创建的 Date 对象代…

Qt绘制箭头

Qt绘制箭头 接收两个点作为向量的两端,用来确定箭头方向,额外添加参数,确定箭头是否和向量一致 然后使用fillPath填充箭头 QPainterPath arrowPath(const QPointF& p1, const QPointF& p2, int direct 0, int endIndex 0, int ar…

智慧监控 高效运维

随着企业IT建设的不断深入和完善,IT管理的重要性逐渐被重视,打通数据割裂,使业务更加充分融合。亟需一套统一的平台来实现跨品牌跨设备类型的集中监控和管理。 LinkSLA带外监控平台,不仅适用于大规模或超大规模的运维场景&#x…

量化交易的优势和QMT、Ptrade开通流程

量化交易没有一个精确的定义,广义上可以认为,凡是借助于数学模型和计算机实现的交易方法都可以称为量化交易。 量化交易的基本原理是通过计算机方法对海量的股票市场历史数据进行分析,总结出一些能够带来持续收益的交易因子。根据这些因子编…

Tomcat添加服务以及设置开机自启

下载地址连接 Index of /dist/tomcat👓 注意点:不要出现中文路径 #环境变量CATALINA_HOME=D:\apache-tomcat-7.0.62 TOMCAT_HOME=D:\apache-tomcat-7.0.62 JAVA_HOME=D:\tool\jdk1.8.0_111 PATH=%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\lib;D:\tool\jdk1.…

将数据结构和流程可视化——E-R图和DFD图

通过程序处理数据时,不仅可以将数据保存到文件,还可以将其保存到数据库中。在数据库中数据是以表格形式保存的,但并不是只有一个表格,而是多个表格进行保存,因此数据更易于管理,即使变更数据,也…

Spring MVC(一)

1 Spring MVC概述 我们在之前学习Servlet的时候,认识了在WEB开发中MVC设计模式,其最为经典的设计就是,通过控制器(Controller)分离模型(Model)和视图(View)。在具体的WEB…

Redis进阶学习

Redis进阶学习 一、Redis事务1.2 Redis监控1.3 Jedis连接1.4 SpringBoot整合1.5 自定义RedisTemple1.6 Redis.conf详解 二、 Redis持久化2.1 RDB2.2 AOF进程 三、Redis发布订阅3.1 Redis主从复制3.2 集群环境配置3.3、复制原理3.4、宕机后主动变为主机3.5、哨兵模式 四、Redis缓…

【ITK配准】第七期 尺度(Metric)-基匹配Metric

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK中的基匹配Metric,即itk::MatchCardinalityImageToImageMetric ,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我…

【算法刷题day45】卡码网:70. 爬楼梯(进阶版);Leetcode:322. 零钱兑换、279. 完全平方数

文章目录 Leetcode 70. 爬楼梯(进阶版)解题思路代码总结 Leetcode 322. 零钱兑换解题思路代码总结 Leetcode 279. 完全平方数解题思路代码总结 草稿图网站 java的Deque Leetcode 70. 爬楼梯(进阶版) 题目:70. 爬楼梯&…

2024年大数据与艺术设计国际学术会议(ICBDAD 2024)

2024年大数据与艺术设计国际学术会议(ICBDAD 2024) 2024 International Conference on Big Data and Art Design 一、【会议简介】 2024年大数据与艺术设计国际学术会议,听起来好像两个完全不相关的领域,却意外地融合在了一起。 在这个会议上&#xff0c…

力士乐触摸屏维修VCP11.2DWN-003-NN-NN-PW工业液晶屏幕电脑主机深圳捷达工控维修

扩展的性能、高系统可用性和多种配置选项 借助 lndraControl 系列工业 PC 和显示器,实现高性能和高灵活性。 lndraControl PR 性能分级盒采用最新的 Intel ATOM 和 Core-i 处理器,可与 lndraControl DR 多点触控显示屏集成,连接距离可达 100M…

el-carousel走马灯页数回到第一页

我的走马灯是在一个弹窗里,包裹着一些button,切换到下一页时 关闭弹窗再打开弹窗还显示的是上次第二页位置 领导很不满意 1. 2.写在你打开弹窗或者关闭弹窗的位置 this.$refs.carousel && (this.$refs.carousel.activeIndex 0); 解释一下: this.$refs.carousel: thi…

开源数据可视化大屏对接表单数据实践!

如果你需要一个表单系统,进行数据收集;可以使用tduck填鸭进行私有化部署,进行表单制作,完成数据收集。 在实际业务中,往往需要将收集的数据进行展示或分析;此时就可以使用表单数据推送到TReport中&#xf…

华为eNSP中型企业局域网网络规划设计(下)

→b站传送门,感谢大佬← →华为eNSP中型企业局域网网络规划设计(上)← →拓扑图传送门,可以自己配置着玩← 配置ospf AR3 [AR3]ospf 1 router-id 3.3.3.3 //出口默认路由 [AR3-ospf-1]default-route-advertise always #area…

R语言数据探索与分析-中国GDP回归分析与预测

首先读取数据: 将GDP列转换为常规数字格式 # 可视化GDP数据 # 查看数据结构 # 确保数据类型是正确的 第一张图片展示了中国2002年到2021年间的GDP增长趋势,这是一个时间序列图,其中横轴表示年份,纵轴表示GDP(单位未…

OpenAI 高管:一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕|TodayAI

OpenAI 的首席运营官 Brad Lightcap 表示,一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕。未来的 ChatGPT 版本将会有重大升级。他还讨论了 AI 取代人类工作和对电网的压力的可能性。 虽然我们不知道 OpenAI 何时会推出 GPT-5,但公司高管已…

三年软件测试经验遭遇求职困境?揭秘求职市场的隐藏陷阱

1.个人背景 小李,我的一位朋友,拥有三年多的软件测试工作经验。他本科毕业后便投身于测试行业,熟练掌握Python编程,能够编写自动化测试脚本,并且熟悉Selenium和性能测试。然而,尽管他具备这些技能和经验&am…

Zabbix+Grafana-常见报错及异常处理方式记录

文章目录 Zabbix安装篇Zabbix Web页面连接数据库失败 Zabbix使用篇中文显示不全 Zabbix报警篇新建的用户,配置报警后,无法收到报警 Grafana安装篇Windows系统安装时,添加zabbix报错:An error occurred within the plugin Zabbix安…