当前位置:首页 > 技术 > 正文内容

在CentOS 7上部署Elasticsearch 6.3.x集群并配置X-Pack功能

访客 技术 2026年6月13日 1

一、环境准备与系统配置

部署节点需满足最低1GB内存要求,建议使用三台服务器组成集群:

  • 节点1:192.168.1.107(主控节点)
  • 节点2:192.168.1.108
  • 节点3:192.168.1.109

软件版本信息如下:

  • Elasticsearch 6.3.2
  • OpenJDK 1.8.0(推荐小版本号为奇数的稳定版本)
  • Kibana 6.3.2

部署前需完成以下操作:

  • 关闭防火墙及SELinux(生产环境按需调整)
  • 同步系统时间,建议使用公网NTP服务或自建NTP服务器

二、安装与配置Elasticsearch集群

1. 安装Java运行环境

所有节点均需安装相同版本的JDK 1.8:

[root@es-node1 ~]# rpm -ivh jdk-8u25-x64.rpm
Preparing...                ########################################### [100%]
   1:jdk1.8.0_181           ########################################### [100%]

配置Java环境变量:

[root@es-node1 ~]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export CLASSPATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

[root@es-node1 ~]# . /etc/profile.d/java.sh
[root@es-node1 ~]# java -version
java version "1.8.0_181"

2. 部署Elasticsearch

解压并创建软链接:

[root@es-node1 ~]# tar xf elasticsearch-6.3.2.tar.gz -C /usr/local/
[root@es-node1 ~]# cd /usr/local/
[root@es-node1 local]# ln -sv elasticsearch-6.3.2/ elasticsearch

修改JVM堆内存设置(避免超过物理内存一半):

[root@es-node1 config]# vim jvm.options
-Xms400m
-Xmx400m

编辑核心配置文件:

[root@es-node1 config]# cp elasticsearch.yml elasticsearch.yml-bak
[root@es-node1 config]# vim elasticsearch.yml
cluster.name: my-app
node.name: node-1.107
path.data: /Data/es/data
path.logs: /Data/es/logs
bootstrap.memory_lock: true
network.host: 192.168.1.107
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.1.107", "192.168.1.108", "192.168.1.109"]
discovery.zen.minimum_master_nodes: 2

3. 调整系统资源限制

编辑用户资源上限配置:

[root@es-node1 ~]# vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited

4. 设置内核参数

[root@es-node1 ~]# vim /usr/lib/sysctl.d/50-default.conf
vm.max_map_count=362144
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

[root@es-node1 ~]# sysctl -p

5. 创建专用用户并授权目录

[root@es-node1 ~]# useradd elastic
[root@es-node1 ~]# echo "123456" | passwd --stdin elastic

[root@es-node1 ~]# mkdir -p /Data/es/
[root@es-node1 ~]# chown -R elastic:elastic /Data/es/
[root@es-node1 ~]# chown -R elastic:elastic /usr/local/elasticsearch-6.3.2/

# 退出当前会话,重新登录生效
[root@es-node1 ~]# exit

6. 启动Elasticsearch服务

[root@es-node1 ~]# su - elastic
[elastic@es-node1 ~]$ cd /usr/local/elasticsearch
[elastic@es-node1 elasticsearch]$ nohup ./bin/elasticsearch > /tmp/elastic.log &

# 查看启动日志
[elastic@es-node1 elasticsearch]$ tailf /tmp/elastic.log

确认服务正常运行后,检查监听端口:

[elastic@es-node1 elasticsearch]$ netstat -tnlp
tcp        0      0 192.168.1.107:9200  0.0.0.0:*  LISTEN  2072/java
tcp        0      0 192.168.1.107:9300  0.0.0.0:*  LISTEN  2072/java

验证API响应:

[elastic@es-node1 elasticsearch]$ curl http://192.168.1.107:9200
{
  "name": "node-1.107",
  "cluster_name": "my-app",
  "version": {
    "number": "6.3.2"
  }
}

三、部署Kibana可视化工具

[root@kb-node1 ~]# tar xf kibana-6.3.2-linux-x86_64.tar.gz -C /usr/local/
[root@kb-node1 ~]# cd /usr/local/
[root@kb-node1 local]# ln -sv kibana-6.3.2-linux-x86_64/ kibana

[root@kb-node1 kibana]# vim config/kibana.yml
server.port: 5601
server.host: "192.168.1.110"
elasticsearch.url: "http://192.168.1.107:9200"

[root@kb-node1 kibana]# ./bin/kibana &

访问 http://192.168.1.110:5601 可进入Kibana界面。

四、启用X-Pack功能(仅供学习交流)

由于Elasticsearch 6.3+已默认集成X-Pack,无需额外安装。通过替换核心jar包实现功能激活:

[elastic@es-node1 x-pack-core]$ mv x-pack-core-6.3.2.jar /tmp/x-pack-core-6.3.2.jar.bak
[elastic@es-node1 x-pack-core]$ cp /path/to/patched/x-pack-core-6.3.2.jar .

修改配置文件以禁用安全校验:

xpack.security.enabled: false

上传许可证文件并更新:

[elastic@es-node1 elasticsearch]$ curl -XPUT -u elastic 'http://192.168.1.107:9200/_xpack/license' \
-H "Content-Type: application/json" \
-d @license.json

Enter host password for user 'elastic': change
{"acknowledged":true,"license_status":"valid"}

五、配置SSL加密通信

1. 生成证书

[elastic@es-node1 bin]$ ./elasticsearch-certgen

2. 解压并分发证书

[elastic@es-node1 bin]$ mkdir /tmp/cert && mv cert.zip /tmp/cert/
[elastic@es-node1 bin]$ cd /tmp/cert && unzip cert.zip
[elastic@es-node1 cert]$ mv ca/* /usr/local/elasticsearch/config/
[elastic@es-node1 cert]$ mv elasticsearch/* /usr/local/elasticsearch/config/

将证书复制到其他节点:

[elastic@es-node1 config]$ scp *.crt *.key 192.168.1.108:/usr/local/elasticsearch/config/
[elastic@es-node1 config]$ scp *.crt *.key 192.168.1.109:/usr/local/elasticsearch/config/

3. 配置SSL与安全策略

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.ssl.key: elasticsearch.key
xpack.ssl.certificate: elasticsearch.crt
xpack.ssl.certificate_authorities: ca.crt

4. 重置内置用户密码

[elastic@es-node1 bin]$ ./elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users...
Changed password for user elastic
PASSWORD elastic = 1TWVMeN8tiBy917thUxq

5. 配置Kibana认证

elasticsearch.username: "elastic"
elasticsearch.password: "1TWVMeN8tiBy917thUxq"

重启Kibana服务后,即可使用账号密码登录。

六、内置用户说明

  • elastic:超级管理员,拥有全部权限
  • kibana:用于Kibana连接Elasticsearch
  • logstash_system:Logstash数据源管理账户
  • beats_system:Beats采集器认证账户

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。