sql >> Databáze >  >> NoSQL >> MongoDB

Instalace/nastavení Mongos v Elastic Beanstalk

Vytvořil jsem složku s názvem „.ebextensions“ a soubor „aws.config“. Obsah tohoto souboru je následující:-

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

Tento soubor dělá:-

  • Vytvoří soubor „mongodb.repo“ (viz http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Spustí 4 příkazy kontejneru (tyto se spouštějí po vytvoření serveru, ale před nasazením WAR. Jsou to:-

  1. Povolit přístup root – toto je vyžadováno pro příkazy „sudo“ afaik.
  2. Instalovat Mongo – nainstalujte mongo jako službu pomocí příkazu yum. Potřebujeme pouze "mongos", ale to ještě nebylo odděleno od mongo serveru. To se může v budoucnu změnit.
  3. Změňte konfiguraci pro mongod na „off“ – to znamená, že pokud se server restartuje, program mongod se nespustí, pokud se server restartuje.
  4. Vytvořte skript pro spouštění mongo. Všimněte si $MONGO_CONFIG_IPS v kroku 4, můžete je předat pomocí konfigurační stránky v Elastic Beanstalk. Toto se spustí po restartu serveru.
  5. Nastavte oprávnění ke spuštění. Tento důvod, proč jsem udělal 4/5 na rozdíl od vkládání do sekce do souboru:je, že nevytvářela IP adresy z proměnné prostředí.
  6. Spusťte skript vytvořený v kroku 4.

Tohle mi funguje. Můj soubor WAR se jednoduše připojí k localhost a veškerý provoz jde přes router. Narazil jsem na to několik dní, protože dokumentace je v Amazon AWS i MongoDB poměrně útlá.

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

AKTUALIZACE :- Pokud máte problémy s mou starou odpovědí, zkuste následující - funguje pro verzi 3 Mongo a aktuálně se používá v našem produkčním clusteru MongoDB.

Tato verze je pokročilejší v tom, že používá interní DNS (prostřednictvím AWS Route53) – všimněte si mongo-cfg1.internal ... . Toto jsou doporučené osvědčené postupy a stojí za to nastavit svou soukromou zónu pomocí Route53. To znamená, že pokud dojde k problému s jednou z instancí MongoDB Config, můžete poškozenou instanci nahradit a aktualizovat soukromou IP adresu v Route53 – nejsou vyžadovány žádné aktualizace v každém elastickém stonku, což je opravdu skvělé. Pokud však zónu vytvořit nechcete, můžete jednoduše vložit IP adresy do configDB atribut (jako můj první příklad).

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. Jak mohu přihlásit své dotazy v MongoDB C# Driver 2.0?

  2. $unionWith – MongoDB je ekvivalent UNION ALL

  3. Spring Redis - Čtení konfigurace ze souboru application.properties

  4. Přidání/odečtení dnů k ISODate v MongoDB Shell