Ubuntu搭建ES8集群+加密通讯+https访问

目录

写在前面

一、前期准备

1.  创建用户和用户组

2.  修改limits.conf文件 

3.  关闭操作系统swap功能

4.  调整mmap上限

二、安装ES

1.下载ES

2.配置集群间安全访问证书密钥

3.配置elasticsearch.yml

4.修改jvm.options

5.启动ES服务

6.修改密码

7.启用外部https调用

8.三台都重启

9.查看集群节点状态


写在前面

        这是一份详细的Ubuntu安装Elasticsearch 8.8.2部署教程,适合刚接触的小伙伴,也能帮上有经验的朋友。从环境准备开始,到安装配置,再到集群搭建,手把手教你怎么操作。包括创建用户、设置权限、优化系统参数、生成证书、配置文件调整等步骤,每一步都清清楚楚。按照这个流程走,相信你很快就能跑起一个稳定的ES集群了,祝你顺利!

一、前期准备

1.  创建用户和用户组

        ES不能使用root启动,所以要新建用户,命令如下:

# 创建组
groupadd elastic

# 创建用户
useradd -s /bin/bash -g elastic -m elastic

# 修改elastic密码
passwd elastic
New password: [输入你的新密码]

        以上步骤添加名为elastic用户, 并将其添加至elastic组内, 并修改密码。 

        假如elastic准备放在/data/elastic882/下,需要给这个用户这个目录的所有权:

chown elastic /data/elastic882/
chmod 777 /data/elastic882/

2.  修改limits.conf文件 

        为elastic用户调整最大的文件和线程资源数上限:

  vi /etc/security/limits.conf

  # 添加如下配置
  elastic – nofile 65536
  elastic – nproc 4096

        在ubuntu操作系统下,需要确保/etc/pam.d/su文件中,已经开启pam_limits功能,使得上述limits.conf文件生效:

grep pam_limits /etc/pam.d/su

# 应如下信息,如果没有就加上
session    required pam_limits.so

3.  关闭操作系统swap功能

        修改/etc/fstab,注释掉所有与swap的功能

vi /etc/fstab

# 比如下面这样
/dev/mapper/openeuler_zhrm--es01-root /                       xfs     defaults        0 0
UUID=2c60fc0b-ea0d-43cb-8f8b-bb607b3e49f0 /boot                   ext4    defaults        1 2
# /dev/mapper/openeuler_zhrm--es01-swap none                    swap    defaults        0 0
UUID=1d193d38-969c-4dac-b2ef-b4b26f6f778f /data                   xfs    defaults        0 0

(需要重启才能生效) 

        关闭此功能前的效果:

        生效的后的效果:

4.  调整mmap上限

修改/etc/sysctl.conf 

vi /etc/sysctl.conf 


添加如下设置

vm.max_map_count=262144 

重启系统,让上面的设置生效。

二、安装ES

        我们以三台服务器为例(假设为node-1、node-2、node-3),使用es8.8.2,es安装在 /data/elastic882 目录。

1.下载ES

​cd /data/elastic882
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.2-linux-x86_64.tar.gz
tar -zxvf elasticsearch-8.8.2-linux-x86_64.tar.gz

2.配置集群间安全访问证书密钥

        在任意一台执行命令,颁发证书:

cd elasticsearch-8.8.2
# 签发ca证书
./bin/elasticsearch-certutil ca 
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车

# 用ca证书签发节点证书
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12  
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车

# 将证书放到certs目录(手动创建)
mkdir config/certs
mv elastic-certificates.p12  elastic-stack-ca.p12 config/certs 

        然后把elastic-certificates.p12  elastic-stack-ca.p12两个文件另外两个服务器的相同位置:

/data/elastic882/elasticsearch-8.8.2/config/certs

3.配置elasticsearch.yml

vi /data/elastic882/elasticsearch-8.8.2/config/elasticsearch.yml 添加如下配置,三台都这么做:

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------

# Enable security features
xpack.security.enabled: true

xpack.security.enrollment.enabled: true

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/elastic-certificates.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/elastic-certificates.p12
  truststore.path: certs/elastic-certificates.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
ingest.geoip.downloader.enabled: false
#--------------------- END SECURITY AUTO CONFIGURATION -------------------------

        继续修改elasticsearch.yml

        node-1配置,注意下面的ip1、ip2、ip3要替换成自己实际的ip:

