2016-04-25 31 views
20

Przede wszystkim, zanim mnie zlekceważysz, już zapoznałem się z How to install mongodb in Elastic Beanstalk? z 2014 r., Która już nie działa. jak https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/#manually-deploy-mongodb-on-ec2Zalecany sposób instalacji mongody na elastycznej fasolce fasolowej

mam założyć nową elastyczną środowiska beanstalk działa na node.js z 1 EC2 mikro instancja „64bit Amazon Linux 2016.03 v2.1.0 działa node.js”

Próbowałem już ssh podłączyć do mojego instancji i zainstalować pakiety MongoDB użyciu yum polecenia:

$ sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools 

i otrzymał tę oddzwanianie:

Loaded plugins: priorities, update-motd, upgrade-helper 
No package mongodb-org-server available. 
No package mongodb-org-shell available. 
No package mongodb-org-tools available. 
Error: Nothing to do 

Kiedy po raz pierwszy ssh byłyby w moim przypadku, dostałem to ostrzeżenie o błędzie:

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH 
WILL BE LOST if the instance is replaced by auto-scaling. For more information 
on customizing your Elastic Beanstalk environment, see our documentation here: 
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html 

Obecnie moje środowisko jest ustawiony jako jednego środowiska instancji, aby zaoszczędzić na kosztach. Jednak w przyszłości dokonam aktualizacji do środowiska automatycznego skalowania.

Z tego powodu, proszę o to, czy należy wprowadzić jakiekolwiek zmiany za pośrednictwem ssh w EC2, czy też powinienem używać tylko interfejsu EB CLI?

Mam zainstalowane lokalnie interfejsy EC2 i EBI, ale nigdy wcześniej nie korzystałem z interfejsu EB CLI. Jeśli powinienem używać EB, czy ktoś ma zalecany sposób instalacji mongodb?

+2

Nie chcesz instalować bazy danych na Elastic Beanstalk. Nie powinieneś nawet wprowadzać żadnych zmian przez ssh do twojego środowiska EB. Czy nie zdajesz sobie sprawy, że EB automatycznie doda i usunie serwery ze swojego środowiska? Dodane przez niego nowe serwery nie będą zawierały żadnych zmian, a stare serwery z uruchomionymi bazami danych zostaną usunięte, a Ty stracisz wszystko. Zapoznaj się z moją odpowiedzią na to pytanie, aby uzyskać prawidłowy sposób korzystania z MongoDB z Elastic Beanstalk: http://stackoverflow.com/questions/33837610/elastic-beanstalk-deployment-with-mongodb –

+0

Tak, zdałem sobie z tego sprawę. Właśnie dlatego wyjaśniłem, że aktualnie korzystam z jednej aplikacji na serwerze, jednak chciałem poznać zalecaną instalację w przypadku aktualizacji do automatycznego skalowania. Dzięki za link. – amyloula

Odpowiedz

31

Jeśli ktoś szuka odpowiedzi, oto rada, którą otrzymałem od działu pomocy technicznej firmy aws.

Cały kod wdrożony do Elastic Beanstalk musi być "bezpaństwowy" I.E. Nigdy nie wprowadzaj zmian bezpośrednio do działającej instancji komponentu bean bean za pomocą SSH lub FTP .... Ponieważ spowoduje to niespójności i/lub utratę danych! - Elastic Beanstalk nie jest przeznaczony dla aplikacji, które nie są bezpaństwowcami. Środowisko zaprojektowano tak, aby skalować w górę iw dół w oczekiwaniu na obciążenie sieci/procesora i tworzyć nowe instancje z podstawowego AMI. Jeśli wystąpienie powoduje problemy lub podstawowy sprzęt, Elastic Beanstalk zakończy te działające instancje i zastąpi je nowymi instancjami. W związku z tym, dlaczego żadna modyfikacja kodu nie musi być stosowana lub wykonywana "bezpośrednio" do istniejącej instancji, ponieważ nowe instancje nie będą świadome tych bezpośrednich zmian. WSZYSTKIE zmiany/kod muszą zostać przesłane do konsoli Elastic Beanstalk lub narzędzi CLI i przeniesione do wszystkich działających instancji. Więcej informacji na Elastic Beanstalk wzornictwa można przeczytać pod następującym linkiem http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html

