sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongos Installation/Opsætning i Elastic Beanstalk

Jeg oprettede en mappe kaldet ".ebextensions" og en fil kaldet "aws.config". Indholdet af denne fil er som følger:-

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

Hvad denne fil gør er:-

  • Opretter en "mongodb.repo"-fil (se http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Kører 4 containerkommandoer (disse køres efter serveren er oprettet, men før WAR er implementeret. Disse er:-

  1. Aktiver root-adgang - dette er påkrævet for "sudo"-kommandoer afaik.
  2. Installer Mongo - installer mongo som en tjeneste ved hjælp af kommandoen yum. Vi har kun brug for "mongos", men dette er endnu ikke blevet adskilt fra mongo-serveren. Dette kan ændre sig i fremtiden.
  3. Skift config for mongod til "off" - dette betyder, at hvis serveren genstarter, køres mongod-programmet ikke, hvis serveren genstarter.
  4. Opret script til at køre mongos. Bemærk $MONGO_CONFIG_IPS i trin 4, du kan sende disse ind ved hjælp af konfigurationssiden i Elastic Beanstalk. Dette vil køre ved en servergenstart.
  5. Indstil tilladelser til at udføre. Disse grunde til, at jeg gjorde 4/5 i modsætning til at sætte ind i en fil:sektion er, at den ikke oprettede IP-adresserne fra miljøvariablen.
  6. Kør script oprettet i trin 4.

Det her virker for mig. Min WAR-fil forbindes simpelthen til localhost, og al trafik går gennem routeren. Jeg snublede over dette i et par dage, da dokumentationen er ret tynd i både Amazon AWS og MongoDB.

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

OPDATERING :- Hvis du har problemer med mit gamle svar, så prøv venligst følgende - det virker til version 3 af Mongo og bliver i øjeblikket brugt i vores produktions MongoDB-klynge.

Denne version er mere avanceret ved, at den bruger intern DNS (via AWS Route53) - bemærk mongo-cfg1.internal ... . Dette er anbefalet bedste praksis og værd at konfigurere din private zone ved hjælp af Route53. Dette betyder, at hvis der er et problem med en af ​​MongoDB Config-forekomsterne, kan du erstatte den ødelagte forekomst og opdatere den private IP-adresse i Route53 - ingen opdateringer påkrævet i hver elastisk bønnestængel, hvilket er rigtig fedt. Men hvis du ikke ønsker at oprette en zone, kan du blot indsætte IP-adresserne i configDB attribut (som mit første eksempel).

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. MongoDB-objekt serialiseret som JSON

  2. Hvordan kan man se, om sidekiq er forbundet til redis-serveren?

  3. Hvordan opretter man mongoose-skema dynamisk?

  4. Online Apache HBase Backups med CopyTable