cluster.name: es8
http.cors.enabled: true
http.cors.allow-origin: "*"
action.destructive_requires_name: false

node.name: node-1
node.roles: [master,data]

path.data: /data/elastic882/data
path.logs: /data/elastic882/logs

network.host: 0.0.0.0
http.port: 9200
http.publish_host: ip1

discovery.seed_hosts: ["ip1:9300","ip2:9300","ip3:9300"]

cluster.initial_master_nodes: ["node-1","node-2","node-3"]

        node-2只有下面两个配置不同:

node.name: node-2

http.publish_host: ip2

        node-3也是:

node.name: node-3

http.publish_host: ip3

4.修改jvm.options

         最大最小堆内存需要根据实际机器情况配置, 上限(不包括)32G,注意这两个参数前不要有空格:

vi jvm.options

# 下面两行的注释 打开配置合适的大小
-Xms4g
-Xmx4g

5.启动ES服务

# 三台都启动
./bin/elasticsearch -d -p pid 

6.修改密码

        在任意一台上执行修改密码的命令:

./bin/elasticsearch-reset-password -u elastic -i


Please confirm that you would like to continue [y/N]y
Enter password for [elastic]: [你的ES密码]
Re-enter password for [elastic]: [你的ES密码]

7.启用外部https调用

# 三台都改
vi /data/elastic882/elasticsearch-8.8.2/config/elasticsearch.yml

# 将这个参数变为true
xpack.security.http.ssl:
  enabled: true

8.三台都重启

# 关闭
kill `cat pid`

# 启动
./bin/elasticsearch -d -p pid 

9.查看集群节点状态

# 集群各个节点状态,可以看到三个节点的信息
curl -k -u elastic:[你的ES密码] https://127.0.0.1:9200/_cat/nodes?v

ip             heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
[ip1]            8          22   4    0.81    0.37     0.21 dm        *      node-1
[ip1]            8          22   5    0.56    0.27     0.14 dm        -      node-3
[ip1]            7          26   5    0.53    0.23     0.12 dm        -      node-2


# 查看集群的健康状态
curl -k  -u elastic:[你的ES密码]  https://127.0.00.1:9200/_cat/health?v

