Как правильно создать и прикрепить ELB в Boto3

Я новичок в Boto3 API Amazon. Я создал базовую схему своего образца архитектуры, показанную ниже, с ELB, 4 экземплярами, 2 подсетями и 2 целевыми группами в 2 разных зонах доступности (по 2 экземпляра в каждой целевой группе).

введите здесь описание изображения

Я знаю, как создать инстанс EC2, целевую группу, подсети и ELB. Но какие функции ELB использовать, мне непонятно.

Как я могу подключить ELB к другим компонентам? В принципе, как добавить экземпляры в ELB? Я не уверен, какие следующие шаги и функции необходимы сейчас.

Вот мой простой код:

def create_load_balancer(load_balancer_name, vpcid, subnets, security_group):
    command = "aws elbv2 create-load-balancer --name " + load_balancer_name + " --subnets " + subnets + " --security-groups " + security_group+" --scheme internet-facing --type application"
    response = os.popen(command).read()

// ....created 4 instances, subnets, and security groups ...

//now ELB:
#Load Balancer
elb = boto3.client('elbv2')
elb.create_target_group( Name='boto3-target-a', Protocol='HTTP',  Port=80, VpcId=vpc.id)
elb.create_target_group( Name='boto3-target-b', Protocol='HTTP',  Port=80, VpcId=vpc.id)
response = elb.create_load_balancer(Name="elb_boto3", Listeners=[ { 'Protocol': 'tcp', 'LoadBalancerPort': 80, 'InstanceProtocol': 'tcp', 'InstancePort': 80, 'SSLCertificateId': 'string'}, ], Subnets=[subnet1,subnet2], SecurityGroups=[sec_group], Scheme='internet-facing', Type='application')

person Tina J    schedule 22.09.2018    source источник
comment
Обычно проще всего реализовать такое решение с помощью консоли управления, чтобы сначала изучить взаимосвязь между компонентами (ELB, целевая группа, прослушиватель, экземпляр и т. д.). Затем попробуйте реализовать то же самое, используя boto3.   -  person John Rotenstein    schedule 23.09.2018
comment
Я сделал то же самое! Но так и не смог разобраться с аргументами и Арном?!   -  person Tina J    schedule 23.09.2018


Ответы (1)


Используйте register_targets(). для присоединения экземпляров к целевой группе:

response = client.register_targets(
    TargetGroupArn='arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067',
    Targets=[
        {
            'Id': 'i-80c8dd94',
        },
        {
            'Id': 'i-ceddcd4d',
        },
    ],
)

Используйте create_listener(). чтобы связать целевую группу с балансировщиком нагрузки:

response = client.create_listener(
    DefaultActions=[
        {
            'TargetGroupArn': 'arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067',
            'Type': 'forward',
        },
    ],
    LoadBalancerArn='arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188',
    Port=80,
    Protocol='HTTP',
)

Из create_target_group() документации:

Чтобы зарегистрировать цели в целевой группе, используйте RegisterTargets. Чтобы обновить параметры проверки работоспособности для целевой группы, используйте ModifyTargetGroup . Для мониторинга работоспособности целей в целевой группе используйте DescribeTargetHealth .

Чтобы направить трафик к целям в целевой группе, укажите целевую группу в действии с помощью CreateListener или CreateRule .

Итак, лучший порядок создания:

  • Создать балансировщик нагрузки
  • Создайте целевые группы
  • Создайте слушателей, чтобы связать целевые группы с ELB
  • Зарегистрируйте экземпляры в целевых группах
person John Rotenstein    schedule 23.09.2018
comment
Что это за Арн? Это идентификатор целевой группы?! Мы должны получить его или установить его? - person Tina J; 23.09.2018
comment
TargetGroupArn означает уникальный идентификатор (имя ресурса Amazon) целевой группы. Я обновил свой ответ с предложенным порядком создания. - person John Rotenstein; 24.09.2018
comment
Tnx. Как мне создать слушателей для другой целевой группы? внутри одного create_listeners() или каждого отдельно? - person Tina J; 24.09.2018