Завести #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.
При использовании #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…
Проблемы NLB + TCP Health Checks
Когда требуется реализовать end-to-end шифрование, то логично выбирать #NLB для подобной задачи. Т.е. это когда не подходит терминация #SSL трафика на ALB, а вы хотите прямиком доставить ваш #TLS до каждого инстанса.
При реализации такой очевидной схемы с NLB можно наткнуться на нестабильную работу TCP Health Check - у вас точно открыты порты, а Health Check не прокатывает, совершенно случайные ошибки, лаги с ответами и прочие странности.
В таком случае не забывайте про ELB (Classic Elastic LoadBalancer). Он прекрасно умеет TCP forwarding и пока его окончательно не списали с большой долей вероятности решит ваш вопрос. С ним не будет никакой магии с HealthCheck-ами.
Рекомендация использовать #ELB вместо #NLB является крайней мерой и просто отражает тот факт, что некоторые сервисы даже спустя годы могут быть не самыми стабильными. А также их стабильность может зависеть от региона.
В любом случае помните, что большинство задач на Амазоне всегда можно решить несколькими способами и решить хорошо.
Когда требуется реализовать end-to-end шифрование, то логично выбирать #NLB для подобной задачи. Т.е. это когда не подходит терминация #SSL трафика на ALB, а вы хотите прямиком доставить ваш #TLS до каждого инстанса.
При реализации такой очевидной схемы с NLB можно наткнуться на нестабильную работу TCP Health Check - у вас точно открыты порты, а Health Check не прокатывает, совершенно случайные ошибки, лаги с ответами и прочие странности.
В таком случае не забывайте про ELB (Classic Elastic LoadBalancer). Он прекрасно умеет TCP forwarding и пока его окончательно не списали с большой долей вероятности решит ваш вопрос. С ним не будет никакой магии с HealthCheck-ами.
Рекомендация использовать #ELB вместо #NLB является крайней мерой и просто отражает тот факт, что некоторые сервисы даже спустя годы могут быть не самыми стабильными. А также их стабильность может зависеть от региона.
В любом случае помните, что большинство задач на Амазоне всегда можно решить несколькими способами и решить хорошо.
NLB + sticky sessions
Теперь и NLB обзавёлся поддержкой Sticky Sessions:
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#sticky-sessions
Очень интересно отметить, что новая фича доступна лишь в европейских датацентрах Ирландии, Франции (Paris) и Швеции (Stockholm).
Так что не обнаружив NLB Sticky Sessions в как бы дефолтной N.Virginia (
Кстати, на официальной странице возможностей балансеров у NLB ещё нет галочки (см. картинку), но вскоре поставят.
#NLB
Теперь и NLB обзавёлся поддержкой Sticky Sessions:
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#sticky-sessions
Очень интересно отметить, что новая фича доступна лишь в европейских датацентрах Ирландии, Франции (Paris) и Швеции (Stockholm).
Так что не обнаружив NLB Sticky Sessions в как бы дефолтной N.Virginia (
us-east-1) — не удивляйтесь, там её нет, европейское подразделение AWS рулит. :)Кстати, на официальной странице возможностей балансеров у NLB ещё нет галочки (см. картинку), но вскоре поставят.
#NLB
NLB + EKS:
https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/
#EKS #NLB
https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/
#EKS #NLB
Amazon
Using a Network Load Balancer with the NGINX Ingress Controller on Amazon EKS | Amazon Web Services
Kubernetes Ingress is an API object that provides a collection of routing rules that govern how external/internal users access Kubernetes services running in a cluster. An ingress controller is responsible for reading the ingress resource information and…
Столкнулся с некоторой "однократной" проблемой. Если в свежесозданный аккаунт с EKS ставить что-то, использующее NLB, а не ELB, то можно наткнуться на ситуацию как на картинке — NLB не создаётся, сервис зависает в состоянии "pending".
При этом, если поменять тип балансера на обычный ELB, то всё отработает. А если после этого снова поменять на NLB — теперь он создастся без каких-то проблем!
Проблема кроется в наличии в аккаунте сервисной роли AWSServiceRoleForElasticLoadBalancing, которая в новых аккаунтах отсутствует (в то время, как в старых аккаунтах она сразу есть!) и которая должна создаваться автоматически. Что происходит для ELB и не срабатывает для NLB.
Для решения проблемы достаточно однократно выполнить:
#NLB #EKS
При этом, если поменять тип балансера на обычный ELB, то всё отработает. А если после этого снова поменять на NLB — теперь он создастся без каких-то проблем!
Проблема кроется в наличии в аккаунте сервисной роли AWSServiceRoleForElasticLoadBalancing, которая в новых аккаунтах отсутствует (в то время, как в старых аккаунтах она сразу есть!) и которая должна создаваться автоматически. Что происходит для ELB и не срабатывает для NLB.
Для решения проблемы достаточно однократно выполнить:
aws iam create-service-linked-role --aws-service-name elasticloadbalancing.amazonaws.com#NLB #EKS
Направляем трафик напрямую от 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…
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
NLB + Security Groups
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html
✅ You can associate SG with NLB when you create it.
✅ After you create NLB with associated SG, you can change SG associated with NLB at any time.
👉 If you create NLB without associating any SG, you can't associate them with NLB later on.
⚠️ Health checks are subject to outbound rules, but not inbound rules. You must ensure that outbound rules don't block health check traffic. Otherwise, NLB considers the targets unhealthy.
✅ You can control whether PrivateLink traffic is subject to inbound rules. If you enable inbound rules on PrivateLink traffic, the source of the traffic is the private IP address of the client, not the endpoint interface.
#NLB #SG
https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html
✅ You can associate SG with NLB when you create it.
✅ After you create NLB with associated SG, you can change SG associated with NLB at any time.
👉 If you create NLB without associating any SG, you can't associate them with NLB later on.
⚠️ Health checks are subject to outbound rules, but not inbound rules. You must ensure that outbound rules don't block health check traffic. Otherwise, NLB considers the targets unhealthy.
✅ You can control whether PrivateLink traffic is subject to inbound rules. If you enable inbound rules on PrivateLink traffic, the source of the traffic is the private IP address of the client, not the endpoint interface.
#NLB #SG
🔥11🤔3❤1👍1