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

目录

写在前面

一、前期准备

[1. 创建用户和用户组](#1. 创建用户和用户组)

[2. 修改limits.conf文件](#2. 修改limits.conf文件)

[3. 关闭操作系统swap功能](#3. 关闭操作系统swap功能)

[4. 调整mmap上限](#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入口》》》****

相关推荐
SimonKing38 分钟前
分享一款可以管理本地端口的IDEA插件:Port Manager
java·后端·程序员
索荣荣44 分钟前
Maven配置文件(pom.xml)终极指南
java·开发语言
代码栈上的思考1 小时前
SpringBoot 拦截器
java·spring boot·spring
送秋三十五1 小时前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
龙山云仓1 小时前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
雨中飘荡的记忆1 小时前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
yyy的学习记录1 小时前
Ubuntu下urdf模型转换成proto模型
linux·运维·ubuntu
jbtianci1 小时前
Spring Boot管理用户数据
java·spring boot·后端
xixingzhe21 小时前
ubuntu安装gitlab
linux·ubuntu·gitlab
Sylvia-girl1 小时前
线程池~~
java·开发语言