#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 при создании балансировщика нагрузки, чтобы она всегда была синхронизирована.