Установка статического IP-адреса в AWS Load Balancer

#amazon-web-services #amazon-ec2 #dns #elastic-stack #aws-load-balancer

#amazon-веб-сервисы #amazon-ec2 #dns #эластичный стек #aws-балансировщик нагрузки

Вопрос:

Вот мой контекст: я пытаюсь перенести кластер из Digital Ocean в AWS (Eks).

В настоящее время у меня возникла проблема с внешним IP-адресом моего балансировщика нагрузки, и я не знаю, как воспроизвести поведение DO, потому что у меня нет реального внешнего IP-адреса.

Вот схема нашей архитектуры :

архитектура маршрутизации

В нашем кластере мы получили LoadBalancer с внешним IP. Мы создали traefik, который создает связь между нашими сервисами и DNS. Каждый DNS указывает на внешний IP-адрес балансировщика нагрузки.

Я хочу воспроизвести это поведение в своем кластере eks.

Я создал LoadBalancer со следующим yaml

 ---
kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
spec:
  type: LoadBalancer
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      name: web
    - protocol: TCP
      port: 8080
      targetPort: 8080
      name: dashboard
    - protocol: TCP
      port: 443
      targetPort: 443
      name: websecure
  

Это сработало хорошо, потому что я получил внешний IP-адрес: XXXXXXXXXXXXXXXXXXXX.eu-west-3.elb.amazonaws.com и если я продолжу http://XXXXXXXXXXXXX.eu-west-3.elb.amazonaws.com:8080 , отобразится моя панель мониторинга traefik!

Но есть две проблемы :

  • Это DNS, а не IP, я попытался покопаться в dns и пропинговать полученный IP, но это не сработало…
  • DNS моего LB не является постоянным, и это реальная проблема? Как DNS может быть связан с моей службой?

Я нашел много сообщений, связанных с переполнением стека, но я не нашел своих ответов, и я даже не уверен, что это возможно из-за масштабируемости AWS.

Спасибо. Я надеюсь, что кто-нибудь сможет мне помочь

Комментарии:

1. «DNS моего LB не является постоянным» как вы это определили? Он определенно является постоянным, если вы не удаляете и не создаете заново LB. Если вы используете AWS ALB, вам нужно будет использовать DNS-имя вместо IP-адреса. Если вы переключитесь на NLB, у вас будет статический IP-адрес.

2. Я удалил LB, чтобы протестировать его. да, если я переключусь на NLB, у меня будет реальный внешний IP-адрес вместо DNS?

3. Вы можете назначить AWS Elastic IP-адрес для сетевого балансировщика нагрузки. Он должен быть один для каждой зоны доступности, поэтому в итоге у вас будет 2 или 3 статических IP-адреса для NLB. У ALB есть много приятных функций, к которым у вас больше не будет доступа. Как правило, лучше использовать ALB и использовать CNAME в своих DNS-записях вместо записи A.

4. Я понимаю, но что произойдет, если что-то удалит мой LoadBalancer? Все мои CNAME будут устаревшими? Давайте представим, что я получил ALB DNS XXX-amazon.com , тогда я должен сделать CNAME следующим образом : — service-one.my-domain.com -> XXX-amazon.com service-two.my-domain.com -> XXX-amazon.com service-three.my-domain.com -> XXX-amazon.com Что произойдет , если LB мертв ? Я хотел бы найти способ, с помощью которого я мог бы повторно развернуть все в своем кластере, и он по-прежнему будет работать идеально. Как вы думаете, это возможно?

5. 1. Вы должны включить защиту от удаления в своем балансировщике нагрузки. 2. Вы должны использовать какую-то инфраструктуру как код, которая устанавливает запись CNAME при создании балансировщика нагрузки, чтобы она всегда была синхронизирована.