pcs stonith create vmware_fence fence_vmware cmk_host_map="server1:vm1;server2:vm2" \ipaddr="localhost" login="vmware_username" passwd="vmware_password" action="off" port="vm_name_in_vmware" delay=15 op monitor interval=60s Error: Agent 'fence_vmware' is not installed or does not provide valid metadata: Agent fence_vmware not found or does not support meta-data: Invalid argument (22) Metadata query for stonith:fence_vmware failed: Input/output error, use --force to override
时间: 2025-03-11 10:02:51 浏览: 43
<think>好的,我现在遇到了一个问题,需要配置Pacemaker的STONITH代理,使用的命令是pcs stonith create创建vmware_fence,但报错说找不到fence_vmware代理或者元数据无效。我需要仔细分析这个问题,找出可能的原因和解决办法。
首先,用户执行的命令结构是否正确?看起来命令的参数有些地方可能有空格的问题,比如cmk_host_map的参数用了分号分隔,这在shell中可能需要引号包裹。不过错误提示是关于代理未安装,所以可能不是命令格式的问题。
接下来,错误信息明确指出Agent 'fence_vmware'未安装或没有有效的元数据。这说明系统上确实没有安装对应的fence代理,或者安装的版本有问题。在Linux系统中,特别是使用Pacemaker/Corosync集群的情况下,STONITH代理通常由fence-agents包提供。不同的虚拟化平台有不同的代理,比如VMware的fence_vmware。
可能的原因一:没有安装fence_vmware代理。需要检查是否安装了对应的软件包。在基于RHEL/CentOS的系统上,可能需要安装fence-agents-vmware或者类似的包。用户可能需要运行yum或dnf来安装这些包。
可能的原因二:安装的fence代理版本过旧,不支持元数据查询。这时候可能需要更新软件包到最新版本,确保兼容性。
另外,用户是否在正确的节点上执行命令?如果集群有多个节点,可能需要确保所有节点都安装了相同的fence代理,或者至少在执行命令的节点上安装。
解决方法步骤可能包括:
1. 检查fence_vmware代理是否安装:执行which fence_vmware或者查找相关rpm包。
2. 安装缺少的软件包,比如yum install fence-agents-vmware。
3. 安装完成后,验证代理是否可用,使用fence_vmware -h查看帮助信息。
4. 重新执行pcs命令,可能需要加上--force参数,如果之前的缓存导致问题。
需要注意的是,某些情况下可能需要启用EPEL仓库或其他第三方仓库来获取这些软件包,尤其是如果默认仓库中没有的话。此外,安装完成后可能需要重启集群服务或者重新加载配置,但pcs命令可能不需要。
最后,确保命令中的参数正确,比如IP地址、用户名密码、端口名称是否对应VMware中的虚拟机名称,这些配置错误可能导致后续的问题,但当前的错误是代理未找到,所以先解决安装问题。</think>以下是分步解决方案:
**错误原因分析:**
该报错表明您的系统缺少`fence_vmware` STONITH代理程序,或安装的代理版本不兼容导致元数据查询失败。
**解决步骤:**
1. 𝗖𝗵𝗲𝗰𝗸 𝗮𝗴𝗲𝗻𝘁 𝗲𝘅𝗶𝘀𝘁𝗲𝗻𝗰𝗲
```bash
rpm -qa | grep fence-agents-vmware
which fence_vmware
```
• 若返回无结果,说明未安装代理
2. 𝗜𝗻𝘀𝘁𝗮𝗹𝗹 𝗩𝗠𝘄𝗮𝗿𝗲 𝗳𝗲𝗻𝗰𝗲 𝗮𝗴𝗲𝗻𝘁
```bash
# RHEL/CentOS 7/8:
sudo yum install fence-agents-vmware
# RHEL/CentOS 8+ 或需要额外仓库:
sudo dnf install fence-vmware-wmc
```
3. 𝗩𝗲𝗿𝗶𝗳𝘆 𝗺𝗲𝘁𝗮𝗱𝗮𝘁𝗮
```bash
fence_vmware -o metadata
```
• 正常应输出XML格式的代理参数说明
4. 𝗥𝗲𝗿𝘂𝗻 𝗰𝗼𝗺𝗺𝗮𝗻𝗱 𝘄𝗶𝘁𝗵 --𝗳𝗼𝗿𝗰𝗲
```bash
pcs stonith create vmware_fence fence_vmware \
cmk_host_map="server1:vm1;server2:vm2" \
ipaddr="localhost" \
login="vmware_username" \
passwd="vmware_password" \
action="off" \
port="vm_name_in_vmware" \
delay=15 \
op monitor interval=60s \
--force
```
**关键参数说明:**
- `cmk_host_map`: 物理节点与虚拟机名的映射关系
- `port`: 必须对应VMware中虚拟机的𝗲𝘅𝗮𝗰𝘁 𝗻𝗮𝗺𝗲
- `action="off"`: 断电隔离操作
- `delay=15`: 执行前等待15秒(避免误隔离)
**验证配置:**
```bash
pcs stonith show
pcs status | grep -i stonith
```
**扩展建议:**
- 在VMware vCenter中创建专用API账号
- 启用SSL证书认证(添加`ssl=1`参数)
- 配置双节点互相隔离时需添加`pcmk_host_list`参数
> 注意:如果使用自定义端口,需添加`ssl_ports`参数。建议在测试环境先用`action=reboot`验证配置有效性后再切換到生产环境。
阅读全文
相关推荐

















