Как да

Създайте и конфигурирайте AWS Application Balancer за натоварване с CloudFormation

Създайте и конфигурирайте AWS Application Balancer за натоварване с CloudFormation

Този урок има за цел да привлече читателя чрез създаване на балансьор на натоварване на приложения и неговите зависимости с помощта на CloudFormation. Шаблонът ще създаде:

Облачната платформа AWS предоставя управлявани балансиращи натоварвания, използвайки услугата Elastic Load Balancer. Има опции за създаване на Приложение (слой 7), Мрежа (слой 4) или Класически балансиращ товар (както слой 4, така и 7). За този урок ще създадем балансир на приложението.

Балансиращ товар е полезен, защото:

Това дава на нашите приложения висока наличност. Използването на балансьор на натоварването в нашите приложения дава възможност за насочване на трафика към множество сървъри. В случай, че единият сървър се провали, трафикът ще бъде насочен към другите сървъри. Това също е добре за осигуряване на равномерно разпределение на трафика между различните сървъри.

Също така е полезно за насочване / филтриране на трафик въз основа на конфигурираните правила. Използвайки хост-базирана, базирана на пътя маршрутизация или комбинация от двете, може да се насочи трафик към различни сървъри.

Предварителни условия за настройка

Потребителят ще трябва да има:

N / B: Потребителят може да импортира сертификати, генерирани от други обекти за генериране на сертификати, в AWS диспечера на сертификати и да ги използва.

Стъпка 1: Създайте шаблон за CloudFormation

Използвайте кода по-долу за вашия шаблон за CloudFormation. Потребителят може да редактира различните части на шаблона, както е обяснено в следващия раздел.

AWSTemplateFormatVersion: "2010-09-09" Описание: "Създаване на ALB, ALB група за сигурност, целеви групи, слушатели и правила на слушателя" Параметри: VPC: Тип: Описание на низа: vpc за стартиране на услугата По подразбиране: vpc-ID PublicSubnet1: Тип : String Описание: Подмрежата, където да стартирате услугата По подразбиране: ID на подмрежа PublicSubnet2: Тип: Описание на низа: Подмрежата, където да стартирате услугата По подразбиране: Subnet-ID Ресурси: ALBSecurityGroup: Тип: "AWS :: EC2 :: SecurityGroup" Свойства: GroupDescription: "група за сигурност за ALB" GroupName: "test-ALB-SG" Етикети: - Ключ: "Проект" Стойност: "test-blog" - Ключ: "createdBy" Стойност: "Maureen Barasa" - Ключ: " Околна среда "Стойност:" тест "- Ключ:" Име "Стойност:" тест-ALB-SG "VpcId: !Ref VPC SecurityGroupIngress: - CidrIp: "0.0.0.0/0 "FromPort: 80 IpProtocol:" tcp "ToPort: 80 - CidrIp:" 0.0.0.0/0 "FromPort: 443 IpProtocol:" tcp "ToPort: 443 ApplicationLoadBalancer: Тип:" AWS :: ElasticLoadBalancingV2 :: LoadBalancer "Свойства: Име:" test-Application-Load-Balancer "Схема:" Интернет-облицовка "Тип: Подмрежи на "приложение": - !Ref PublicSubnet1 - !Ref PublicSubnet2 Групи за сигурност: - !Ref ALBSecurityGroup IpAddressType: "ipv4" LoadBalancerAttributes: - Key: "access_logs.s3.активиран "Стойност:" false "- Ключ:" idle_timeout.timeout_seconds "Стойност:" 60 "- Ключ:" deletion_protection.активиран "Стойност:" false "- Ключ:" маршрутизация.http2.активиран "Стойност:" вярно "- Ключ:" маршрутизация.http.drop_invalid_header_fields.активирано "Стойност:" false "HTTPSListener: Тип:" AWS :: ElasticLoadBalancingV2 :: Listener "Свойства: LoadBalancerArn: !Ref ApplicationLoadBalancer Порт: 443 Протокол: "HTTPS" SslPolicy: "ELBSecurityPolicy-2016-08" Сертификати: - CertificateArn: arn: aws: acm: eu-central-1: ************** : сертификат / ********************* Действия по подразбиране: - Поръчка: 1 TargetGroupArn: !Ref Test1TargetGroup Type: "forward" HTTPListener: Type: "AWS :: ElasticLoadBalancingV2 :: Listener" Properties: LoadBalancerArn: !Ref ApplicationLoadBalancer Порт: 80 Протокол: "HTTP" По подразбиране Действия: - Поръчка: 1 RedirectConfig: Протокол: "HTTPS" Порт: "443" Хост: "# хост" Път: "/ # път" Заявка: "#  заявка "StatusCode:" HTTP_301 "Тип:" пренасочване "Test1TargetGroup: Тип:" AWS :: ElasticLoadBalancingV2 :: TargetGroup "Свойства: HealthCheckIntervalSeconds: 30 HealthCheckPath:" / "Port: 80 Протокол:" HTTP "HealthCheckPort "HealthCheckProtocol:" HTTP "HealthCheckTimeoutSeconds: 5 UnhealthyThresholdCount: 2 TargetType:" instance "Matcher: HttpCode:" 200 "HealthyThresholdCount: 5 VpcId: !Ref VPC Name: "target-group-1" HealthCheckEnabled: true TargetGroupAttributes: - Key: "stickiness.активирано "Стойност:" false "- Ключ:" deregistration_delay.timeout_seconds "Стойност:" 300 "- Ключ:" лепкавост.тип "Стойност:" lb_cookie "- Ключ:" лепкавост.lb_cookie.duration_seconds "Стойност:" 86400 "- Ключ:" slow_start.duration_seconds "Стойност:" 0 "- Ключ:" load_balancing.алгоритъм.тип "Стойност:" round_robin "Test2TargetGroup: Тип:" AWS :: ElasticLoadBalancingV2 :: TargetGroup "Свойства: HealthCheckIntervalSeconds: 30 HealthCheckPath:" / "Порт: 80 Протокол:" HTTP "HealthCheckPort:" traffic-port "HealthCheckProcol: HTC HealthCheckTimeoutSeconds: 5 UnhealthyThresholdCount: 2 TargetType: "instance" Matcher: HttpCode: "200" HealthyThresholdCount: 5 VpcId: !Ref VPC Name: "target-group-2" HealthCheckEnabled: true TargetGroupAttributes: - Key: "stickiness.активирано "Стойност:" false "- Ключ:" deregistration_delay.timeout_seconds "Стойност:" 300 "- Ключ:" лепкавост.тип "Стойност:" lb_cookie "- Ключ:" лепкавост.lb_cookie.duration_seconds "Стойност:" 86400 "- Ключ:" slow_start.duration_seconds "Стойност:" 0 "- Ключ:" load_balancing.алгоритъм.тип "Стойност:" round_robin "TestListenerRule1: Тип:" AWS :: ElasticLoadBalancingV2 :: ListenerRule "Свойства: Приоритет:" 1 "ListenerArn: !Ref HTTPSListener Условия: - Поле: "head-header" Стойности: - "test1.блог.avrcr.com "Действия: - Тип:" напред "TargetGroupArn: !Ref Test1TargetGroup Order: 1 ForwardConfig: TargetGroups: - TargetGroupArn: !Ref Test1TargetGroup Тегло: 1 TargetGroupStickinessConfig: Enabled: false TestListenerRule2: Type: "AWS :: ElasticLoadBalancingV2 :: ListenerRule" Properties: Priority: "2" ListenerArn: !Ref HTTPSListener Условия: - Поле: "head-header" Стойности: - "test2.блог.com "Действия: - Тип:" напред "TargetGroupArn: !Ref Test2TargetGroup Order: 1 ForwardConfig: TargetGroups: - TargetGroupArn: !Ref Test2TargetGroup Тегло: 1 TargetGroupStickinessConfig: Enabled: false Изходи: ALB: Описание: Създадената loadbalancer Стойност: !Ref ApplicationLoadBalancer TargetGroup1: Описание: Създадената стойност на TargetGroup 1: !Ref Test1TargetGroup TargetGroup2: Описание: Създадената стойност на TargetGroup 2: !Ref Test2TargetGroup LoadBalancerSecurityGroup: Описание: групата ценни книжа за стойността ALB: !Ref ALBSecurityGroup

