閱讀862 返回首頁    go 小米 go 小米 note


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站點虛擬子目錄的設置案例___最佳實踐_負載均衡-阿裏雲