Vyatta路由器订单未识别VLAN ID及SoftLayer/BlueMix下单VLAN添加失败咨询
分析SoftLayer/BlueMix下单Vyatta路由器的两类VLAN异常原因
我来梳理下在SoftLayer(现IBM Cloud Infrastructure)和BlueMix上下单Vyatta路由器时,碰到这两类VLAN相关异常的常见原因——都是实际排查中经常遇到的坑:
一、订单未识别VLAN ID的常见原因
- 参数格式或命名错误:SoftLayer的API对参数细节要求很苛刻,比如你是不是把参数名写成了
vlan_id而不是官方要求的vlanId?另外VLAN ID必须是纯数字(字符串或整数类型都可以),绝对不能带VLAN前缀(比如写VLAN1234就会直接识别失败,得传1234)。 - 账号权限不足:如果你的API密钥对应的账号没有访问目标VLAN的权限——比如这个VLAN属于另一个子账号,或者账号没被授权管理该VLAN所在的机房资源池——系统会直接“看不到”这个VLAN,自然无法识别。
- 机房不匹配:Vyatta路由器的部署机房必须和VLAN所在机房完全一致。举个例子,你选了
dal09机房部署路由器,但VLAN在dal10,跨机房的VLAN系统根本找不到,识别失败是必然的。 - API版本兼容性问题:不同版本的SoftLayer下单API对VLAN参数的结构要求不一样,比如新版API用
primaryNetworkComponent下的vlan字段传递,旧版可能需要用networkVlans数组。如果还用旧结构调用新版API,就会出现识别失败的情况。
二、指定VLAN未被添加至订单的常见原因
- JSON参数层级错误:这是最容易犯的错误!很多人把VLAN参数直接放在订单的根节点,而正确的位置应该是在
orderItems数组里,找到Vyatta路由器对应的item,然后在它的configuration子节点下指定networkVlans、primaryVlan或者secondaryVlan。层级错了,系统根本不会读取这个配置。 - VLAN类型与参数位置不匹配:Vyatta需要区分公网和私网VLAN,如果你把公网VLAN放到了私网参数的字段里(比如把公网VLAN填进
privateNetworkVlan),或者反过来,系统会直接忽略这个配置,不会添加到订单里。 - 后台校验被拦截:如果目标VLAN已经被其他资源占用(比如绑定了其他路由器或服务器的主网卡),或者VLAN的可用端口数不足,系统在后台校验时会自动移除这个VLAN配置,而且有时候不会返回明确的错误提示,只会在最终订单里看不到这个VLAN。
- 缺少必要的附加组件:部分Vyatta套餐需要额外订购“VLAN绑定”的附加服务item,如果你的订单里没加这个组件,即使指定了VLAN,系统也不会把它绑定到路由器上。
排查的时候建议先对照官方的API请求示例检查JSON结构,然后验证VLAN的权限、机房匹配性,最后查看订单提交后的返回日志(很多隐藏的错误信息在这里),基本就能定位到问题了。
内容的提问来源于stack exchange,提问作者Andrew Anderson
相关产品推荐
相关产品推荐

