1. 环境准备与安装
Elasticsearch 8.x 的安装相比之前版本有了很大变化,特别是安全认证机制的全面升级。我最近在生产环境部署了一套ES 8.16.6集群,这里分享下完整过程。首先需要准备至少2台Linux服务器(测试环境可以用单机),建议配置16GB以上内存和SSD存储。操作系统推荐使用CentOS 7+或Ubuntu 18.04+。
下载安装包时要注意版本匹配,Kibana必须与Elasticsearch版本完全一致。官网下载速度较慢时,可以使用国内镜像源。解压后目录结构很清晰,主要关注bin(可执行文件)、config(配置文件)、data(数据存储)这几个目录。
安装完成后先别急着启动,8.x版本默认开启了安全认证,直接启动会遇到各种权限问题。建议先配置好JVM参数,在config/jvm.options中调整堆内存大小,一般设置为物理内存的50%,但不超过32GB。
2. 安全认证配置
Elasticsearch 8.x最大的变化就是强制启用安全认证,这给生产环境带来了更高的安全性,但也增加了部署复杂度。第一次启动时会自动生成默认密码和临时CA证书,但这些证书有效期很短(1-3年),不适合生产环境。
我推荐使用自定义CA证书,可以设置10年有效期。具体操作分几步:
- 生成CA根证书:
elasticsearch-certutil ca --days 3650 - 生成节点通信证书:
elasticsearch-certutil cert --ca elastic-stack-ca.p12 --days 3650 - 将生成的证书文件移动到config/certs目录
这里有个容易踩坑的地方:证书密码必须添加到elasticsearch.keystore中,否则启动时会报密码错误。需要执行:
elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password3. 集群配置与优化
配置集群需要修改elasticsearch.yml文件,主要设置包括:
- 集群名称:所有节点必须一致
- 节点名称:建议使用主机名
- 网络绑定地址:建议绑定具体IP而非0.0.0.0
- 发现种子节点:配置至少3个主节点地址
- 证书路径:指向我们自定义的证书文件
生产环境还需要调整以下参数:
thread_pool.search.size: 16 thread_pool.search.queue_size: 1000 indices.query.bool.max_clause_count: 10000内存分配也很关键,除了JVM堆内存外,还需要为Lucene预留足够的操作系统缓存。建议配置bootstrap.memory_lock=true来避免内存交换。
4. Kibana集成与可视化
Kibana安装相对简单,但需要注意版本必须与Elasticsearch完全一致。解压后需要配置config/kibana.yml:
server.host: "0.0.0.0" elasticsearch.hosts: ["https://es-node1:9200"] elasticsearch.ssl.certificateAuthorities: ["/path/to/ca.crt"]首次启动Kibana需要enrollment token,这个token需要通过ES生成:
elasticsearch-create-enrollment-token -s kibana登录后建议立即修改默认密码,并配置必要的索引模式。Kibana 8.x的安全特性与ES深度集成,所有操作都需要相应权限。可以创建不同角色的用户,比如开发人员只给read权限,管理员给full access。
5. 生产环境注意事项
在实际部署中,我总结了几个关键点:
- 证书管理:自定义证书一定要备份CA私钥,后续新增节点时需要用到
- 监控告警:配置Elasticsearch自带的监控功能,或者集成Prometheus
- 备份策略:使用快照功能定期备份到共享存储或S3
- 性能调优:根据业务特点调整分片大小和数量
- 安全加固:定期轮换密码,限制网络访问,启用审计日志
遇到证书过期问题时,可以先用临时证书替换,然后逐步更新所有节点。集群滚动重启时要注意分片分配策略,避免数据重新平衡导致性能下降。
6. 常见问题排查
部署过程中最常遇到的几个问题:
- 节点无法加入集群:检查网络连通性、证书一致性、发现种子节点配置
- Kibana连接失败:验证证书路径、检查token有效期、查看ES日志
- 性能下降:检查分片分布、JVM内存使用、索引优化
- 认证失败:确认密码是否正确、用户角色是否配置
日志是最重要的排查工具,ES和Kibana的日志默认都在logs目录下。建议启动时加上-d参数让进程在前台运行,方便查看实时日志。对于复杂的权限问题,可以临时提升日志级别来获取更多信息。