MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Instal/Pengaturan Mongo di Pohon Kacang Elastis

Saya membuat folder bernama ".ebextensions" dan file bernama "aws.config". Isi dari file ini adalah sebagai berikut:-

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

Apa yang dilakukan file ini adalah:-

  • Membuat file "mongodb.repo" (lihat http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Menjalankan 4 perintah container (ini dijalankan setelah server dibuat tetapi sebelum WAR disebarkan. Ini adalah:-

  1. Aktifkan akses root - ini diperlukan untuk perintah "sudo" afaik.
  2. Instal Mongo - instal mongo sebagai layanan menggunakan perintah yum. Kami hanya membutuhkan "mongos" tetapi ini belum dipisahkan dari server mongo. Ini dapat berubah di masa mendatang.
  3. Ubah konfigurasi mongod menjadi "off" - ini berarti jika server restart, program mongod tidak berjalan jika server restart.
  4. Buat skrip untuk menjalankan mongos. Perhatikan $MONGO_CONFIG_IPS pada langkah 4, Anda dapat meneruskannya menggunakan halaman konfigurasi di Elastic Beanstalk. Ini akan berjalan pada server yang di-boot ulang.
  5. Tetapkan izin untuk dieksekusi. Alasan saya melakukan 4/5 daripada memasukkan ke dalam file:bagian adalah karena itu tidak membuat alamat IP dari variabel lingkungan.
  6. Jalankan skrip yang dibuat pada langkah 4.

Ini bekerja untuk saya. File WAR saya hanya terhubung ke localhost dan semua lalu lintas melewati router. Saya tersandung selama beberapa hari tentang ini karena dokumentasinya cukup tipis di Amazon AWS dan MongoDB.

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

PERBARUI :- Jika Anda mengalami masalah dengan jawaban lama saya, silakan coba yang berikut ini - ini berfungsi untuk Mongo versi 3 dan saat ini sedang digunakan di klaster MongoDB produksi kami.

Versi ini lebih maju karena menggunakan DNS internal (via AWS Route53) - perhatikan mongo-cfg1.internal ... . Ini adalah praktik terbaik yang direkomendasikan dan layak untuk menyiapkan zona pribadi Anda menggunakan Route53. Ini berarti jika ada masalah dengan salah satu instance MongoDB Config, Anda dapat mengganti instance yang rusak dan memperbarui alamat IP pribadi di Route53 - tidak diperlukan pembaruan di setiap pohon kacang elastis yang sangat keren. Namun, jika Anda tidak ingin membuat zona, Anda cukup memasukkan alamat IP di configDB atribut (seperti contoh pertama saya).

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. Kecepatan {agregasi $match} MongoDB vs {find}

  2. Ekspor hasil kerangka kerja agregasi mongodb ke koleksi baru

  3. Paging yang efisien di MongoDB menggunakan mgo

  4. $addFields ketika $match tidak ditemukan

  5. kembalikan dokumen dengan subdokumen terbaru hanya dalam agregat mongodb