Обяснен шаблонът за облачна формация

Шаблонът съдържа 3 раздела. Параметри, ресурси и резултати.

Раздел Параметри

В раздела за параметри потребителят въвежда своите динамични променливи. В нашия шаблон потребителят трябва да персонализира шаблона, като въведе своите VPC и подмрежи ID. В нашия случай балансьорът на натоварването е насочен към интернет, поради което е необходимо той да бъде създаден в публични подмрежи. Ако потребителят иска да създаде вътрешен балансиращ товар, би било разумно той да бъде създаден в частни подмрежи.

Раздел ресурси

Разделът ресурси позволява на потребителя да дефинира ресурсите на AWS, които ще създаде.

В нашия шаблон започваме със създаването на група за сигурност на балансиращия товар. Групата за защита създава разрешен входящ трафик от портове 80 и 443. Потребителят може също да персонализира или да добави повече правила към групата за сигурност.

След това шаблонът създава балансьор на товара. Потребителят може да персонализира името на балансиращия товар, схемата или дали ще бъде вътрешно или с интернет. Ако сте вътрешни, любезно се уверете, че смените подмрежите от публични на частни. Те могат също да персонализират атрибутите на балансиращия товар според техните специфични нужди.

Тъй като отворихме пристанище 80 и 443 в групата за сигурност на балансиращия товар, шаблонът създава двамата слушатели за балансиращия товар. Единият слушател на порт 80 (HTTP), а другият на порт 443 (HTTPS). След това за HTTP слушателя шаблонът е конфигуриран да създава действие по подразбиране за препращане на всички заявки към HTTPS слушателя по подразбиране. Това също може да се персонализира според нуждите на потребителя.

