Elasticsearch集群部署和安全认证配置

文档地址:

官网文档地址: https://www.elastic.co/guide/index.html
rpm包/源码下载地址:https://www.elastic.co/cn/downloads

源码安装-环境准备:

node-01       192.168.0.133
node-02       192.168.0.215
node-03       192.168.0.222

修改服务器配置参数:

#### 每台ES服务器都需要执行

1、设置文件打开数:
vim /etc/security/limits.conf
 
* soft nofile 65535
* hard nofile 65537

2、设置虚拟内存和限制swap
#临时禁用
禁用swap: 
swapoff -a

vim /etc/sysctl.conf
vm.max_map_count = 655360
vm.swappiness=0
 #生效
sysctl -p

3、解压:
mkdir /mnt/elasticsearch/
cd /mnt/elasticsearch/
tar xf elasticsearch-8.11.4-linux-x86_64.tar.gz

4、创建数据和日志目录
mkdir /mnt/elasticsearch/elasticsearch-8.11.4/esdat
mkdir /mnt/elasticsearch/elasticsearch-8.11.4/eslog

修改Elasticsearch配置参数:

##node-1上执行
1、修改jvm内存
vim /mnt/elasticsearch/elasticsearch-8.11.4/config/jvm.options
#根据需求和自身内存设置,我这里是1G
-Xms1g
-Xmx1g

2、把设置好的目录cp到其他服务器
scp -rp /mnt/elasticsearch/ root@192.168.0.215:/mnt/
scp -rp /mnt/elasticsearch/ root@192.168.0.222:/mnt/

编辑集群配置文件

##node-1 
vim /mnt/elasticsearch/elasticsearch-8.11.4/config/elasticsearch.yml
# 集群名称和节点名称
cluster.name: elasticsearch-cs
# 每个节点的名称,可自定义
node.name: node-1
# 节点表示该节点只接受来自这个IP地址的连接
network.host: 0.0.0.0
# 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
network.publish_host: 192.168.0.133
# 端口
http.port: 9200
transport.port: 9300

# 使节点有资格成为主节点     这个目前不兼容,换成下面的就可以了
#node.master: true 
# 使节点可以存储数据
#node.data: true 
node.roles: [master, data]

#自定义数据和日志存放位置,建议挂载一块大点的磁盘
path.data: /mnt/elasticsearch/elasticsearch-8.11.4/esdata
path.logs: /mnt/elasticsearch/elasticsearch-8.11.4/eslog

# 列出所有节点的私有IP地址
discovery.seed_hosts: ["192.168.0.133", "192.168.0.215", "192.168.0.222"]
# 初始化有资格成为master的节点,这里配置的三个节点都可以选为master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# 是否允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
 
# 安全认证部分
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
##node-2
vim /mnt/elasticsearch/elasticsearch-8.11.4/config/elasticsearch.yml
# 集群名称和节点名称
cluster.name: elasticsearch-cs
# 每个节点的名称,可自定义
node.name: node-2
# 节点表示该节点只接受来自这个IP地址的连接
network.host: 0.0.0.0
# 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
network.publish_host: 192.168.0.215
# 端口
http.port: 9200
transport.port: 9300

# 使节点有资格成为主节点     这个目前不兼容,换成下面的就可以了
#node.master: true 
# 使节点可以存储数据
#node.data: true 
node.roles: [master, data]

#自定义数据和日志存放位置,建议挂载一块大点的磁盘
path.data: /mnt/elasticsearch/elasticsearch-8.11.4/esdata
path.logs: /mnt/elasticsearch/elasticsearch-8.11.4/eslog

# 列出所有节点的私有IP地址
discovery.seed_hosts: ["192.168.0.133", "192.168.0.215", "192.168.0.222"]
# 初始化有资格成为master的节点,这里配置的三个节点都可以选为master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# 是否允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
 
# 安全认证部分
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
##node-3
vim /mnt/elasticsearch/elasticsearch-8.11.4/config/elasticsearch.yml
#集群名称和节点名称
cluster.name: elasticsearch-cs
# 每个节点的名称,可自定义
node.name: node-3
# 节点表示该节点只接受来自这个IP地址的连接
network.host: 0.0.0.0
# 用于集群内各机器间通信,对外使用,其他机器访问本机器的es服务,一般为本机宿主机IP
network.publish_host: 192.168.0.222
# 端口
http.port: 9200
transport.port: 9300

# 使节点有资格成为主节点     这个目前不兼容,换成下面的就可以了
#node.master: true 
# 使节点可以存储数据
#node.data: true 
node.roles: [master, data]

