阅读862 返回首页    go 微信


OpenAPI配置负载均衡__最佳实践_负载均衡-阿里云

如何通过负载均衡Open API来配置负载均衡服务。

以下示例中使用URL表示请求参数,并且没有将公共请求参数包含在内。构造完整的请求URL,请参考阿里云 ECS API 参考。为方便阅读,示例中请求URL的参数值没有进行URL编码。

前提条件 : 拥有1台或多台ECS实例。创建ECS实例并授权SSH和Web端口访问权限可以参考ECS相关介绍。

这里假设已经创建好1台ECS实例,并配置好Nginx,为了检验负载均衡能力,把/usr/share/nginx/www/index.html中的Body文字改为:“Welcome to nginx on mytesthost1! ”

1.“复制”实例

从第1台实例中“复制”出第2台实例。假设第1台实例刚刚配置完成,可以用于创建自定义镜像。

  1. 为系统盘创建快照

    1) 先查询实例的系统盘ID:

    请求:

    1. https://ecs.aliyuncs.com/?Action=DescribeInstanceDisks&InstanceId=id5ab1760-3498-4d95-9687-a91545ef90b3

    返回:

    1. {
    2. "RequestId" : "9F2188AC-AFAC-4F43-B452-C88463B9F069",
    3. "Disks" : {
    4. "Disk" : [
    5. {
    6. "DiskId" : "1008-27930",
    7. "Size" : 20,
    8. "Type" : "system"}]
    9. }
    10. }

    这里,系统盘Disk ID是:”1008-27930”

    2) 为系统盘创建快照:

    请求:

    1. https://ecs.aliyuncs.com/?Action=CreateSnapshot&InstanceId=id5ab1760-3498-4d95-9687-a91545ef90b3&DiskId=1008-27930&SnapshotName=mytesthost1-init

    返回:

    1. {
    2. "RequestId" : "5CA4F9E6-81D2-42E1-A317-4C25284C6939",
    3. "SnapshotId" : "1008-27930-1097358"
    4. }

    这里,创建的快照ID是”1008-27930-1097358”。

    3)查询快照进度,等快照的Progress为100时,表示快照创建完成。

    请求:

    1. https://ecs.aliyuncs.com/?Action=DescribeSnapshotAttribute&RegionId=cn-hangzhou-dg-a01&SnapshotId=1008-27930-1097358

    返回:

    1. {
    2. "RequestId" : "8307863A-1415-40EF-9520-8974871E651C",
    3. "SnapshotId" : "1008-27930-1097358",
    4. "SnapshotName" : "mytesthost1-snp-init",
    5. "Progress" : "100",
    6. "CreationTime" : "2013-05-19T03:19Z"
    7. }
  2. 用创建完成的快照制作自定义镜像

    请求:

    1. https://ecs.aliyuncs.com/?Action=CreateImage&RegionId=cn-hangzhou-dg-a01&SnapshotId=1008-27930-1097358&Description=for creating test instances

    返回:

    1. {
    2. "RequestId" : "38C930E9-5CE9-4E24-A392-8538FC20D503",
    3. "ImageId" : "m8a1f80fe-ed9d-4156-a7a8-432f66305c36"
    4. }
  3. “复制”机器

    有了自定义镜像,就可以“复制”一台同样配置的机器,通过ImageId=m8a1f80fe-ed9d-4156-a7a8-432f66305c36创建第2台ECS实例。

    假设,下面是新创建好的ECS实例的属性:

    1. {
    2. "RequestId" : "850ED7ED-A4D5-40A1-A7EF-C33B74B1296B",
    3. "InstanceId" : "i6b47cd72-843f-4558-b911-2776acae06fb",
    4. "ImageId" : "m8a1f80fe-ed9d-4156-a7a8-432f66305c36",
    5. "RegionId" : "cn-hangzhou-dg-a01",
    6. "ZoneId" : "cn-hangzhou-gy002-a",
    7. "InstanceType" : "ecs.t1.small",
    8. "HostName" : "mytesthost2",
    9. "Status" : "Stopped",
    10. "SecurityGroupIds" : {
    11. "SecurityGroupId" : [
    12. "g1f91e6e8-3c4b-4923-98dd-78aacbd09d17"
    13. ]
    14. },
    15. "PublicIpAddress" : {
    16. "IpAddress" : [
    17. "10.10.10.173"
    18. ]
    19. },
    20. "InnerIpAddress" : {
    21. "IpAddress" : [
    22. "10.32.148.152"
    23. ]
    24. },
    25. "InternetMaxBandwidthIn" : 2,
    26. "InternetMaxBandwidthOut" : 2,
    27. "SerialNumber" : "1fec6c01-7186-2c3e-fa10-a672b8c300ec"
    28. }

    为了演示方便,在访问时与第1台进行区分以示负载均衡配置成功,把/usr/share/nginx/www/default/index.html中的Body文字改为:“Welcome to nginx on mytesthost2! ”