За HTTPS слушателя включихме сертификата, който генерирахме за името на домейна ни. Потребителят трябва да промени сертификата ARN на свой собствен ARN ID на сертификата. Също така създадохме действие по подразбиране за пренасочване на трафик към целева група. Това ще препрати целия трафик, който в противен случай не е насочен към целевата група. Отново потребителят може да персонализира действията по подразбиране на HTTPS Listener по своите специфични нужди.

След това шаблонът създава две целеви групи. Потребителят може да персонализира свойствата на целевите групи според техните специфични нужди. Важно е да се отбележи, че целевият тип може да бъде екземпляр (EC2) или IP.

И накрая, шаблонът създава правила за слушане. За нашия случай, базиран на маршрутизиране въз основа на хост, създадохме правила за слушане, които препращат към конкретните целеви групи. Потребителят има възможност да персонализира правилата. Също така, те могат да се променят от маршрутизиране, базирано на хост, към маршрутизиране.

Раздел за изходи

Разделът за изходи извежда имената на създадените от вас ресурси.

Стъпка 2: Създайте CodePipeline за разполагане на шаблона

Създайте ролята на CodePipeline за разполагане на шаблон в CloudFormation. Използвайте долния шаблон за облачна формация, за да създадете ролята.

AWSTemplateFormatVersion: "2010-09-09" Описание: "Шаблон за създаване на екземпляр centos ec2 и инсталиране на ssm върху него" Ресурси: IAMInstanceRole: Тип: 'AWS :: IAM :: Роля' Свойства: Описание: Профилът на SSM инстанция RoleName: codepipeline -test AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloudformation.amazonaws.com Действие: - 'sts: AssumeRole' ManagedPolicyArns: - arn: aws: iam :: aws: policy / AWSCloudFormationFullAccess - arn: aws: iam :: aws: policy / CloudWatchFullAccess - arn: aws: iam :: aws: policy / AmazonEC2FullAccess Тагове: - Ключ: „Проект“ Стойност: „test-blog“ - Ключ: „Околна среда“ Стойност: „тест“ - Ключ: „createdBy“ Стойност: „Морийн Бараса“ - Ключ: „Име“ Стойност: „codepipeline-test "IAMInstanceProfile: Тип: AWS :: IAM :: InstanceProfile Свойства: InstanceProfileName: codepipeline-test Роли: - !Ref IAMInstanceRole Изходи: Профил: Описание: Създадената стойност на профила на екземпляр: !Ref IAMInstanceProfile Роля: Описание: Създадената роля Стойност: !Относно IAMInstanceRole 

След това отидете на конзолата CodeCommit. След това създайте хранилище за фиксиране на код. Ангажирайте вашия шаблон alb в хранилището.

На конзолата CodePipeline изберете създаване на конвейер.

Създаване на тръбопровод

След това изберете настройки на тръбопровода. За служебна роля изберете да създадете нова сервизна роля.

Изберете Настройки на тръбопровода

Също така, под Разширени настройки изберете кофата S3, която ще използвате за съхраняване на вашите артефакти. За ключа за шифроване изберете ключа по подразбиране AWS. След това щракнете върху следващия.

Разширени настройки

На екрана за добавяне на етап на източник изберете ангажиране на код като доставчик на източник.

Добавяне на изходен етап

Въведете подробностите за името на вашето хранилище CodeCommit и клона. Също така, за откриване на промени оставете настройката на Amazon CloudWatch Events. Това позволява на CloudWatch да открива промени, направени във вашия код, и да стартира автоматично конвейера, за да актуализира тези промени. Когато сте готови, щракнете напред.

Добавяне на настройки на етапа на източника

На екрана за добавяне на етап на изграждане щракнете върху пропускане на етапа на изграждане.

Пропуснете етап на изграждане

И накрая, на екрана за добавяне на етап на разгръщане изберете CloudFormation като опция за внедряване.

Изберете CloudFormation като опция за внедряване

Попълнете подробностите за вашето внедряване на CloudFormation. N / B: за ролята използвайте ролята, която сте създали с шаблона CloudFormation в началото на раздела.

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

Следващият етап позволява на потребителя да прегледа всички направени конфигурации. Ако всички конфигурации са правилни, щракнете върху създаване на конвейер.

Вече сте създали първия си конвейер за внедряване на шаблон за CloudFormation.

Успешен тръбопровод за внедряване

Важни връзки

Още ръководства за AWS:

Щастлива сграда!!!!

Как да проверите шаблоните за CloudFormation с cfn-lint и cfn-nag
Тази статия ръководи читателя как да валидира своя шаблон за облачна формация с помощта на инструменти cfn-lint и cfn-nag. Той също така обяснява как ...
Трябва ли всички фирми да бъдат онлайн?
През 2017 г. проучване показа, че 47% от хората са посетили уебсайта на компанията, преди да направят покупка, а 55% от хората ще търсят онлайн отзиви...
Инсталирайте Rocket.Чат на Ubuntu 20.04 LTS с Let's Encrypt SSL
Ракета.Чатът е платформа за чат с отворен код, която може да се използва като алтернатива на Slack. Той идва с много функции, които бихте искали да им...