利用ROS创建多台ECS, 指定名称并添加到多个SLB

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 支持为单/多个(最多3个)SLB添加所有创建的ECS做多个后端服务器

本模版示例支持为单/多个(最多3个)SLB添加所有创建的ECS做多个后端服务器

简述:

模版中的ECS实例支持指定不同的实例名和主机名,并且可以选择网络类型为VPC或CLASSIC,当选择不创建VPC时,需要更换ECS实例规格类型,原因是能创建ECS的实例规格,与VPC网络类型的实例规格不一样;默认是新创建一个SLB实例,如果传入SLB实例的ID,那么需要更改下SLB的数量,原因是根据模版中SLB的数量值和SLB的ID来确认添加后端服务器的SLB实例数量,需要两者保持一致(e.g. 用两个已经创建的SLB的ID来做参数,那么SLB数量值胥更改为2)。
本模版目前最多支持往3个SLB实例附加后端服务器;

涉及资源:

ALIYUN::ECS::VPC (虚拟专有网络)
ALIYUN::ECS::VSwitch (虚拟交换机)
ALIYUN::ECS::SecurityGroup (安全组)
ALIYUN::ECS::InstanceGroup (云服务器组)
ALIYUN::SLB::LoadBalancer (负载均衡)
ALIYUN::SLB::BackendServerAttachment (为负载均衡添加后端服务器)

1.创建ECS InstanceGroup

下面是创建VPC类型的ECS Instance代码示例,实例中批量创建ECS指定不同的实例名和主机名。

e.g. 

HostName[1,4]Test
HostName: 是ECS InstanceGroup主机命名规则的前缀;
[1,4]: 1为起始数字,4为数字的位数; 
Test: 为命名规则的尾缀;
结果创建的ECS的主机名分别为:HostName0001Test, HostName002Test, HostName0003Test, .....
{
  "Type": "ALIYUN::ECS::InstanceGroup",
  "Condition": "IsCreateVpc",
  "Properties": {
    "IoOptimized": "optimized",
    "ImageId": {
      "Ref": "EcsGroupImageId"
    },
    "SecurityGroupId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "SG",
            "SecurityGroupId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "Password": {
      "Ref": "EcsPassword"
    },
    "MinAmount": {
      "Ref": "MaxAmount"
    },
    "SystemDiskCategory": {
      "Ref": "EcsSystemDiskCategory"
    },
    "MaxAmount": {
      "Ref": "MaxAmount"
    },
    "VSwitchId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "VSwitch",
            "VSwitchId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "VpcId": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        {
          "Ref": "ALIYUN::NoValue"
        }
      ]
    },
    "InstanceType": {
      "Ref": "EcsGroupInstanceType"
    },
    "InstanceName": {
      "Fn::Join": [
        "",
        [
          {
            "Ref": "InstanceNamePrefix"
          },
          "[",
          {
            "Ref": "InstanceNameBeginNumber"
          },
          ",4]",
          {
            "Ref": "InstanceNameSuffix"
          }
        ]
      ]
    },
    "HostName": {
      "Fn::Join": [
        "",
        [
          "HostNameTest",
          "[1,4]",
          {
            "Ref": "InstanceNameSuffix"
          }
        ]
      ]
    },
    "AllocatePublicIP": {
      "Fn::If": [
        "IsCreateVpc",
        false,
        true
      ]
    },
    "UserData": {
      "Fn::Join": [
        "",
        [
          "#!/bin/sh\n",
          "echo \"hello , create ecs group test\" > /tmp/create_test.log\n"
        ]
      ]
    }
  }
}

2.为SLB实例添加后端服务器

下面示例代码创建的附加后端服务器功能,用到的一些ROS的函数功能,以及自己定义的一些逻辑判断,具体可根据方案模版查阅;
因为考虑到要为多个SLB实例添加后端服务器的情况,本方案用了Conditions及函数的功能配合完成了是为单/多个SLB添加后端服务器。

