CentOS下SwarmPit部署Sonarqube启动报vm.max_map_count过低如何解决
是的,该参数需要在所有可能调度Sonarqube服务的Docker Swarm集群节点上配置。
问题原因
vm.max_map_count是宿主机内核级参数,容器运行时会直接继承部署节点的内核配置。你只在Swarm管理节点修改参数,没有修改工作节点的对应配置,当Sonarqube服务被调度到未修改参数的工作节点运行时,内置的Elasticsearch组件自检就会触发该报错。
永久解决方案
- 登录所有Swarm集群节点,执行以下命令写入永久配置:
echo "vm.max_map_count = 262144" >> /etc/sysctl.conf - 执行命令重载配置使其立即生效:
sysctl -p - 执行命令验证配置是否生效,正常输出应为
vm.max_map_count = 262144:sysctl vm.max_map_count - 重启Sonarqube对应的Swarm服务即可正常启动。
临时测试方案(节点重启后配置会失效)
如果仅做临时验证,不需要永久保留配置,可以只在所有节点执行命令:sysctl -w vm.max_map_count=262144
修改完成后直接重启Sonarqube服务即可。
无需修改节点配置的备选方案
如果不方便批量修改所有集群节点的内核配置,可以在Swarmpit中调整Sonarqube服务的启动配置,增加特权模式后直接在容器内修改运行节点的内核参数:
- 在服务配置的启动命令前添加
sysctl -w vm.max_map_count=262144 && - 勾选特权模式(Privileged)选项,保存后重启服务即可
注意:该方案会自动修改容器当前运行节点的内核参数,且特权模式存在一定安全风险,仅推荐测试环境使用。
内容的提问来源于stack exchange,提问作者jaxmeier
相关产品推荐
相关产品推荐

