2016-03-22 3 views
2

Из краткого поиска - не существует способа установить динамические имена хостов для членов группы автомасштабирования. Функциональность существует в OpenStack Heat с использованием index - но я не могу найти что-либо в этом случае с помощью групп автомасштабирования AWS.Autoscaling group hostnames & cloud-init

Например, с помощью OpenStack Heat - узлы автоматически получают имя хоста на основе количества узлов в AutoScaling группы:

instance_group: 
    type: OS::Heat::ResourceGroup 
    properties: 
     count: { get_param: instance_number } 
     resource_def: 
     type: OS::Nova::Server 
     properties: 
      name: instance%index% 

бы дать мне следующее, если бы я иметь 3 экземпляры в автомасштабирования группа

instance0 
instance1 
instance2 

есть ли подобный метод можно использовать с AutoScaling групп АМС запуск конфигурации и или облако инициализации?

ответ

0

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

Каждый экземпляр EC2, который я запускаю, есть ли N серверов такого типа в группе автомасштабирования или это отдельный экземпляр, я создаю для него профиль экземпляра. Это хорошая идея в любом случае в моем опыте, даже если вам не нужен экземпляр для доступа к любым службам aws, это не мешает иметь роль/профиль с пустыми разрешениями, это делает его гораздо проще предоставить ему доступ к ведро s3 или что-то еще в будущем, если вам нужно.

Затем при запуске сервера в скрипте user_data (или в вашем инструменте управления конфигурацией, если вы используете что-то вроде марионетки или аналога), я запрашиваю имя профиля экземпляра из metadata service и добавляю что-то уникальное для каждого сервера, например, для частного ip и установите это как имя хоста.

В итоге вы получите имена хостов, такие как webserver-10-0-12-58, который является как читаемым человеком, так и уникальным для каждого сервера.

(Недостатком этого и увеличивающихся целых чисел является то, что они не предсказуемы и не могут использоваться для настройки уникального поведения для одного сервера. Например, если у вас есть веб-сервер - {0-8} и необходимо для запуска некоторого процесса на ровно одном сервере, вы можете использовать логику, например, если hostname == webserver-0, а затем run_thing.)

Смежные вопросы