#自定义数据和日志存放位置,建议挂载一块大点的磁盘
path.data: /mnt/elasticsearch/elasticsearch-8.11.4/esdata
path.logs: /mnt/elasticsearch/elasticsearch-8.11.4/eslog

# 列出所有节点的私有IP地址
discovery.seed_hosts: ["192.168.0.133", "192.168.0.215", "192.168.0.222"]
# 初始化有资格成为master的节点,这里配置的三个节点都可以选为master
cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# 是否允许跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
 
# 安全认证部分
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

安全认证操作配置:

##node-1上执行

cd /mnt/elasticsearch/elasticsearch-8.11.4/bin/

#生成CA证书,执行命令后,系统还会提示你输入密码,可以直接留空

./elasticsearch-certutil ca
 
#会在config下生成一个elastic-stack-ca.p12文件
#注:有时候不在config/下,在elasticsearch-8.11.4/下面。mv到config下就可以

ls -al ../config/elastic-stack-ca.p12 
-rw-------. 1 elastic elastic 2527 May 21 14:29 ../config/elastic-stack-ca.p12
 
#根据elastic-stack-ca.p12文件 生成elastic-certificates.p12
#生成证书和私钥,系统还会提示你输入密码,你可以输入证书和密钥的密码,也可以留空

./elasticsearch-certutil cert --ca elastic-stack-ca.p12

#将节点node-01上生成的两个文件拷贝到另外的节点

scp -rp /mnt/elasticsearch/elasticsearch-8.11.4/config/elastic-certificates.p12 elastic-stack-ca.p12  root@192.168.0.215:/mnt/elasticsearch/elasticsearch-8.11.4/config/
scp -rp /mnt/elasticsearch/elasticsearch-8.11.4/config/elastic-certificates.p12 elastic-stack-ca.p12  root@192.168.0.222:/mnt/elasticsearch/elasticsearch-8.11.4/config/

启动:

##所有节点执行
#创建es用户并授权
useradd es
chown -R es.es /mnt/elasticsearch/

#启动es
su - es
cd /mnt/elasticsearch/elasticsearch-8.11.4/bin
nohup ./elasticsearch &

#注意查看日志有没有报错或者一直刷
#报错即启动失败
#启动成功日志一直刷即节点连接不上集群其他节点

举例如果node-1未加入集群:

#停止es服务,删除/esdata里的数据
rm -rf /mnt/elasticsearch/elasticsearch-8.11.4/esdata/*
rm -rf /mnt/elasticsearch/elasticsearch-8.11.4/eslog/*

#重新启动es服务就会加入集群

设置es密码:

在其中一台机器上执行,我这里在node-01节点机器操作,我这里密码全部设置为(123456)

cd /mnt/elasticsearch/elasticsearch-8.11.4/bin
./elasticsearch-setup-passwords interactive
 
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]  y
 
 
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

通过用户名密码验证集群状态:

curl -u elastic 'http://192.168.0.215:9200/_cat/health?v'
Enter host password for user 'elastic':
epoch      timestamp cluster          status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1725509806 04:16:46  elasticsearch-cs green           3         3      2   1    0    0        0             0                  -                100.0%


curl -u elastic 'http://192.168.0.215:9200/_cat/nodes?v'
Enter host password for user 'elastic':
ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.0.215           63          71   0    0.00    0.01     0.05 dm        *      node-2
192.168.0.133           22          97   0    0.05    0.03     0.05 dm        -      node-1
192.168.0.222           16          72   0    0.02    0.04     0.05 dm        -      node-3

==========================
这是个单机版的配置文件不需要的话无需关注

#======================== Elasticsearch Configuration =========================                                      
#放开node.name,集群模式下,放开cluster.name
node.name: node-1
# 数据存储和日志存储路径放开注释
path.data: /mnt/elasticsearch/elasticsearch-8.11.4/esdata
path.logs: /mnt/elasticsearch/elasticsearch-8.11.4/eslog
# 设置ip地址,任务网络均可访问
network.host: 0.0.0.0
# 放开http.port:9200
http.port: 9200

# Enable security features    
# 安全认证部分
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

cluster.initial_master_nodes: ["node-1"]
## 跨域资源共享设置
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,030评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,198评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,995评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,973评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,869评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,766评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,967评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,599评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,886评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,901评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,728评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,504评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,967评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,128评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,445评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,018评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,224评论 2 339

推荐阅读更多精彩内容