文档目录

如何创建公有网络并加载网络服务

ZStack Cloud支持通过系统登录或第三方API工具(例如Postman)使用HTTP方式调用API,创建公有网络并加载网络服务。本文主要以管理员身份(admin)登录管理节点系统,创建公有网络并加载相应的网络服务。您也可以使用云平台其他已授权账户/用户身份登录系统创建。

调用API查看云主机内部监控数据前,需确保:
  • 云平台已创建二层网络,若未创建二层网络,可参考二层网络资源相关接口进行创建。
    Note: 推荐二层网络和三层网络为一一对应的关系,即一个二层网络仅用于创建一个三层网络。
  • 请提前规划好网络地址段,同一个公有网络下的地址段不能重叠。
  • 登录云平台管理节点,获取云平台NetworkSeriviceProvider UUID:
    zstack-cli
    admin >>>QueryNetworkServiceProvider
    {
        "inventories": [
            {
                "attachedL2NetworkUuids": [
                    "3f50451988a1485bb47d6830abd6c17e"
                ],
                "createDate": "Jul 21, 2022 1:39:20 PM",
                "description": "zstack security group network service provider",
                "lastOpDate": "Jul 21, 2022 1:39:20 PM",
                "name": "SecurityGroup",
                "networkServiceTypes": [
                    "SecurityGroup"
                ],
                "type": "SecurityGroup",
                "uuid": "3cda74aba607461680e476892928981a"
            },
            {
                "attachedL2NetworkUuids": [
                    "3f50451988a1485bb47d6830abd6c17e"
                ],
                "createDate": "Jul 21, 2022 1:39:20 PM",
                "description": "zstack vrouter network service provider",
                "lastOpDate": "Jul 21, 2022 1:39:20 PM",
                "name": "vrouter",
                "networkServiceTypes": [
                    "IPsec",
                    "VRouterRoute",
                    "CentralizedDNS",
                    "VipQos",
                    "DNS",
                    "SNAT",
                    "LoadBalancer",
                    "PortForwarding",
                    "Eip",
                    "DHCP"
                ],
                "type": "vrouter",
                "uuid": "3d7f1619e20249809e65e6223b77907e"
            },
            {
                "attachedL2NetworkUuids": [
                    "3f50451988a1485bb47d6830abd6c17e"
                ],
                "createDate": "Jul 21, 2022 1:39:19 PM",
                "description": "zstack virtual router network service provider",
                "lastOpDate": "Jul 21, 2022 1:39:19 PM",
                "name": "VirtualRouter",
                "networkServiceTypes": [
                    "DNS",
                    "SNAT",
                    "LoadBalancer",
                    "PortForwarding",
                    "Eip",
                    "DHCP"
                ],
                "type": "VirtualRouter",
                "uuid": "7631a619b5254f6b83cb22b0c9fcdbc0"
            },
            {
                "attachedL2NetworkUuids": [
                    "3f50451988a1485bb47d6830abd6c17e"
                ],
                "createDate": "Jul 21, 2022 1:39:19 PM",
                "description": "Flat Network Service Provider",
                "lastOpDate": "Jul 21, 2022 1:39:19 PM",
                "name": "Flat Network Service Provider",
                "networkServiceTypes": [
                    "VipQos",
                    "DNS",
                    "HostRoute",
                    "Userdata",
                    "Eip",
                    "DHCP"
                ],
                "type": "Flat",
                "uuid": "c6953edcffdd4481aaac5f4966f6ea92"
            }
        ],
        "success": true
    }
    • NetworkSeriviceProvider为网络服务实现方式,ZStack Cloud提供以下四种网络服务实现方式,用户需基于创建的网络类型选择合适的实现方式:
      网络服务实现方式 描述 支持的网络类型 支持的网络服务
      vrouter 使用VPC路由器实现网络服务 VPC网络
      • IPsec
      • VRouterRoute
      • CentralizedDNS
      • VipQos
      • DNS
      • SNAT
      • LoadBalancer
      • PortForwarding
      • Eip
      • DHCP
      Flat 在物理机上使用namespace实现网络服务 VPC网络、扁平网络、公有网络
      • VipQos
      • DNS
      • HostRoute
      • Userdata
      • Eip
      • DHCP
      SecurityGroup 在物理机上使用iptables实现网络服务 VPC网络、扁平网络、公有网络
      • SecurityGroup
      VirtualRouter 不建议使用 不建议使用 不建议使用
API调用流程概览:
  1. 登录云平台
  2. 创建公有网络
  3. 加载网络服务到公有网络
  4. 向公有网络添加DNS
  5. 添加IP地址范围

API调用流程

