问题一,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
大致意思是单个进程的最大虚拟内存面积不足,应该设置的大一点。
| # 永久生效:修改/etc/sysctl.conf文件添加 vm.max_map_count=262144 配置 |
| vim /etc/sysctl.conf |
| # 但是需要重启,本次不想重启则执行以下指令即可。后续系统重启则会应用上面修改的参数 |
| sysctl -w vm.max_map_count=262144 |
问题二,集群启动报权限不足
| # 如果是root用户启动报错,则将文件夹权限设置为 777。不建议使用 |
| chown 777 -R /data/elasticsearch1 |
| # 专门用户启动的话,为用户授予文件夹可执行权限 |
| chown elstic-user /data/elasticsearch1 -R |
问题二,网络通信问题
具体表现在,容器内部无法访问宿主机网络。
我的原因是本人在docker服务已经启动时修改了虚拟机网络适配器。
解决方案,关闭所有docker容器后,重启docker服务。再不行就重启虚拟机。
vm.max_map_count=262144
宿主机准备外挂文件夹
从原来的单体外挂复制一份过来,删除 data、log文件夹里面的历史文件

配置elasticsearch.yml文件
elasticsearch1
| cluster.name: "docker-cluster" |
| network.host: 0.0.0.0 |
| node.name: node-1 |
| node.master: true |
| node.data: true |
| node.ingest: false |
| http.port: 9200 |
| transport.port: 9300 |
| discovery.seed_hosts: ["172.17.0.1:9301","172.17.0.1:9302","172.17.0.1:9303"] |
| cluster.initial_master_nodes: ["node-1","node-2","node-3"] |
| |
elasticsearch2
| cluster.name: "docker-cluster" |
| network.host: 0.0.0.0 |
| node.name: node-2 |
| node.master: true |
| node.data: true |
| node.ingest: false |
| http.port: 9200 |
| transport.port: 9300 |
| discovery.seed_hosts: ["172.17.0.1:9301","172.17.0.1:9302","172.17.0.1:9303"] |
| cluster.initial_master_nodes: ["node-1","node-2","node-3"] |
| |
elasticsearch3
| cluster.name: "docker-cluster" |
| network.host: 0.0.0.0 |
| node.name: node-3 |
| node.master: true |
| node.data: true |
| node.ingest: false |
| http.port: 9200 |
| transport.port: 9300 |
| discovery.seed_hosts: ["172.17.0.1:9301","172.17.0.1:9302","172.17.0.1:9303"] |
| cluster.initial_master_nodes: ["node-1","node-2","node-3"] |
| |
依次启动es服务,需要注意的是启动脚本去掉了指定单机运行环境
第1台,注意单机启动的-e "discovery.type=single-node" 配置去掉了
| docker run -it --name es1 \ |
| -p 9201:9200 -p 9301:9300 \ |
| -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ |
| -v /data/elasticsearch1/config:/usr/share/elasticsearch/config \ |
| -v /data/elasticsearch1/data:/usr/share/elasticsearch/data \ |
| -v /data/elasticsearch1/logs:/usr/share/elasticsearch/logs \ |
| -v /data/elasticsearch1/plugins:/usr/share/elasticsearch/plugins \ |
| elasticsearch:7.14.0 |
第2台,注意单机启动的-e "discovery.type=single-node" 配置去掉了
| docker run -it --name es1 \ |
| -p 9201:9200 -p 9301:9300 \ |
| -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ |
| -v /data/elasticsearch1/config:/usr/share/elasticsearch/config \ |
| -v /data/elasticsearch1/data:/usr/share/elasticsearch/data \ |
| -v /data/elasticsearch1/logs:/usr/share/elasticsearch/logs \ |
| -v /data/elasticsearch1/plugins:/usr/share/elasticsearch/plugins \ |
| elasticsearch:7.14.0 |
第3台,注意单机启动的-e "discovery.type=single-node" 配置去掉了
| docker run -it --name es1 \ |
| -p 9201:9200 -p 9301:9300 \ |
| -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ |
| -v /data/elasticsearch1/config:/usr/share/elasticsearch/config \ |
| -v /data/elasticsearch1/data:/usr/share/elasticsearch/data \ |
| -v /data/elasticsearch1/logs:/usr/share/elasticsearch/logs \ |
| -v /data/elasticsearch1/plugins:/usr/share/elasticsearch/plugins \ |
| elasticsearch:7.14.0 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律