sql >> Database >  >> NoSQL >> MongoDB

Mongos installeren/instellen in elastische bonenstaak

Ik heb een map gemaakt met de naam ".ebextensions" en een bestand met de naam "aws.config". De inhoud van dit bestand is als volgt:-

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

Wat dit bestand doet is:-

  • Maakt een "mongodb.repo"-bestand aan (zie http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Voert 4 containeropdrachten uit (deze worden uitgevoerd nadat de server is gemaakt maar voordat de WAR is geïmplementeerd. Dit zijn:-

  1. Schakel root-toegang in - dit is vereist voor "sudo"-commando's afaik.
  2. Mongo installeren - installeer mongo als een service met de opdracht yum. We hebben alleen "mongo's" nodig, maar deze is nog niet gescheiden van de mongo-server. Dit kan in de toekomst veranderen.
  3. Verander de configuratie voor mongod in "uit" - dit betekent dat als de server opnieuw opstart, het mongod-programma niet wordt uitgevoerd als de server opnieuw opstart.
  4. Maak een script om mongo's uit te voeren. Let op de $MONGO_CONFIG_IPS in stap 4, u kunt deze doorgeven via de configuratiepagina in Elastic Beanstalk. Dit wordt uitgevoerd wanneer de server opnieuw wordt opgestart.
  5. Stel machtigingen in om uit te voeren. Deze reden deed ik 4/5 in plaats van in een bestand te stoppen:sectie is dat het de IP-adressen niet van de omgevingsvariabele heeft gemaakt.
  6. Voer het script uit dat in stap 4 is gemaakt.

Dit werkt voor mij. Mijn WAR-bestand maakt eenvoudig verbinding met localhost en al het verkeer gaat via de router. Ik struikelde hier een paar dagen over omdat de documentatie vrij dun is in zowel Amazon AWS als MongoDB.

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

UPDATE :- Als je problemen hebt met mijn oude antwoord, probeer dan het volgende - het werkt voor versie 3 van Mongo en wordt momenteel gebruikt in onze productie MongoDB-cluster.

Deze versie is geavanceerder omdat het interne DNS gebruikt (via AWS Route53) - let op de mongo-cfg1.internal ... . Dit zijn aanbevolen best practices en het is zeker de moeite waard om uw privézone in te stellen met behulp van Route53. Dit betekent dat als er een probleem is met een van de MongoDB Config-instanties, u de kapotte instantie kunt vervangen en het privé-IP-adres in Route53 kunt bijwerken - geen updates vereist in elke elastische bonenstaak, wat echt gaaf is. Als u echter geen zone wilt maken, kunt u eenvoudig de IP-adressen invoegen in configDB attribuut (zoals mijn eerste voorbeeld).

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. Een sleutel/waarde verwijderen uit bestaande MongoDB-invoer

  2. MongoDB verwijderen()

  3. Mongoose kan geen verbinding maken zonder internet

  4. Microsoft.Extensions.Caching.Redis selecteer een andere database dan db0