马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Elasticsearch 是 Elastic 栈里的分布式搜索与分析引擎,日志 集中检索、全文检索、指标聚合这些场景基本都绕不开它。它启动本身不算复杂,但有两个地方新手容易卡住:一是必须先准备 Java 运行环境,二是出于安全设计不允许 root 直接启动。本文以 Linux 上部署 7.4.0 二进制包为例,把从 JDK 准备、解压、改配置、建用户、调系统参数到 Kibana 联调的完整链路写清楚。
一、准备 Java 运行环境
Elasticsearch 7.x 依然依赖 JDK。虽然官方安装包集成了 JDK,但不少团队习惯自己先装一套,便于统一版本管控。以 JDK 8 为例:
- 下载
jdk-8u152-linux-x64 压缩包,解压到 /opt 目录。
- 编辑
/etc/profile 追加环境变量:
JAVA_HOME=/opt/jdk1.8.0_152
PATH=/opt/jdk1.8.0_152/bin PATH
export JAVA_HOME PATH
保存后执行 source /etc/profile,再用 java -version 验证。注意 ES 7.4 对 JDK 8 支持完好,但若混用 JDK 11/17,需要额外关注启动参数与模块化限制。
二、下载并解压安装包
官方中文站点的下载页是获取安装包最直接的位置。下载得到 elasticsearch-7.4.0-linux-x86_64.tar.gz 后,解压到 /opt(注意 -C 后面跟的是大写字母 C):
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt
解压后会得到一个带版本号的目录,后续配置路径都以此为准,避免以后版本升级时路径失效。
三、修改 elasticsearch.yml
编辑 /opt/elasticsearch-7.4.0/config/elasticsearch.yml:
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
各行的含义与默认值如下:
cluster.name:集群名,默认就叫 elasticsearch;改名可以让多套环境互不干扰。
node.name:节点名,不填会随机分配一个,生产环境建议固定便于排障。
network.host:填 0.0.0.0 表示监听全部网卡、允许外网访问;只在本机用就填 127.0.0.1,安全性更好。
http.port:HTTP 接口端口,默认 9200。
cluster.initial_master_nodes:首次初始化新集群时用来投票选出 master,仅在集群第一次启动时填写,之后稳定运行的集群里保留也无害,但重复执行初始化会导致数据异常。
四、创建专用运行用户
出于安全考虑,Elasticsearch 明确禁止 root 用户直接运行,必须新建普通用户。
useradd esuser
passwd esuser
然后把安装目录的所有权交给这个用户,否则后面启动会报权限错误:
chown -R esuser:esuser /opt/elasticsearch-7.4.0
五、调系统内核参数
ES 对文件句柄和虚拟内存有硬性要求,默认值不满足会在启动阶段直接失败。以下三处都要改。
5.1 用户文件句柄上限
编辑 /etc/security/limits.conf 追加:
esuser soft nofile 65536
esuser hard nofile 65536
再编辑 /etc/security/limits.d/20-nproc.conf 追加同样的两行,并把通配那一行降下来以限制总进程数:
esuser soft nofile 65536
esuser hard nofile 65536
* hard nproc 4096
这里 * 代表 Linux 上的全部用户,限制不清零会导致 fork 失败。
5.2 虚拟内存区域数量
编辑 /etc/sysctl.conf 追加一行:
vm.max_map_count=655360
然后让参数立刻生效:
sysctl -p
六、启动与验证
开发测试环境可以临时关闭防火墙省事,生产环境请改为只放通 9200 端口:
systemctl stop firewalld
切换到专用用户后台启动:
su - esuser
cd /opt/elasticsearch-7.4.0
./bin/elasticsearch -d -p /tmp/es.pid
稍等几十秒,浏览器或命令行访问 http://主机IP:9200/,返回包含版本号与集群名称的 JSON 即说明正常。
七、安装并配置 Kibana
Kibana 是 ES 的可视化界面,二进制包单独下载,同样解压到 /opt:
tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /opt
编辑 /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml:
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.requestTimeout: 30000
server.port:Kibana 自身 Web 端口,默认 5601。
server.host:填 0.0.0.0 表示可被远程访问;只本机用填 127.0.0.1。
server.name:服务名,仅标识用途。
elasticsearch.hosts:指向 ES 的地址。
elasticsearch.requestTimeout:请求 ES 的超时时间,默认 30000 毫秒,大结果集场景可以适当调大。
启动 Kibana(7.x 自带 JDK,可用 root 加 --allow-root 启动测试环境实例,生产仍建议专用账号):
cd /opt/kibana-7.4.0-linux-x86_64/bin
./kibana --allow-root
浏览器打开 http://主机IP:5601 即可。注意 ES 与 Kibana 必须同时处于运行状态,否则界面会提示连接不可用。
八、生产环境还要补的几件事
- 堆内存:修改
config/jvm.options,堆一般设为物理内存的一半且不超过 31GB,避免 GC 与压缩指针带来的性能拐点。
- 数据目录与日志
目录:默认放在安装目录下,线上建议单独挂载磁盘,便于扩容与备份。
- 安全加固:7.x 默认开启安全特性时需要通过账号密码访问;开放 0.0.0.0 又不开认证等于把数据裸奔在公网,务必搭配防火墙与反向代理。
- 内存锁定:在
elasticsearch.yml 加 bootstrap.memory_lock: true 并配置 memlock,防止 swap 拖垮查询性能。
- 集群扩展:多节点部署时把
discovery.seed_hosts 与 cluster.initial_master_nodes 一起规划好,节点数保持奇数便于选举。
整体流程并不长,真正的坑集中在 limits 与 sysctl 这两处系统参数上——它们一旦没配够,报错信息往往指向别处,容易误判为安装包问题。按上面顺序做完,再补上生产环境的内存与权限规划,一套可用的搜索与分析平台就立住了。
qidao123.com企服评测-应用市场 编辑提示:本文根据公开安装手册与实际部署经验整理,未引用任何外部链接与截图;文中用户名、版本号、路径均为示例,落地时请替换为你自己的环境参数,并在生产变更前做好数据备份。 |