管理虚拟私有云(VPC)的路由
引导式阅读
Java
管理虚拟私有云(VPC)的路由
作者
C***
上架时间
2021-06-28 11:13:35

版本说明

本示例基于华为云SDK V2.0版本开发,高版本示例正在开发中。

功能介绍

路由即路由规则,在路由中通过配置目的地址、下一跳类型、下一跳地址等信息,来决定网络流量的走向。路由分为系统路由和自定义路由。

  • 系统路由:系统自动添加且无法修改或删除的路由。

    创建路由表后,系统会自动在路由表中添加如下的系统路由,表示VPC内实例互通。

  1. 目的地址是100.64.0.0/10、198.19.128.0/20的路由。

  2. 目的地址是子网网段的路由。

  • 说明: 除以上系统路由外,系统还会自动添加目的地址是127.0.0.0/8的路由,表示本地回环地址。

  • 自定义路由:可以修改和删除的路由。自定义路由的目地地址不能与系统路由的目地地址重叠。

准备工作

1、获取华为云VPC开发工具包(SDK)

2、华为云 Java SDK 支持认证方式:token认证

3、华为云 Java SDK 支持 Java JDK 1.8 及其以上版本。

示例接口摘要

初始化客户端

String user = "******"; String password = "******"; String projectId = "******"; String userDomainId = "******"; String authUrl = "******"; OSClient.OSClientV3 osclient = OSFactory.builderV3().endpoint(authUrl) .credentials(user, password, Identifier.byId(userDomainId)) .scopeToProject(Identifier.byId(projectId)).authenticate();

查询路由器列表

功能介绍

查询提交请求的租户有权限操作的所有路由器信息,单次查询最多返回2000条数据,超过2000后会返回分页标记。查询请参考分页查询

接口实现代码示例:

//List all routers List<? extends Router> routerListResp = osclient.networking().router().list(); if (null != routerListResp && routerListResp.size() > 0) { System.out.println("List all routers success, size = " + routerListResp.size()); } else { System.out.println("List all routers failed"); }

查询路由器

功能介绍

查询路由器详情。

接口实现代码示例:

//Get a router Router routerGetResp = osclient.networking().router().get(routerId); if (null != routerGetResp) { System.out.println("Get a router success, id = " + routerGetResp.getId()); } else { System.out.println("Get a router failed"); }

创建路由器

功能介绍

创建路由器。

接口实现代码示例:

//Create a router String routerName = "******"; String networkId = "******"; Router router = NeutronRouter.builder().name(routerName).adminStateUp(true).externalGateway(networkId).build(); Router createResp = osclient.networking().router().create(router); if (null != createResp) { System.out.println("Create a router success, id = " + createResp.getId()); } else { System.out.println("Create a router failed"); } //Create a basic router with minimal params Router miniCreateResp = osclient.networking().router().create(routerName, true); if (null != miniCreateResp) { System.out.println("Create a router success, id = " + miniCreateResp.getId()); } else { System.out.println("Create a router failed"); }

更新路由器

功能介绍

更新路由器。

接口实现代码示例:

//Toggle AdminStateUp Router routerToggleResp = osclient.networking().router().toggleAdminStateUp(routerId, true); if (null != routerToggleResp) { System.out.println("Toggle AdminStateUp success, id = " + routerToggleResp.getId()); } else { System.out.println("Toggle AdminStateUp failed"); } //Update a router Router routerUpdate = NeutronRouter.builder().name(routerName).adminStateUp(true).externalGateway(networkId).id(routerId).build(); Router routerUpdateResp = osclient.networking().router().update(routerUpdate); if (null != routerUpdateResp) { System.out.println("Update a router success, id = " + routerUpdateResp.getId()); } else { System.out.println("Update a router failed"); }

删除路由器

功能介绍

删除路由器。

接口实现代码示例:

//Delete a router ActionResponse resp = osclient.networking().router().delete(miniCreateResp.getId()); if (resp.isSuccess()) { System.out.println("Delete a router success"); } else { System.out.println("Delete a router failed"); }

路由器添加接口

功能介绍

添加路由器接口。

接口约束:

  • 使用端口的时候,端口上有且只有一个IP地址。
  • 使用子网的时候,子网上必须配置gatewayIP地址。
  • “provider:network_type”为“geneve”的网络不可以添加路由器。
  • 一个子网只能添加一个路由器。

接口实现代码示例:

//Add router interface String routerId = "******"; String subnetsId = "******"; RouterInterface interfaceResp = osclient.networking().router().attachInterface(routerId, AttachInterfaceType.SUBNET, subnetsId); if (null != interfaceResp) { System.out.println("Add router interface success, id = " + interfaceResp.getId()); } else { System.out.println("Add router interface failed"); }

路由器删除接口

功能介绍

删除路由器接口。

接口约束:

如果该子网上还有负载均衡器对象,不允许删除路由器接口。

接口实现代码示例:

//Delete a router interface RouterInterface routerInterfaceDeleteResp = osclient.networking().router().detachInterface(routerId, subnetsId, null); if (null != routerInterfaceDeleteResp) { System.out.println("Delete a router interface success, id = " + routerInterfaceDeleteResp.getId()); } else { System.out.println("Delete a router interface failed"); }

参考

更多信息请参考虚拟私有云VPC服务