AWS环境下升级MarkLogic至11.3.1后启动失败问题
问题概述
AWS实例中,MarkLogic从10.0-9.5版本升级到11.3.1后无法启动,原版本在同一实例运行正常,核心原因是EC2启动脚本强制尝试挂载不存在的EBS卷,导致启动流程终止。
错误日志详情
实例1错误日志
OpenJDK 64位服务器虚拟机警告:选项UseConcMarkSweepGC在9.0版本已被弃用,可能会在未来版本中移除。
设置配置:JAVA_HOME="/usr/lib/jvm/java-11"
设置配置:MARKLOGIC_MDB_TYPE=""
设置配置:AWS_REGION="us-east-1"
设置配置:AWS_DEFAULT_REGION="us-east-1"
设置配置:MARKLOGIC_ZONE="us-east-1b"
设置配置:MARKLOGIC_HOSTNAME="xx.xx.xx.xxx"
初始化配置。AWS区域:us-east-1,可用区:us-east-1b。实例ID:xxxxxxxxx
OpenJDK 64位服务器虚拟机警告:选项UseConcMarkSweepGC在9.0版本已被弃用,可能会在未来版本中移除。
实例未被托管
等待挂载设备上线:/dev/xvdf
卷/dev/sdf挂载失败 - 终止启动
警告:ec2-startup未成功完成
查看错误日志获取详情
实例2错误日志
设置配置:
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.382.b05-2.el8.x86_64"
设置配置:MARKLOGIC_MDB_TYPE=""
设置配置:AWS_REGION="us-east-1"
设置配置:AWS_DEFAULT_REGION="us-east-1"
设置配置:MARKLOGIC_ZONE="us-east-1a"
设置配置:MARKLOGIC_HOSTNAME="ip-10-97-21-232.ec2.internal"
初始化配置。
AWS区域:us-east-1,可用区:us-east-1a。实例ID:i-00b57d0c9c5216bb4
实例未被托管
等待挂载设备上线:/dev/nvme1n1
UUID设备映射:
最终设备映射:/dev/nvme1n1
尝试将EBS设备/dev/sdf(系统设备/dev/nvme1n1)挂载到
挂载点/var/opt/MarkLogic
目录/var/opt/MarkLogic已有内容 - 跳过挂载
挂载EBS卷失败 - 终止启动 警告:ec2-startup未成功完成
查看错误日志获取详情
升级步骤回顾
- 实例类型:m4.xlarge
- 升级未挂载额外EBS卷,仅执行MarkLogic版本升级
- 先卸载MarkLogic 10.0-9.5,再安装MarkLogic 11.3.0
- 执行命令
/etc/init.d/MarkLogic start启动服务,触发错误
解决方案
1. 修改MarkLogic配置文件
编辑/etc/marklogic.conf配置文件,添加参数跳过自动挂载EBS卷的逻辑:
MARKLOGIC_SKIP_EBS_MOUNT=true
2. 重启MarkLogic服务
执行重启命令:
/etc/init.d/MarkLogic restart
3. 验证服务状态
检查服务是否正常启动:
/etc/init.d/MarkLogic status
补充说明
- Java版本警告不影响服务启动,MarkLogic 11官方推荐使用Java 11,可保持当前配置或按需升级Java版本
- 该问题源于MarkLogic 11新增的EC2自动挂载EBS卷逻辑,若后续需要使用额外存储卷,可重新配置挂载参数后移除跳过标记
内容的提问来源于stack exchange,提问作者Arunjay

