Завести #external (internet-facing/#public) #LoadBalancer (#ELB/#ALB/#NLB) на расположенные в #private #subnet виртуалки никаких проблем нет. Просто указываем для него, как и положено, #DMZ #subnet (#public):
А виртуалкам, расположенным и в #private_subnet добавляем в #security_group правила полного доступа с данного балансера:
#CloudFormation #templates
albExt:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: externalAlb
Scheme: internet-facing
Subnets: # DMZ if public
- !ImportValue subnetVpc4DmzA
- !ImportValue subnetVpc4DmzB
SecurityGroups:
- !Ref sgAlb
А виртуалкам, расположенным и в #private_subnet добавляем в #security_group правила полного доступа с данного балансера:
sgInstance:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !ImportValue vpc4
GroupDescription: Full access for ALB
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 0
ToPort: 65535
SourceSecurityGroupId: !Ref sgAlb
Description: All TCP trafic - only for ALB
#CloudFormation #templates
Amazon Web Services, Inc.
Attach EC2 instances with private IP addresses to an internet-facing load balancer
I have an internet-facing Elastic Load Balancing (ELB) load balancer. I want to attach backend Amazon Elastic Compute Cloud (Amazon EC2) instances located in a private subnet.
При использовании #DNS #Alias нужно учитывать, что #HostedZoneId разный для разных Alias Target.
Для #CloudFront он фиксированный Z2FDTNDATAQYW2:
Для #LoadBalancer нужно получать его через #GetAtt, для #ELB это:
Для #ALB это:
Для #alias на другую #RecordSet нужно получать #HostedZoneId домена:
def Result = sh( script: 'aws route53 list-hosted-zones-by-name --dns-name '+gos.MainDomain, returnStdout: true )
def ResultJson = readJSON ( text: Result )
Stack['dns']['params']['HostedZoneIdDomain'] = ResultJson['HostedZones'][0]['Id'].split('/')[2]
Для #CloudFront он фиксированный Z2FDTNDATAQYW2:
aliasSite:
Type: AWS::Route53::RecordSet
Properties:
HostedZoneName: !Join ['', [!Ref MainDomain, '.']]
Name: !Ref MainDomain
Type: A
AliasTarget:
DNSName: !Ref CnameSite
HostedZoneId: Z2FDTNDATAQYW2
Для #LoadBalancer нужно получать его через #GetAtt, для #ELB это:
HostedZoneId1:
Value: !GetAtt [elbExt, 'CanonicalHostedZoneNameID']Для #ALB это:
HostedZoneId1:
Value: !GetAtt [albExt, 'CanonicalHostedZoneID']Для #alias на другую #RecordSet нужно получать #HostedZoneId домена:
def Result = sh( script: 'aws route53 list-hosted-zones-by-name --dns-name '+gos.MainDomain, returnStdout: true )
def ResultJson = readJSON ( text: Result )
Stack['dns']['params']['HostedZoneIdDomain'] = ResultJson['HostedZones'][0]['Id'].split('/')[2]
Amazon
Values specific for simple alias records - Amazon Route 53
When you create alias records, you specify the following values. For more information, see .
При использовании #ELB (созданного через #CloudFormation) с большим количеством инстансов, стоит помнить про фичу Cross-Zone Load Balancing, которая отключена по умолчанию (при создании балансера через консоль - включена по умолчанию).
Итого: для #ELB её нужно включать для более гладкого распределения трафика. У #ALB всегда включена, у #NLB - нужно включать самому.
Итого: для #ELB её нужно включать для более гладкого распределения трафика. У #ALB всегда включена, у #NLB - нужно включать самому.
Amazon
How Elastic Load Balancing works - Elastic Load Balancing
Learn more about how Elastic Load Balancing works.
В случаях, когда нужно иметь #StaticIP для #ALB обычно используется #NLB перед ним (который имеет статический IP для каждой зоны) и #lambda, которая отрабатывает регистрации текущих IP у ALB в качестве целей для NLB.
https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/
С появлением AWS Global Accelerator можно упростить реализацию ALB Static IP, поставив перед ALB #Global_Accelerator (вместо NLB + Lambda). Решение "с перебором" (и более дороже), но может оказаться быстрым "на попробовать" и где-то более удобным в поддержке.
https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/
С появлением AWS Global Accelerator можно упростить реализацию ALB Static IP, поставив перед ALB #Global_Accelerator (вместо NLB + Lambda). Решение "с перебором" (и более дороже), но может оказаться быстрым "на попробовать" и где-то более удобным в поддержке.
Amazon
Using AWS Lambda to enable static IP addresses for Application Load Balancers | Amazon Web Services
Update: On September 27th, 2021, we launched Application Load Balancer(ALB)-type target groups for Network Load Balancer (NLB). With this launch, you can register ALB as a target of NLB to forward traffic from NLB to ALB without needing to actively manage…
Least Outstanding Requests (LOR) балансировка для ALB
При распределении запросов за ALB используется обычный Round-Robin. Теперь же можно задать Least Outstanding Requests (LOR) - маршрутизировать запросы сначала к тем, кто лучше пингуется:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm
То есть запросы будут получать инстансы с учётом значений RequestCount, TargetConnectionErrorCount и TargetResponseTime.
Не на всех типах нагрузки это отразится, однако денег лишних не просит, а первые результаты очень положительные (см. картинку), потому точно стоит попробовать.
Включается в консоли в Target Groups или с помощью #aws_cli:
https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html
Удачных экспериментов!
#ALB
При распределении запросов за ALB используется обычный Round-Robin. Теперь же можно задать Least Outstanding Requests (LOR) - маршрутизировать запросы сначала к тем, кто лучше пингуется:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#modify-routing-algorithm
То есть запросы будут получать инстансы с учётом значений RequestCount, TargetConnectionErrorCount и TargetResponseTime.
Не на всех типах нагрузки это отразится, однако денег лишних не просит, а первые результаты очень положительные (см. картинку), потому точно стоит попробовать.
Включается в консоли в Target Groups или с помощью #aws_cli:
https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group-attributes.html
Удачных экспериментов!
#ALB
Least Outstanding Requests в действии
В конце прошлого года к стандартному Round-Robin алгоритму раздачи трафика лоадбалансером добавился ещё и Least Outstanding Requests. Кто сие пропустил или просто интересно взглянуть, что это и как работает — очень хорошая статейка:
https://medium.com/dazn-tech/aws-application-load-balancer-algorithms-765be2eca158
Тестирование у автора показало местами кратный прирост скорости. Так что очень стоит взглянуть и попробовать у себя.
#ALB
В конце прошлого года к стандартному Round-Robin алгоритму раздачи трафика лоадбалансером добавился ещё и Least Outstanding Requests. Кто сие пропустил или просто интересно взглянуть, что это и как работает — очень хорошая статейка:
https://medium.com/dazn-tech/aws-application-load-balancer-algorithms-765be2eca158
Тестирование у автора показало местами кратный прирост скорости. Так что очень стоит взглянуть и попробовать у себя.
#ALB
ALB + Static IP
Получить статический айпишник для ALB можно в пару кликов, включив поддержку Global Accelerator во вкладке Integrated services (на картинке).
https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.alb-accelerator.html
Конечно, этот айпишник будет у Global Accelerator, который добавит некоторые расходы ко всей конструкции, но также и даст ускорение при работе с клиентами по всему миру за счёт того, что запросы будут ходить на ALB через ближайшие к клиенту Edge точки Амазона (далее внутри по инфраструктуре AWS, а не через интернет).
#ALB #Global_Accelerator
Получить статический айпишник для ALB можно в пару кликов, включив поддержку Global Accelerator во вкладке Integrated services (на картинке).
https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.alb-accelerator.html
Конечно, этот айпишник будет у Global Accelerator, который добавит некоторые расходы ко всей конструкции, но также и даст ускорение при работе с клиентами по всему миру за счёт того, что запросы будут ходить на ALB через ближайшие к клиенту Edge точки Амазона (далее внутри по инфраструктуре AWS, а не через интернет).
#ALB #Global_Accelerator
Один ALB балансер для всех ингрессов:
https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/
Раньше на каждый ингресс создавался отдельный ALB, теперь же можно использовать один (общий для разных/нескольких ингрессов), как для ELB (Classic балансера).
#ALB #EKS
https://aws.amazon.com/blogs/containers/introducing-aws-load-balancer-controller/
Раньше на каждый ингресс создавался отдельный ALB, теперь же можно использовать один (общий для разных/нескольких ингрессов), как для ELB (Classic балансера).
#ALB #EKS
Amazon
Introducing the AWS Load Balancer Controller | Amazon Web Services
The AWS ALB ingress controller allows you to easily provision an AWS Application Load Balancer (ALB) from a Kubernetes ingress resource. Kubernetes users have been using it in production for years and it’s a great way to expose your Kubernetes services in…
ALB + HTTP/2 + gRPC:
https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/
#ALB
https://aws.amazon.com/blogs/aws/new-application-load-balancer-support-for-end-to-end-http-2-and-grpc/
#ALB
Amazon
New – Application Load Balancer Support for End-to-End HTTP/2 and gRPC | Amazon Web Services
Thanks to its efficiency and support for numerous programming languages, gRPC is a popular choice for microservice integrations and client-server communications. gRPC is a high performance remote procedure call (RPC) framework using HTTP/2 for transport and…
Подробности причин возникновения
https://www.tessian.com/blog/how-to-fix-http-502-errors/
#ALB
Error 502 при работе с ALB:https://www.tessian.com/blog/how-to-fix-http-502-errors/
#ALB
Tessian
How to Fix 502 Errors - Tessian
Struggling with HTTP 502 “Bad Gateway” errors? A Tessian engineer explains why these errors happen and how to fix them with AWS ALB.
Направляем трафик напрямую от NLB к ALB без дополнительных костылей:
https://aws.amazon.com/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/
#NLB #ALB
https://aws.amazon.com/blogs/networking-and-content-delivery/application-load-balancer-type-target-group-for-network-load-balancer/
Today, we are launching ALB as a Target of NLB to simplify this process. This new feature allows AWS customers to directly register an ALB as an NLB target, eliminating the need to actively manage changing ALB IP addresses. This is achieved by making use of a newly introduced Application Load Balancer-type target group for NLB.#NLB #ALB
Amazon
Application Load Balancer-type Target Group for Network Load Balancer | Amazon Web Services
Application Load Balancer (ALB) is a fully managed layer 7 load balancing service that load balances incoming traffic across multiple targets, such as Amazon EC2 instances. ALB supports advanced request routing features based on parameters like HTTP headers…
Multiple applications on EKS using a single ALB:
https://aws.amazon.com/blogs/containers/how-to-expose-multiple-applications-on-amazon-eks-using-a-single-application-load-balancer/
▫️
▫️
▫️
#EKS #ALB
https://aws.amazon.com/blogs/containers/how-to-expose-multiple-applications-on-amazon-eks-using-a-single-application-load-balancer/
▫️
In this blog post, we demonstrated, in a step-by-step procedure, how to implement a microservices architecture in a simple and cost-effective way using EKS with a single ALB.▫️
If you wish, you could also achieve the same results by using several Ingress objects pointing to the same ALB using the annotation “alb.ingress.kubernetes.io/group.name”. In this case, you would create individual Ingresses and add a common name to this annotation.▫️
By using this approach, different teams can be completely independent from each other because they can deploy and manage their own services and ingresses while relying on the ALB.#EKS #ALB
👍1
ALB + TLS 1.3: 🎉
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies
🔹
🔸
#ALB
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies
🔹
ELBSecurityPolicy-TLS13-1-2-2021-06 security policy is the default policy for HTTPS listeners created using the AWS Console. This security policy includes TLS 1.3, which is optimized for security and performance, and backward compatible with TLS 1.2.🔸
ELBSecurityPolicy-2016-08 policy is the default security policy for listeners created using the AWS CLI.#ALB
👍10🎉9❤4
ALB vs NLB vs GWLB (Gateway Load Balancer)
https://devopscube.com/aws-load-balancers/
All the most important features of different types of AWS Load Balancers (ALB, NLB, GWLB) in one place. Great animation, informative pictures, highly recommended!
#ALB #NLB #GWLB
https://devopscube.com/aws-load-balancers/
All the most important features of different types of AWS Load Balancers (ALB, NLB, GWLB) in one place. Great animation, informative pictures, highly recommended!
#ALB #NLB #GWLB
👍13❤2