WSO2微集成器集群配置rsync同步时遇节点路径未找到错误
解决WSO2 MI集群Rsync同步时nodes-list.txt路径找不到的错误
问题分析
错误提示显示nodes-list.txt中的两行路径被当作命令执行但找不到,核心原因是路径格式错误或脚本读取nodes-list.txt的方式错误,同时cron表达式格式也存在问题。
修复步骤
1. 修正nodes-list.txt的路径格式
- 去掉路径前的
~:~代表执行用户的家目录,用root用户执行时,~/home/ubuntu/...会解析为/root/home/ubuntu/...,这是无效路径。直接使用绝对路径:root@<my_server_ip1>:/home/ubuntu/mi/wso2mi_server1-4.0.0/repository/deployment/server root@<my_server_ip2>:/home/ubuntu/mi/wso2mi_server2-4.0.0/repository/deployment/server - 确保每行仅包含一个远程节点的同步路径,无多余空格或特殊字符。
2. 检查rsync脚本的读取逻辑
打开rsync-for-ei-depsync.sh,确认脚本是读取nodes-list.txt的内容而非执行它。正确的读取方式示例:
#!/bin/sh # 替换为当前节点的本地同步目录路径 LOCAL_PATH="/home/ubuntu/mi/wso2mi_serverX-4.0.0/repository/deployment/server" NODE_LIST="/home/ubuntu/setup/rsync-for-depsync/nodes-list.txt" while read -r REMOTE_PATH; do # 跳过空行或注释行 [ -z "$REMOTE_PATH" ] || [ "${REMOTE_PATH:0:1}" = "#" ] && continue rsync -avz --delete "$LOCAL_PATH/" "$REMOTE_PATH/" done < "$NODE_LIST"
如果脚本中存在source nodes-list.txt或./nodes-list.txt这类执行文件的命令,直接删除替换为上述循环读取逻辑。
3. 修正cron表达式格式
cron的标准格式为分 时 日 月 周 命令,你提供的表达式格式混乱,示例(每分钟执行一次):
* * * * * /bin/sh /home/ubuntu/setup/rsync-for-depsync/rsync-for-ei-depsync.sh >> /var/log/rsync-mi-sync.log 2>&1
- 指定
/bin/sh的绝对路径,避免cron环境变量缺失导致找不到命令; - 追加日志输出方便后续排查问题。
4. 验证远程节点路径的存在性
分别登录两个MI节点的root用户,执行以下命令确认路径存在:
ls /home/ubuntu/mi/wso2mi_server1-4.0.0/repository/deployment/server ls /home/ubuntu/mi/wso2mi_server2-4.0.0/repository/deployment/server
若路径不存在,创建对应目录或修正路径为实际部署路径。
内容的提问来源于stack exchange,提问作者ahinsa
相关产品推荐
相关产品推荐

