MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Instalacja/konfiguracja Mongos w Elastic Beanstalk

Utworzyłem folder o nazwie „.ebextensions” i plik o nazwie „aws.config”. Zawartość tego pliku jest następująca:-

files: 
  "/etc/yum.repos.d/mongodb.repo":
    mode: "000644"
    content: |
      [MongoDB]
      name=MongoDB Repository
      baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
      gpgcheck=0
      enabled=1
container_commands:
  01_enable_rootaccess:
    command: echo Defaults:root \!requiretty >> /etc/sudoers
  02_install_mongo:
    command: yum install -y mongo-10gen-server
    ignoreErrors: true
  03_turn_mongod_off:
    command: sudo chkconfig mongod off
  04_create_mongos_startup_script:
    command: sudo sh -c "echo '/usr/bin/mongos -configdb $MONGO_CONFIG_IPS -fork -logpath /var/log/mongo/mongos.log --logappend' > /etc/init.d/mongos.sh"
  05_update_mongos_startup_permissions:
    command: sudo chmod +x /etc/init.d/mongos.sh
  06_start_mongos:
    command: sudo bash /etc/init.d/mongos.sh

To, co robi ten plik, to:-

  • Tworzy plik "mongodb.repo" (zobacz http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Uruchamia 4 polecenia kontenera (są one uruchamiane po utworzeniu serwera, ale przed wdrożeniem WAR. Są to:-

  1. Włącz dostęp administratora — jest to wymagane dla poleceń „sudo” afaik.
  2. Zainstaluj Mongo — zainstaluj mongo jako usługę za pomocą polecenia yum. Potrzebujemy tylko "mongos", ale nie zostało to jeszcze oddzielone od serwera mongo. Może się to zmienić w przyszłości.
  3. Zmień konfigurację dla mongod na "off" - oznacza to, że jeśli serwer zrestartuje się, program mongod nie zostanie uruchomiony, jeśli serwer zostanie zrestartowany.
  4. Utwórz skrypt do uruchamiania mongos. Zwróć uwagę na $MONGO_CONFIG_IPS w kroku 4, możesz je przekazać za pomocą strony konfiguracji w Elastic Beanstalk. To będzie działać po ponownym uruchomieniu serwera.
  5. Ustaw uprawnienia do wykonania. Oto powód, dla którego zrobiłem 4/5, w przeciwieństwie do umieszczania w plikach:sekcja jest taka, że ​​nie utworzyłem adresów IP ze zmiennej środowiskowej.
  6. Uruchom skrypt utworzony w kroku 4.

To działa dla mnie. Mój plik WAR po prostu łączy się z localhost i cały ruch przechodzi przez router. Natknąłem się na to przez kilka dni, ponieważ dokumentacja jest dość uboga zarówno w Amazon AWS, jak i MongoDB.

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

AKTUALIZUJ :- Jeśli masz problemy z moją starą odpowiedzią, wypróbuj następujące rozwiązanie - działa dla wersji 3 Mongo i jest obecnie używane w naszym produkcyjnym klastrze MongoDB.

Ta wersja jest bardziej zaawansowana, ponieważ używa wewnętrznego DNS (przez AWS Route53) - zwróć uwagę na mongo-cfg1.internal ... . Jest to zalecane najlepsze praktyki i warte skonfigurowania strefy prywatnej za pomocą Route53. Oznacza to, że jeśli wystąpi problem z jedną z instancji MongoDB Config, możesz zastąpić uszkodzoną instancję i zaktualizować prywatny adres IP w Route53 - nie są wymagane żadne aktualizacje w każdej elastycznej beanstalk, co jest naprawdę fajne. Jeśli jednak nie chcesz tworzyć strefy, możesz po prostu wstawić adresy IP w configDB atrybut (jak mój pierwszy przykład).

files: 
  "/etc/yum.repos.d/mongodb.repo":
    mode: "000644"
    content: |
      [mongodb-org-3.0]
      name=MongoDB Repository
      baseurl=http://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.0/x86_64/
      gpgcheck=0
      enabled=1
  "/opt/mongos.conf":
    mode: "000755"
    content: |
      net:
        port: 27017
      operationProfiling: {}
      processManagement:
        fork: "true"
      sharding:
        configDB: mongo-cfg1.internal.company.com:27019,mongo-cfg2.internal.company.com:27019,mongo-cfg3.internal.company.com:27019
      systemLog:
        destination: file
        path: /var/log/mongos.log
container_commands:
  01_install_mongo:
    command: yum install -y mongodb-org-mongos-3.0.2
    ignoreErrors: true
  02_start_mongos:
    command: "/usr/bin/mongos -f /opt/mongos.conf > /dev/null 2>&1 &"


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pobierz najnowszą płytę z kolekcji mongodb

  2. Aktualizacja MongoDBOne()

  3. Jak wykonać zapytanie tablicowe identyfikatorów w Mongoose?

  4. Obserwujący - projekt bazy danych mongodb

  5. Zapytać IDE dla MongoDB?