2.创建负载均衡的LoadBalancer

请求:

  1. https://slb.aliyuncs.com/?Action=CreateLoadBalancer&RegionId=cn-hangzhou-dg-a01

返回: { “RequestId” : “3DE96B24-E2AB-4DFA-9910-1AADD60E13A5”, “LoadBalancerId” : “13ebb82ceaa-cn-hangzhou-dg-a01”, “Address” : “10.10.10.77” }

这里,创建好的LoadBalancer ID为: “13ebb82ceaa-cn-hangzhou-dg-a01”,为该LoadBalancer新增监听HTTP 80端口的HTTP Listener。当使用四层(TCP协议)的负载均衡时,方法类似。

请求:

  1. https://slb.aliyuncs.com/?Action=CreateLoadBalancerHttpListener&LoadBalancerId=13ebb82ceaa-cn-hangzhou-dg-a01&ListenerPort=80&BackendServerPort=80&ListenerStatus=active

激活LoadBalancer,使其进入工作状态。

请求:

  1. https://slb.aliyuncs.com/?Action=SetLoadBalancerStatus&LoadBalancerId=13ebb82ceaa-cn-hangzhou-dg-a01&LoadBalancerStatus=active

3.增加后端服务器

可以通过AddBackendServers接口增加负载均衡后端服务器。新增后端服务器后,负载均衡器会将请求根据配置转发到后端服务器。

请求:

  1. https://slb.aliyuncs.com/?Action=AddBackendServers&LoadBalancerId=13ebb82ceaa-cn-hangzhou-dg-a01&BackendServers=[{"ServerId":"id5ab1760-3498-4d95-9687-a91545ef90b3"}]

返回:

  1. {
  2. "RequestId" : "FA2F2172-63F2-409D-927C-86BD1D536F13",
  3. "LoadBalancerId" : "13ebb82ceaa-cn-hangzhou-dg-a01",
  4. "BackendServers" : {
  5. "BackendServer" : [
  6. {
  7. "ServerId" : "id5ab1760-3498-4d95-9687-a91545ef90b3",
  8. "Weight" : 100
  9. }]}
  10. }

把第2台实例也加入进来(也可以一次增加多台):

请求:

  1. https://slb.aliyuncs.com/?Action=AddBackendServers&LoadBalancerId=13ebb82ceaa-cn-hangzhou-dg-a01&BackendServers=[{"ServerId":"i6b47cd72-843f-4558-b911-2776acae06fb"}]

返回:

  1. {
  2. "RequestId" : "C61FAD0A-2E87-4D0C-80B0-95AB758FCA70",
  3. "LoadBalancerId" : "13ebb82ceaa-cn-hangzhou-dg-a01",
  4. "BackendServers" : {
  5. "BackendServer" : [
  6. {
  7. "ServerId" : "id5ab1760-3498-4d95-9687-a91545ef90b3",
  8. "Weight" : 100
  9. },
  10. {
  11. "ServerId" : "i6b47cd72-843f-4558-b911-2776acae06fb",
  12. "Weight" : 100
  13. }
  14. ]
  15. }
  16. }

可以查询一下LoadBalancer的配置信息。

请求:

  1. https://slb.aliyuncs.com/?Action=DescribeLoadBalancerAttribute&LoadBalancerId=13ebb82ceaa-cn-hangzhou-dg-a01

返回:

  1. {
  2. "RequestId" : "4747E9AE-ADFD-412D-B523-C1CBD45A2154",
  3. "LoadBalancerId" : "13ebb82ceaa-cn-hangzhou-dg-a01",
  4. "Address" : "10.10.10.77",
  5. "IsPublicAddress" : "true",
  6. "ListenerPorts" : {
  7. "ListenerPort" : [
  8. 80
  9. ]
  10. },
  11. "BackendServers" : {
  12. "BackendServer" : [
  13. {
  14. "ServerId" : "id5ab1760-3498-4d95-9687-a91545ef90b3",
  15. "Weight" : 100
  16. },
  17. {
  18. "ServerId" : "i6b47cd72-843f-4558-b911-2776acae06fb",
  19. "Weight" : 100
  20. }]
  21. }
  22. }

到此,两台后端服务器都已经加入到负载均衡的LoadBalancer中,之后访问https://10.10.10.77/ 并不断刷新,页面会交替显示:“Welcome to nginx on mytesthost1! ”和“Welcome to nginx on mytesthost2!”。由此证明,请求被正确转发到配置好的两台服务器上了。

最后更新:2016-11-23 16:03:58

  上一篇:go 配置不同会话保持规则__最佳实践_负载均衡-阿里云
  下一篇:go 负载均衡+ECS站点虚拟子目录的设置案例___最佳实践_负载均衡-阿里云