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

news/2024/12/21 21:51:57/

目录

写在前面

一、前期准备

1.  创建用户和用户组

2.  修改limits.conf文件 

3.  关闭操作系统swap功能

4.  调整mmap上限

二、安装ES

1.下载ES

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

elasticsearch.yml-toc" style="margin-left:40px;">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 65536elastic – 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

elasticsearch.yml">3.配置elasticsearch.yml

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

#----------------------- BEGIN SECURITY AUTO CONFIGURATION -----------------------# Enable security features
xpack.security.enabled: truexpack.security.enrollment.enabled: true# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:enabled: falsekeystore.path: certs/elastic-certificates.p12# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:enabled: trueverification_mode: certificatekeystore.path: certs/elastic-certificates.p12truststore.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: falsenode.name: node-1
node.roles: [master,data]path.data: /data/elastic882/data
path.logs: /data/elastic882/logsnetwork.host: 0.0.0.0
http.port: 9200
http.publish_host: ip1discovery.seed_hosts: ["ip1:9300","ip2:9300","ip3:9300"]cluster.initial_master_nodes: ["node-1","node-2","node-3"]

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

node.name: node-2http.publish_host: ip2

        node-3也是:

node.name: node-3http.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 -iPlease 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?vip             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?vepoch      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入口》》》


http://www.ppmy.cn/news/1557024.html

相关文章

基底展开(Expansion in a Basis):概念、推导与应用 (中英双语)

参考:Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe Website: https://web.stanford.edu/~boyd/vmls/ 基底展开(Expansion in a Basis):概念、推导与…

JS实现在线预览HTML文件

要在JavaScript中直接预览一个在线的HTML文件,可以采用以下几种方法: 使用iframe标签 这是最简单的方法之一。你可以创建一个iframe元素,并设置其src属性为在线HTML文件的URL。示例代码:const iframe document.createElement(i…

数据分析实战—鸢尾花数据分类

1.实战内容 (1) 加载鸢尾花数据集(iris.txt)并存到iris_df中,使用seaborn.lmplot寻找class(种类)项中的异常值,其他异常值也同时处理 。 import pandas as pd from sklearn.datasets import load_iris pd.set_option(display.max_columns, N…

【故障处理系列--gitlab的CI流水线下载安装包提示报错】

故障现象: 前端同事一直向我反映使用alpine-node系列的镜像,安装包报错故障原因 在CI文件上配置的代理没有生效,导致流水线无法在gitlab-runner上拉取https://registry.npmmirror.com仓库软件包 后来查资料提示说,在gitlab的CI文…

SQL 外联结与全联结的使用详解

在数据库查询中,联结操作是用于从多个表中获取相关数据的关键技术。SQL 提供了多种类型的联结(Join)方式,其中外联结(Outer Join)和全联结(Full Outer Join)是常用的两种类型。它们不…

android opencv导入进行编译

1、直接新建module进行导入,选择opencv的sdk 导入module模式,选择下载好的sdk,修改module name为OpenCV490。 有报错直接解决报错,没报错直接运行成功。 2、解决错误,同步成功 一般报错是gradle版本问题较多。我的报…

信息安全管理与评估赛项任务书(模块二)

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、比赛时间及注意事项 本阶段比赛时长为180分钟,时间为13:30-16:30。 【注意事项】 (1) 比赛结束,不得关机; (2) 选手首先需要在U盘的根目…

uni-app商品搜索页面

目录 一:功能概述 二:功能实现 一:功能概述 商品搜索页面,可以根据商品品牌,商品分类,商品价格等信息实现商品搜索和列表展示。 二:功能实现 1:商品搜索数据 <view class="search-map padding-main bg-base"> <view class…