API详细调用流程如下:
  1. 进入管理节点系统,发送以下Curl请求登录云平台以获取Session ID:
    curl -H "Content-Type: application/json;charset=UTF-8" \
    -X PUT -d '{"logInByAccount":{"accountName":"admin","password":"b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86" }}' \
    http://localhost:8080/zstack/v1/accounts/login
    其中:
    • password字段需填入经过SHA-512算法加密的密码
    返回结果为:
    {"inventory":{"uuid":"155dbbe8193344a5913c412f2732c0d7","accountUuid":"36c27e8ff05c4780bf6d2fa65700f22e","userUuid":"36c27e8ff05c4780bf6d2fa65700f22e","expiredDate":"Apr 19, 2022 8:06:42 PM","createDate":"Apr 19, 2022 6:06:42 PM","noSessionEvaluation":false}}
    其中:
    • uuid字段即为获取的本次Session的ID
  2. 创建公有网络:
    curl -H "Content-Type: application/json" -H "Authorization: OAuth 155dbbe8193344a5913c412f2732c0d7" \
    -X POST -d'{"params":{"name":"PubNetwork1","type":"L3BasicNetwork","l2NetworkUuid":"3f50451988a1485bb47d6830abd6c17e","category":"Public","system":false}}'  \
    http://localhost:8080/zstack/v1/l3-networks
    其中:
    • Authorization字段需填入登录云平台时获取的Session ID
    • HTTP请求URL为:http://localhost:8080/zstack/v1/l3-networks
    • name:必填项,设置公有网络名称
    • l2NetworkUuid:必填项,指定二层网络UUID
    • category:必填项,指定网络类别,支持指定Public、Private、和System,本场景创建公有网络,需设置为Public
    • type:创建公有网络时为必填项,指定网络类型,可选值为L3BasicNetwork
    • system:创建公有网络时为必填项,可选值为false
    返回结果:
    {"inventory":{"uuid":"f96c7f7fe73440478ebdb22fe5e0371f","name":"PubNetwork1","type":"L3BasicNetwork","zoneUuid":"7e63ce956d5b41598a53cf79b59ce967","l2NetworkUuid":"3f50451988a1485bb47d6830abd6c17e","state":"Enabled","system":false,"category":"Public","ipVersion":4,"createDate":"Jul 22, 2022 2:05:28 PM","lastOpDate":"Jul 22, 2022 2:05:28 PM","ipRanges":[],"networkServices":[],"hostRoute":[]},"type":{"_name":"key.event.API.API_EVENT"},"apiId":"6af2168245f1457382b6ccd7bbc4074e","success":true,"id":"8b883194d8d44e12a8592d1f9ea0f8dc","createdTime":1658469928805}
    其中:
    • uuid字段即为所创建成功的公有网络的UUID
  3. 挂载网络服务到三层网络:
    curl -H "Content-Type: application/json" -H "Authorization: OAuth 155dbbe8193344a5913c412f2732c0d7" \
    -X POST -d'{"params":{"networkServices":{"c6953edcffdd4481aaac5f4966f6ea92":["Userdata","DHCP","HostRoute"],"3cda74aba607461680e476892928981a":["SecurityGroup"]}}}' \
    http://localhost:8080/zstack/v1/l3-networks/f96c7f7fe73440478ebdb22fe5e0371f/network-services
    其中:
    • Authorization字段需填入登录云平台时获取的Session ID
    • HTTP请求URL为:http://localhost:8080/zstack/v1/l3-networks/l3NetworkUuid/network-services
    • l3NetworkUuid:必填项,指定三层网络UUID
    • networkServices:必填项,设置要加载的网络服务
    返回结果:
    {"inventory":{"uuid":"f96c7f7fe73440478ebdb22fe5e0371f","name":"PubNetwork1","type":"L3BasicNetwork","zoneUuid":"7e63ce956d5b41598a53cf79b59ce967","l2NetworkUuid":"3f50451988a1485bb47d6830abd6c17e","state":"Enabled","system":false,"category":"Public","ipVersion":4,"createDate":"Jul 22, 2022 2:05:28 PM","lastOpDate":"Jul 22, 2022 2:05:28 PM","ipRanges":[],"networkServices":[{"l3NetworkUuid":"f96c7f7fe73440478ebdb22fe5e0371f","networkServiceProviderUuid":"c6953edcffdd4481aaac5f4966f6ea92","networkServiceType":"HostRoute"},{"l3NetworkUuid":"f96c7f7fe73440478ebdb22fe5e0371f","networkServiceProviderUuid":"3cda74aba607461680e476892928981a","networkServiceType":"SecurityGroup"},{"l3NetworkUuid":"f96c7f7fe73440478ebdb22fe5e0371f","networkServiceProviderUuid":"c6953edcffdd4481aaac5f4966f6ea92","networkServiceType":"DHCP"},{"l3NetworkUuid":"f96c7f7fe73440478ebdb22fe5e0371f","networkServiceProviderUuid":"c6953edcffdd4481aaac5f4966f6ea92","networkServiceType":"Userdata"}],"hostRoute":[]},"type":{"_name":"key.event.API.API_EVENT"},"apiId":"17b88bb9d0f44ce0a54725aee51785f9","success":true,"id":"61cdd22fa4c34941b366aaa432fbe858","createdTime":1658470345475}
  4. 添加IP地址段:
    云平台支持通过添加IP地址段或CIDR的方式为三层网络添加IP范围。本次选择通过IP地址段进行添加。
    curl -H "Content-Type: application/json;charset=UTF-8" -H "Authorization: OAuth 155dbbe8193344a5913c412f2732c0d7" \
    -X POST -d'{"params":{"name":"PubNetIP-Range","startIp":"192.168.72.10","endIp":"192.168.72.250","netmask":"255.255.255.0","gateway":"192.168.72.1","ipRangeType":"Normal"}}' \
    http://localhost:8080/zstack/v1/l3-networks/f96c7f7fe73440478ebdb22fe5e0371f/ip-ranges
    其中:
    • Authorization字段需填入登录云平台时获取的Session ID
    • HTTP请求URL为:http://localhost:8080/zstack/v1/l3-networks/l3NetworkUuid/ip-ranges
    • l3NetworkUuid:必填项,指定公有网络UUID
    • name:必填项,指定三层网络IP地址段名称
    • startIp:必填项,指定IP地址段的起始地址
    • endIp:必填项,指定IP地址段的结束地址
    • netmask:必填项,指定IP地址段的网络掩码
    • gateway:必填项,指定IP地址段的网关
    • ipRangeType :选填项,指定IP地址段类型,包括普通地址段(Normal)和地址池(AddressPool)
    返回结果:
    {"inventory":{"uuid":"ac7dcbc1f57943e2939c9d5c8fe8144d","l3NetworkUuid":"f96c7f7fe73440478ebdb22fe5e0371f","name":"PubNetIP-Range","startIp":"192.168.72.10","endIp":"192.168.72.250","netmask":"255.255.255.0","gateway":"192.168.72.1","networkCidr":"192.168.72.0/24","ipVersion":4,"prefixLen":24,"ipRangeType":"Normal","createDate":"Jul 22, 2022 2:18:28 PM","lastOpDate":"Jul 22, 2022 2:18:28 PM"},"type":{"_name":"key.event.API.API_EVENT"},"apiId":"bb7e99c82a754d5ab3fc81e07b9e8f0a","success":true,"id":"8eeda23fe1ca4d5fb598e6983afc3e81","createdTime":1658470708662}
  5. 向公有网络添加DNS:
    curl -H "Content-Type: application/json" -H "Authorization: OAuth 8b0a7837e1fc4549982d739fabf2de9c" \
    -X POST -d '{"params":{"dns":"223.5.5.5"}}' http://localhost:8080/zstack/v1/l3-networks/f96c7f7fe73440478ebdb22fe5e0371f/dns
    其中:
    • Authorization字段需填入登录云平台时获取的Session ID
    • HTTP请求URL为:http://localhost:8080/zstack/v1/l3-networks/l3NetworkUuid/dns
    • l3NetworkUuid:必填项,指定公有网络UUID
    • dns:必填项,指定DNS地址
    返回结果:
    {"inventory":{"uuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","name":"Test-L3Network","type":"L3VpcNetwork","zoneUuid":"90113f41716c428994c335a359658cd8","l2NetworkUuid":"473fc24161fc4ffa88a8e77efe155584","state":"Enabled","system":false,"category":"Private","ipVersion":4,"createDate":"Apr 19, 2022 12:37:16 AM","lastOpDate":"Apr 19, 2022 12:37:16 AM","dns":["223.5.5.5"],"ipRanges":[{"uuid":"d0a66a72bc834345b40d165c585ca1cb","l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","name":"Test-IP-Range","startIp":"192.168.70.10","endIp":"192.168.70.250","netmask":"255.255.255.0","gateway":"192.168.70.1","networkCidr":"192.168.70.0/24","ipVersion":4,"prefixLen":24,"createDate":"Apr 19, 2022 12:47:26 AM","lastOpDate":"Apr 19, 2022 12:47:26 AM"}],"networkServices":[{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"3996dab6bcd34ab1891b8024742aa963","networkServiceType":"DHCP"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"LoadBalancer"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"3996dab6bcd34ab1891b8024742aa963","networkServiceType":"Userdata"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"PortForwarding"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"IPsec"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"VRouterRoute"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"DNS"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"VipQos"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"SNAT"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"Eip"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"89a9deba669d42af9a3fe1b503480e54","networkServiceType":"CentralizedDNS"},{"l3NetworkUuid":"f4c5dc15ae5c4e2b9eefc1197d406d8d","networkServiceProviderUuid":"e9557354f98645368dd1a6a67b72a828","networkServiceType":"SecurityGroup"}],"hostRoute":[]},"type":{"_name":"key.event.API.API_EVENT"},"apiId":"e9e3a64077604369bfc14f7a4cfd1c57","success":true,"id":"8af4586d144649879173bcc1d144db3b","createdTime":1650300553408}
开发手册 | 4.8.38 | ZStack Cloud · ZCF | ZStack 资源中心