У меня есть следующая конфигурация в Alibaba ECS:

Public Connector и три тестовых узла

Connector имеет сетевые подключения к общедоступному Интернету и по умолчанию VSwitch по умолчанию VPC. Connector создано с помощью веб-интерфейса ECS. Компьютеры testnode[0-2] были созданы в скрипте с помощью команды Alibaba cli: aliyun.

Когда экземпляры начинают работать, коннектор не может проверить связь ни с одним из них. Если я устанавливаю пароль на любом из тестовых узлов, а затем перезапускаю тестовый узел, ping начинает работать. Сценарий использует снимок Connector в качестве образа для тестовых узлов. «Коннектор» имеет случайно сгенерированный, длинный и забытый пароль root. Доступ root осуществляется через ssh с парой ключей, защищенной паролем. Он также имеет то же самое для пользователя без полномочий root для тестового кода.

Я пробовал создавать тестовые узлы со следующими параметрами CreateInstance:

  1. Нет параметров --Password и --InheritPassword (первоначальный замысел: зачем устанавливать пароль? У меня есть доступ, который мне нужен, из образа Connector)

  2. Вариант --InheritPassword (мне нужен пароль root для работы частных сетевых интерфейсов, пароль root в образе Connector подходит)

  3. Опция --Password (мне нужно явно установить пароль root на тестовых узлах)

Результат все тот же, пока я не использую веб-интерфейс ECS для установки пароля и перезапуска тестового узла, Console не может пропинговать тестовые узлы.

Что я знаю:

  1. Это не проблема с группой безопасности по умолчанию, VPC или VSwitch, поскольку я не трогаю настройки этих объектов, чтобы пинг работал.

  2. Это не проблема с образом экземпляра, потому что, как только работает ping, работает и ssh для тестовых узлов.

Что я делаю не так, или что я упускаю? Вся цель состоит в том, чтобы развернуть экземпляры без необходимости вводить данные в веб-интерфейсе ECS. Я понял, что нужно для того, чтобы запустить трафик частной сети, потому что я хотел отладить ситуацию на тестовых узлах, и для этого мне нужно было установить пароль root и получить доступ из веб-консоли ECS, что опять же побеждает цель скриптинга.

Aliyun команда для создания тестовых узлов:

aliyun ecs CreateInstance --ImageId m-2vchb2oxldfuloh51wp9 --RegionId=cn-chengdu --InstanceType=ecs.c6.xlarge --SpotStrategy SpotWithPriceLimit --SpotPriceLimit 0.25 --ZoneId cn-chengdu-a --InternetChargeType PayByTraffic --InternetMaxBandwidthOut 99 --InstanceName TEST_NODE-0 --HostName testnode0 --Password 'notgoingtotellyou'

Операционная система для всех экземпляров — Ubuntu 18.0.4.

Команда Aliyun версия 3.0.30.

2
Scaled Vision 5 Дек 2019 в 09:38
Думаю, вам лучше отправить заявку команде Alibaba.
 – 
Anduin
5 Дек 2019 в 09:57
Основываясь на отличном совете @Anduin, я открыл тикет. Поделюсь в ответ.
 – 
Scaled Vision
13 Дек 2019 в 17:58

1 ответ

Я получил два ответа. Один от коллеги. Один от Алибабы.

Ответ коллеги: Конфигурация не удалась, потому что образ Unbuntu 18.0.4, который я создал для закрытых тестовых компьютеров, использовал статический адрес для внутреннего сетевого интерфейса. Я изменил внутренний сетевой интерфейс (eth0) на использование dhcp, и все заработало. См. примеры конфигурации netplan, чтобы узнать, как изменить назначенный IP-адрес.

Ответ Alibaba: Попробуйте использовать aliyun ecs RunInstances вместо трех отдельных вызовов aliyun ecs CreateInstance и aliyun ecs StartInstance. Я не пробовал это решение, так как оно потребовало бы переписывания моих сценариев. Alibaba могла бы сделать больше, чтобы мотивировать меня, объяснив, почему RunInstances даст другой результат, чем комбинация CreateInstance и StartInstance.

0
Scaled Vision 13 Дек 2019 в 18:36