Sugerowane rozwiązanie: Mając powyższe na uwadze, w przypadku korzystania z MongoDB do przechowywania danych aplikacji Nasza rekomendacja byłoby DE-para środowiska MongoDB z Twoja aplikacja Node.js. I.E Stwórz serwer MongoDB poza Elastic Beanstalk, na przykład uruchamiając MongoDB bezpośrednio na instancji EC2 i łącząc aplikację Elastic Beanstalk Node.js z serwerem MongoDB, korzystając z ustawień połączeń w Twojej aplikacji.

- Tworzenie MongoDB Poniżej kilka przykładowych linków, które mogą być przydatne w scenariuszu tworzenia serwera MongoDB. Deploy MongoDB na EC2, https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/ węzeł MongoDB klient https://docs.mongodb.org/getting-started/node/client/ MongoDB na skróconej instrukcji obsługi AWS chmurze http://docs.aws.amazon.com/quickstart/latest/mongodb/architecture.html

-Adding zmienne środowiskowe do Elastic Beanstalk odwołać swój serwer MongoDB Po utworzeniu MongoDB Server ty może przekazać potrzebne ustawienia połączenia do środowiska Elastic Beanstalk przy użyciu zmiennych środowiskowych. przykład stosując .ebextensions .config, które można dodawać Mongo URL/ports/użytkowników itp ..

option_settings: - nazwa_opcji: MONGO_DB_URL wartość: "Twój MongoDB EC2 wewnętrzny adres IP"

informacji na temat sposobu wykorzystaj właściwości środowiska i przeczytaj je z poziomu aplikacji poniżej. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop i informacji przy użyciu .ebextensions .config można znaleźć pod następującym adresem http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

Alternatywnie można także ustawić zmienną środowiskową za pomocą interfejsu CLI lub poprzez AWS Console eb cli ustawić zmienne środowiskowe mogą być odczytywane za poniżej połączyć. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html Korzystanie z konsoli AWS Aby ustawić właściwości systemu (konsola zarządzania AWS) Otwórz konsolę Elastic Beanstalk. Przejdź do konsoli zarządzania dla swojego środowiska. Wybierz konfigurację. W sekcji Konfiguracja oprogramowania wybierz opcję Edytuj. ramach Własności Środowisko, tworzyć swoje imię/wartości ...

Uzyskiwanie dostępu do ustawień konfiguracji środowiska Wewnątrz środowiska node.js uruchomiony w AWS Elastic Beanstalk, można uzyskać dostęp do zmiennych środowiskowych za pomocą process.env.ENV_VARIABLE podobny do następującego przykład. process.env.MONGO_DB_URL process.env.PARAM2

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html#create_deploy_nodejs_custom_container-envprop

Podsumowanie: Podsumowując polecam następujące kroki w celu zintegrowania MongoDB ze środowiskami Elastic Beanstalk. Krok 1) Utwórz serwer MongoDB poza Elastic Beanstalk Krok 2) Utwórz aplikację Node.js w Elastic Beanstalk, która łączy się z serwerem MongoDB

+4

Niestety, wsparcie dla biznesu Amazon straciło istotny powód, dla którego chciałbyś zainstalować mongo na tym samym serwerze co serwer aplikacji; aby wykorzystać klastry mongoDB, zaleca się, aby serwery aplikacji uruchamiały mongos (nie mnogość, ale dosłownie "mongo s"), aby działać jako proxy. Pierwotne pytanie OP pozostaje aktualne i byłoby interesujące wiedzieć, jaka będzie oficjalnie obsługiwana metoda jego obsługi. – Shaggydev