epoch      timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1734652132 23:48:52  es8     green           3         3      2   1    0    0        0             0                  -                100.0%

        注意elasticsearch.yml配置文件要遵循yml格式要求,每一行的开头空格很敏感,不要写错。

        ES8集群部署就介绍到这,关注不迷路,(#^.^#)

  了解更多优质内容,商务合作!!!  搞钱入口》》》

  还在为找工作烦恼吗,用这个宝藏小程序,拿Offer快人一步!Offer入口》》》

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子电气架构---基于PREEvision的线束设计工作流程优化

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap

re:Invent 是全球云计算领域的顶级盛会,每年都会吸引来自世界各地的技术领袖、创新者和实践者汇聚一堂,分享最新的技术成果和创新实践,深圳 UG 作为亚马逊云科技技术社区的重要组成部分,将借助 re:Invent 的东风,举办此…

从零搭建纯前端飞机大战游戏(附源码)

目录 前言 一、游戏概览与技术选型 二、HTML 结构搭建和CSS样式美化 三、JavaScript 核心逻辑 1.变量声明与初始化 2.玩家飞机控制函数 3.射击与子弹管理函数 4.敌机生成与管理函数 5.碰撞检测与得分更新函数 6.游戏主循环与启动函数 四、完整代码 前言 在前端开发的…

【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南

硬件:Apple M4 Pro 16寸 系统: macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器,广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…

简单了解图注意力机制

简单了解图注意力机制 如果对传统的图匹配的聚合方式进行创新的话,也就是对h这一个节点的聚合方式进行创新。 h i ( l 1 ) Norm ⁡ ( σ ( h i ( l ) α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l1)}\operatorname{Norm}\left(\sigm…

aosp15 - App冷启动

纸上得来终觉浅,绝知此事要躬行。 —— [宋]陆游 基于aosp_cf_x86_64_phone-trunk_staging-eng , 下面是具体断点位置。 第一部分,桌面launcher进程 com.android.launcher3.touch.ItemClickHandler onClickonClickAppShortcutstartAppShor…

arcgisPro相接多个面要素转出为完整独立线要素

1、使用【面转线】工具,并取消勾选“识别和存储面邻域信息”,如下: 2、得到的线要素,如下:

树莓派4B 搭建openwrt内置超多插件docker,nas等等使用教程

刷入固件 (想要固件的加我vx wyy7293) bleachwrt-plus-20241112-bcm27xx-bcm2711-rpi-4-squashfs-factory.img上电,并且把网线两头分别插在pi网口上和电脑的网口上(电脑必须断网) 等待网口灯亮,进入192.168.1.1 默认账密 root password 进入系统后更改openwrt的网关地址相关…

Java开发经验——数据库开发经验

摘要 本文主要介绍了Java开发中的数据库操作规范,包括数据库建表规范、索引规约、SQL规范和ORM规约。强调了在数据库设计和操作中应遵循的最佳实践,如字段命名、数据类型选择、索引创建、SQL语句编写和ORM映射,旨在提高数据库操作的性能和安…

springboot462学生心理压力咨询评判(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装学生心理压力咨询评判软件来发挥其高效地信息处理的作用&am…

练习题:一维数组

练习题 第一题 键盘录入一组数列&#xff0c;利用冒泡排序将数据由大到小排序 代码 #include <stdio.h>int arr_home01() {int arr[10];int i,j,temp;printf("请输入10个测试整数&#xff1a;\n");int len sizeof(arr) / sizeof(arr[0]);for(i 0;i < …

基于LR/GNB/SVM/KNN/DT算法的鸢尾花分类和K-Means算法的聚类分析

花瓣轮廓&#xff1a; 分类与聚类 使用各种模型进行鸢尾花分类和聚类 1. | 介绍 &#x1f44b; &#x1f914; 数据集问题 鸢尾花分类项目是使用简单数据集实现机器学习模型的实际演示。数据集本身包含有关花瓣和萼片大小的信息&#xff0c;包括鸢尾属物种。通过分析鸢尾花的…

创新驱动医疗变革:SSM+Vue 医院预约挂号系统的设计与实践

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理医院预约挂号系统的相关信息成为必然。开发…

【Java】HashMap的简单教程

HashMap 是 Java 中最常用的数据结构之一&#xff0c;属于 java.util 包&#xff0c;主要用于以键值对&#xff08;key-value&#xff09;形式存储数据。 基本用法 1.创建 HashMap 使用泛型&#xff0c;存储键值对。 import java.util.HashMap;HashMap<KeyType, ValueTy…

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒&#xff0c;变成别人肉鸡&#xff0c;不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长&#xff0c;比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…

免费送源码:Java+ssm++MVC+HTML+CSS+MySQL springboot 社区医院信息管理系统的设计与实现 计算机毕业设计原创定制

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设社区医院信息管理系统…

AI的进阶之路:从机器学习到深度学习的演变(四)

AI的进阶之路&#xff1a;从机器学习到深度学习的演变&#xff08;三&#xff09; 五、深度学习的应用领域 深度学习的应用领域广泛&#xff0c;涵盖了计算机视觉、自然语言处理、语音识别和推荐系统等多个方面。以下将详细探讨这些关键应用领域&#xff0c;展示深度学习在不同…

electron-vite【实战】自定义标题栏【组件封装】(含异形标题栏,指定区域拖拽,窗口置顶,窗口最小化,窗口最大化,取消最大化,隐藏窗口到托盘等)

效果预览 技术要点 透明背景 src/main/index.ts 的 new BrowserWindow 中添加 transparent: true, // 设置窗口背景透明frame: false, // 隐藏窗口边框仅图标和标题部分可拖拽 仅图标和标题部分添加样式 drag .drag {-webkit-app-region: drag; }图标与标题栏的融合 标题栏的…

[react] 获取ant组件ref用ts如何定义?

获取ant的轮播图组件, 我用ts如何定义? import React, { ElementRef } from react; const lunboRef useRef<ElementRef<typeof Carousel>>(null); <Carousel autoplay ref{lunboRef}> 这样就行了! ,然后点一下看看.弹出提示了 当然你还可以用ant内置的G…

springboot中Controller内文件上传到本地以及阿里云

上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年龄&#xf…