{
  "Type": "ALIYUN::SLB::BackendServerAttachment",
  "Condition": "IsAttachment1",
  "Properties": {
    "LoadBalancerId": {
      "Fn::If": [
        "IsCreateSlb",
        {
          "Fn::GetAtt": [
            "LoadBalancer",
            "LoadBalancerId"
          ]
        },
        {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        }
      ]
    },
    "BackendServerList": {
      "Fn::If": [
        "IsCreateVpc",
        {
          "Fn::GetAtt": [
            "EcsInstanceGroupWithVpc",
            "InstanceIds"
          ]
        },
        {
          "Fn::GetAtt": [
            "EcsInstanceGroupNoVpc",
            "InstanceIds"
          ]
        }
      ]
    },
    "BackendServerWeightList": {
      "Fn::Split": [
        ",",
        {
          "Ref": "BackendServerWeightList"
        }
      ]
    }
  }
}

3. 条件Code示例

请结合模版中的Paramters。

{
  "IsAttachment1": {
    "Fn::And": [
      {
        "Fn::Equals": [
          1,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Or": [
          "IsCreateSlb",
          {
            "Fn::Not": "IsCreateSlb"
          }
        ]
      }
    ]
  },
  "IsAttachment2": {
    "Fn::And": [
      {
        "Fn::Equals": [
          2,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Not": "IsCreateSlb"
      }
    ]
  },
  "IsAttachment3": {
    "Fn::And": [
      {
        "Fn::Equals": [
          3,
          {
            "Ref": "SlbCount"
          }
        ]
      },
      {
        "Fn::Not": "IsCreateSlb"
      }
    ]
  },
  "IsCreateSlb": {
    "Fn::Equals": [
      "None",
      {
        "Ref": "LoadBalancerIds"
      }
    ]
  },
  "IsCreateVpc": {
    "Fn::Equals": [
      "Yes",
      {
        "Ref": "IsCreateVpc"
      }
    ]
  },
  "NotUseVpc": {
    "Fn::Equals": [
      "No",
      {
        "Ref": "IsCreateVpc"
      }
    ]
  }
}

方案模版如下:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Conditions": {
    "IsAttachment1": {
      "Fn::And": [
        {
          "Fn::Equals": [
            1,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Or": [
            "IsCreateSlb",
            {
              "Fn::Not": "IsCreateSlb"
            }
          ]
        }
      ]
    },
    "IsAttachment2": {
      "Fn::And": [
        {
          "Fn::Equals": [
            2,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Not": "IsCreateSlb"
        }
      ]
    },
    "IsAttachment3": {
      "Fn::And": [
        {
          "Fn::Equals": [
            3,
            {
              "Ref": "SlbCount"
            }
          ]
        },
        {
          "Fn::Not": "IsCreateSlb"
        }
      ]
    },
    "IsCreateSlb": {
      "Fn::Equals": [
        "None",
        {
          "Ref": "LoadBalancerIds"
        }
      ]
    },
    "IsCreateVpc": {
      "Fn::Equals": [
        "Yes",
        {
          "Ref": "IsCreateVpc"
        }
      ]
    },
    "NotUseVpc": {
      "Fn::Equals": [
        "No",
        {
          "Ref": "IsCreateVpc"
        }
      ]
    }
  },
  "Parameters": {
    "SlbCount": {
      "Type": "Number",
      "Label": "Slb的数量(确认SLB数量)",
      "Description": "需要添加的Slb实例的数量, 根据数量填写《Slb实例Id》。",
      "Default": 1,
      "AllowedValues": [
        1,
        2,
        3
      ]
    },
    "BackendServerWeightList": {
      "Type": "String",
      "Label": "Slb后端服务器权重",
      "Description": "Slb后端服务器权重,允许单个或多个;如指定一个, 所有的Ecs权重都是此值;多个用','(英文逗号)隔开, 多个数量需对应《需要添加到Slb中的Ecs后端服务器》, 序号顺序一一对应。 e.g. 20,30,100 ",
      "Default": "100"
    },
    "LoadBalancerIds": {
      "Type": "String",
      "Label": "Slb实例Id",
      "Description": "最多提供三个slb,多个slb需要存在于一个region内, 允许单个或多个, 多个用','(英文逗号)隔开, \ne.g. lb-bp183j4sfd02j02csd,lb-bid839fjn2j78bl,lb-sl39f8fvp6cbd4;\n如使用默认值(None)不指定,默认创建一个Slb实例。",
      "Default": "None"
    },
    "IsCreateVpc": {
      "Type": "String",
      "Description": "是否创建Vpc,默认不创建。",
      "Label": "是否创建Vpc",
      "Default": "Yes",
      "AllowedValues": [
        "No",
        "Yes"
      ]
    },
    "EcsGroupInstanceType": {
      "Type": "String",
      "Description": "创建ECS实例的规格,默认为ecs.n1.large, 网络为classic类型可选用ecs.n1.large 或 ecs.n1.xlarge, 网络为Vpc类型可选用ecs.c5.large 或 ecs.g5.large",
      "Label": "ECS实例规格",
      "Default": "ecs.c5.large",
      "AllowedValues": [
        "ecs.n1.large",
        "ecs.n1.xlarge",
        "ecs.c5.large",
        "ecs.g5.large"
      ]
    },
    "MaxAmount": {
      "Type": "Number",
      "Description": "一次需要创建ECS实例数量,与《ECS实例名称的开始数字》可用值对应。",
      "Label": "创建ECS实例数量",
      "Default": 2
    },
    "EcsGroupImageId": {
      "Type": "String",
      "Description": "用于启动ECS实例的镜像ID。",
      "Label": "ECS实例镜像",
      "Default": "centos_7_06_64_20G_alibase_20190218.vhd",
      "AssociationProperty": "ALIYUN::ECS::Instance:ImageId"
    },
    "EcsPassword": {
      "Type": "String",
      "Description": "登陆ECS实例的密码。",
      "ConstraintDescription": "8-30个字符,字符,包括3种类型的大写字母、小写字母、数字或特殊字符。",
      "Label": "ECS实例密码",
      "AllowedPattern": "[a-zA-Z0-9-\\(\\)\\`\\~\\!@\\#\\$%\\^&\\*-+=\\|\\{\\}\\[\\]\\:\\;\\‘\\,\\.\\?\\/]*",
      "MaxLength": 30,
      "MinLength": 8,
      "NoEcho": true,
      "Confirm": true
    },
    "EcsSystemDiskCategory": {
      "Type": "String",
      "Description": "系统磁盘类型: 高效云盘(cloud_efficiency) or 普通云盘(cloud_ssd)",
      "Label": "ECS实例系统磁盘类型",
      "Default": "cloud_ssd",
      "AllowedValues": [
        "cloud_efficiency",
        "cloud_ssd"
      ]
    },
    "InstanceNamePrefix": {
      "Type": "String",
      "Description": "ECS实例名称前缀, 必须要指定, 不能为空。最长128个字符,可包含英文、中文、数字、(_)、(.)、(-)。",
      "Label": "ECS实例名称前缀",
      "Default": "EcsGroup"
    },
    "InstanceNameBeginNumber": {
      "Type": "String",
      "Description": "ECS实例名称的开始数字,默认为0000,可用值分别是0000、0005、0010、0015、0020, 数字位数已经固定最长为4位。",
      "Label": "ECS实例名称的开始数字",
      "Default": "0"
    },
    "InstanceNameSuffix": {
      "Type": "String",
      "Description": "指定ECS实例名称后缀(可选),默认为空。",
      "Label": "ECS实例名称后缀",
      "Default": "Test"
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VpcName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "Vpc"
            ]
          ]
        },
        "CidrBlock": "192.168.0.0/16",
        "Description": {
          "Fn::Join": [
            " ",
            [
              "Vpc of the",
              {
                "Ref": "ALIYUN::StackName"
              }
            ]
          ]
        }
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VSwitchName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "VSwitch"
            ]
          ]
        },
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        "CidrBlock": "192.168.0.0/16",
        "Description": {
          "Fn::Join": [
            " ",
            [
              "VSwitch of the",
              {
                "Ref": "ALIYUN::StackName"
              }
            ]
          ]
        },
        "ZoneId": {
          "Fn::Select": [
            "0",
            {
              "Fn::GetAZs": {
                "Ref": "ALIYUN::Region"
              }
            }
          ]
        }
      }
    },
    "SG": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Condition": "IsCreateVpc",
      "Properties": {
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        },
        "SecurityGroupName": {
          "Fn::Join": [
            "-",
            [
              {
                "Ref": "ALIYUN::StackName"
              },
              "SG"
            ]
          ]
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "all",
            "NicType": "intranet"
          }
        ],
        "SecurityGroupEgress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "IpProtocol": "all",
            "DestCidrIp": "0.0.0.0/0",
            "NicType": "intranet"
          }
        ]
      }
    },
    "EcsInstanceGroupWithVpc": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Condition": "IsCreateVpc",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": {
          "Ref": "EcsGroupImageId"
        },
        "SecurityGroupId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "SG",
                "SecurityGroupId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "Password": {
          "Ref": "EcsPassword"
        },
        "MinAmount": {
          "Ref": "MaxAmount"
        },
        "SystemDiskCategory": {
          "Ref": "EcsSystemDiskCategory"
        },
        "MaxAmount": {
          "Ref": "MaxAmount"
        },
        "VSwitchId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "VSwitch",
                "VSwitchId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "VpcId": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "Vpc",
                "VpcId"
              ]
            },
            {
              "Ref": "ALIYUN::NoValue"
            }
          ]
        },
        "InstanceType": {
          "Ref": "EcsGroupInstanceType"
        },
        "InstanceName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "InstanceNamePrefix"
              },
              "[",
              {
                "Ref": "InstanceNameBeginNumber"
              },
              ",4]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        },
        "HostName": {
          "Fn::Join": [
            "",
            [
              "HostNameTest",
              "[1,4]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        },
        "AllocatePublicIP": {
          "Fn::If": [
            "IsCreateVpc",
            false,
            true
          ]
        },
        "UserData": {
          "Fn::Join": [
            "",
            [
              "#!/bin/sh\n",
              "echo \"hello , create ecs group test\" > /tmp/create_test.log\n"
            ]
          ]
        }
      }
    },
    "EcsInstanceGroupNoVpc": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Condition": "NotUseVpc",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": {
          "Ref": "EcsGroupImageId"
        },
        "Password": {
          "Ref": "EcsPassword"
        },
        "MinAmount": {
          "Ref": "MaxAmount"
        },
        "SystemDiskCategory": {
          "Ref": "EcsSystemDiskCategory"
        },
        "MaxAmount": {
          "Ref": "MaxAmount"
        },
        "InstanceType": {
          "Ref": "EcsGroupInstanceType"
        },
        "InstanceName": {
          "Fn::Join": [
            "",
            [
              {
                "Ref": "InstanceNamePrefix"
              },
              "[",
              {
                "Ref": "InstanceNameBeginNumber"
              },
              ",",
              "4",
              "]",
              {
                "Ref": "InstanceNameSuffix"
              }
            ]
          ]
        }
      }
    },
    "LoadBalancer": {
      "Condition": "IsCreateSlb",
      "Type": "ALIYUN::SLB::LoadBalancer",
      "Properties": {
        "AddressType": "internet"
      }
    },
    "BackendServerAttachment1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment1",
      "Properties": {
        "LoadBalancerId": {
          "Fn::If": [
            "IsCreateSlb",
            {
              "Fn::GetAtt": [
                "LoadBalancer",
                "LoadBalancerId"
              ]
            },
            {
              "Fn::Select": [
                "0",
                {
                  "Fn::Split": [
                    ",",
                    {
                      "Ref": "LoadBalancerIds"
                    }
                  ]
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment2-1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment2",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment2-2": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment2",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "1",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-1": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "0",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-2": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "1",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    },
    "BackendServerAttachment3-3": {
      "Type": "ALIYUN::SLB::BackendServerAttachment",
      "Condition": "IsAttachment3",
      "Properties": {
        "LoadBalancerId": {
          "Fn::Select": [
            "2",
            {
              "Fn::Split": [
                ",",
                {
                  "Ref": "LoadBalancerIds"
                }
              ]
            }
          ]
        },
        "BackendServerList": {
          "Fn::If": [
            "IsCreateVpc",
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupWithVpc",
                "InstanceIds"
              ]
            },
            {
              "Fn::GetAtt": [
                "EcsInstanceGroupNoVpc",
                "InstanceIds"
              ]
            }
          ]
        },
        "BackendServerWeightList": {
          "Fn::Split": [
            ",",
            {
              "Ref": "BackendServerWeightList"
            }
          ]
        }
      }
    }
  },
  "Outputs": {
    "EcsInstanceIds": {
      "Description": "所有ECS实例的ID。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "InstanceIds"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "InstanceIds"
            ]
          }
        ]
      }
    },
    "LoadBalancerIp": {
      "Condition": "IsCreateSlb",
      "Description": "SLB实例的IP。",
      "Value": {
        "Fn::GetAtt": [
          "LoadBalancer",
          "IpAddress"
        ]
      }
    },
    "EcsPublicIps": {
      "DependsOn": "NotUseVpc",
      "Description": "所有ECS实例的公网IP列表",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          "Vpc类型的ECS实例没有公网IP",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "PublicIps"
            ]
          }
        ]
      }
    },
    "EcsPrivateIps": {
      "Description": "所有ECS实例的私网IP列表。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "PrivateIps"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "InnerIps"
            ]
          }
        ]
      }
    },
    "EcsHostNames": {
      "Description": "所有ECS实例的主机名称列表。",
      "Value": {
        "Fn::If": [
          "IsCreateVpc",
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupWithVpc",
              "HostNames"
            ]
          },
          {
            "Fn::GetAtt": [
              "EcsInstanceGroupNoVpc",
              "HostNames"
            ]
          }
        ]
      }
    }
  }
}
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7天前
|
消息中间件 安全 Unix
SSH配置多台服务器之间的免密登陆以及登陆别名
SSH配置多台服务器之间的免密登陆以及登陆别名
18 1
|
25天前
|
弹性计算 运维 监控
slb后端服务器组(Backend Server Group)关联
阿里云SLB的后端服务器组提供逻辑分组、精细化路由、端口隔离、权重分配与会话保持等功能,便于资源管理、流量控制和故障隔离。通过监听规则、健康检查、标签和API关联,实现灵活的后端资源配置,适应多变的业务需求,确保服务稳定性和资源利用率。
15 1
|
30天前
|
弹性计算 负载均衡 容灾
slb配置后端服务器组
配置阿里云SLB后端服务器组涉及四个主要步骤:创建服务器组、添加ECS实例、关联监听规则和设定负载均衡策略。这使得流量根据业务需求和服务器特性进行转发,便于应用架构的灵活管理和扩展,支持蓝绿部署、灰度发布,并通过多可用区提升系统可用性和容灾能力。
25 3
|
3月前
|
存储 Serverless 文件存储
函数计算FC 怎么配置可以让多台服务器共享同一个模型呢?
【1月更文挑战第2天】【1月更文挑战第10篇】函数计算FC 怎么配置可以让多台服务器共享同一个模型呢?
578 1
|
28天前
|
弹性计算 负载均衡
slb添加后端服务器
阿里云SLB服务用于流量分发,提升系统可用性和响应速度。添加ECS实例到SLB的步骤包括:登录控制台,选择“弹性计算”->“负载均衡”,找到目标SLB实例,进入详情页,点击“添加后端服务器”。挑选ECS实例,可按ID、名称或标签筛选,设置权重(默认100),并确保ECS实例状态正常,与SLB在同一地域,安全组允许SLB连接。添加后可考虑配置健康检查等高级选项。
14 1
|
28天前
|
弹性计算 负载均衡 网络安全
slb创建后端服务器组
在阿里云SLB服务中创建后端服务器组,需登录控制台,选择目标SLB实例,进入监听器设置,添加后端服务器。选择ECS实例或ENI,设定服务器端口和权重,然后保存设置。此操作将ECS实例纳入SLB的负载均衡与健康检查管理。
16 1
|
1月前
|
弹性计算 负载均衡
slb添加后端服务器
阿里云SLB服务实现流量分发,提升业务可用性和响应速度。添加后端服务器步骤包括:登录控制台,选择“弹性计算”->“负载均衡”,点击目标SLB实例进入详情,点击“后端服务器”->“添加ECS实例”。筛选并选择ECS实例,设置权重,确认后点击“确定”。添加后检查健康检查状态,确保ECS实例状态正常,同地域、可用区,并配置好安全组规则。
16 2
|
4月前
|
数据处理
Axios 默认配置 简化URL 简化代码 多台服务器接口配置
Axios 默认配置 简化URL 简化代码 多台服务器接口配置
|
7月前
|
存储 弹性计算 负载均衡
使用SLB+2ECS+NAS,部署电商web网站的高可用架构
如您需要开发电商网站并且对外提供服务,当您的业务上升时,您需要为应用考虑高吞吐,高并发,高可用等能力,来应对用户的并发访问,保证应用稳定。本场景主要介绍如何使用SLB,ECS和NAS搭建高可用电商网站,助您业务上升。
421 0
|
7月前
|
弹性计算 固态存储 Linux
使用ROS创建ECS实例
本场景利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云云服务器实例(ECS)。
68 0

推荐镜像

更多