2013-04-18 8 views
1

У меня есть приложение, работающее на эластичном бобовом стебле aws. Приложению нужен файл конфигурации, который я поместил для тестирования экземпляра ec2 вручную.Конфигурационные файлы AWAS Elastic Beanstalk

Проблема заключается в том, что, когда автоскаллер решает увеличить до большего количества экземпляров, приложение не имеет конфигурационного файла в новых экземплярах.

Я читал о создании шаблонов для экземпляров. Я могу поместить свой файл конфигурации в экземпляры, а затем он будет реплицирован в новом экземпляре. Это имеет большой недостаток: «Если я хочу изменить конфигурацию во время выполнения, я должен сделать это во всех экземплярах.

Есть ли способ, как я могу это решить?

ответ

2

Ну, я вижу два варианта: 1. При изменении конфигурационного файла вам необходимо выполнить обновление среды на EB. В этом случае все узлы будут обновляться с новой версией файла конфигурации. 2. Вместо файла укажите свои настройки конфигурации на некоторый бит, например simpledb или dynamodb. С моей точки зрения это решение более предпочтительно для вашего случая, если вы хотите изменить настройки во время выполнения.

+0

Спасибо, это было решение, которое я искал. Единственным недостатком была скорость, зависящая от того, сколько запросов серверу пришлось обрабатывать. Я исправил это с помощью cacheserver и обновил cacheserver каждые 10 минут. – andre

0

Я согласен с Vadim911, DB будет более простым решением.

Но вы можете использовать что-то похожее на это, чтобы сделать это, когда ваше приложение настраивается в среде.

WEB-INF/.ebextensions/commands.config

commands: 
    replace-file: 
    command: cp .ebextensions/file.xml /folder/file.xml 

Источник: infoq

0

Если мы будем глубже :) гораздо лучше, вместо того, чтобы "команды" использовать "файлы":

files: 
    /folder/file.xml: 
     mode: 000XXX 
     owner: root 
     group: users 
     content: | 
      <xml>I'm XML</xml> 
0

Я предлагаю вам поместить ваш файл конфигурации в безопасное место, например, в ведро s3. Сохранение конфиденциальной информации от вашего хранилища.

попробовать что-то вроде этого:

# .ebexetensions/safe-config-install.config 

files: 
    "/tmp/cron-fetch-config.sh": 
    mode: "000755" 
    owner: root 
    group: root 
    content: | 
     #!/usr/bin/env bash 
     for f in /etc/profile.d/*.sh; do source $f; done; 

     python -c "import boto;boto.connect_s3().get_bucket('my-private-bucket').get_key('secretfolder/secretfile.xml').get_contents_to_filename('/var/app/current/path/to/config.xml'); 

container_commands: 
    install-config: 
    command: python -c "import boto;boto.connect_s3().get_bucket('my-private-bucket').get_key('secretfolder/secretfile.xml').get_contents_to_filename('/var/app/ondeck/path/to/config.xml'); 

commands: 
    setup-cron-for-config: 
    command: echo -e "* * * * * root /tmp/cron-fetch-config.sh\n" > /etc/cron.d/my_cron 

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

  • Нет связанных вопросов^_^