sql >> データベース >  >> NoSQL >> MongoDB

ElasticBeanstalkでのMongosのインストール/セットアップ

    「.ebextensions」というフォルダーと「aws.config」というファイルを作成しました。このファイルの内容は次のとおりです。-

    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
    

    このファイルの機能は次のとおりです。-

    • 「mongodb.repo」ファイルを作成します(http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-c​​entos-or-fedora-linux/を参照)。

    4つのコンテナコマンドを実行します(これらはサーバーが作成された後、WARがデプロイされる前に実行されます。これらは次のとおりです。-

    1. ルートアクセスを有効にする-これは「sudo」コマンドafaikに必要です。
    2. Mongoのインストール-yumコマンドを使用してmongoをサービスとしてインストールします。必要なのは「mongos」だけですが、これはまだmongoサーバーから分離されていません。これは将来変更される可能性があります。
    3. mongodの構成を「オフ」に変更します。これは、サーバーが再起動した場合、サーバーが再起動した場合にmongodプログラムが実行されないことを意味します。
    4. mongosを実行するためのスクリプトを作成します。手順4の$MONGO_CONFIG_IPSに注意してください。これらは、ElasticBeanstalkの構成ページを使用して渡すことができます。これはサーバーの再起動時に実行されます。
    5. 実行する権限を設定します。ファイルに入れるのではなく、4/5を実行したこれらの理由:セクションは、環境変数からIPアドレスを作成しなかったためです。
    6. 手順4で作成したスクリプトを実行します。

    これは私のために働きます。私のWARファイルはローカルホストに接続するだけで、すべてのトラフィックはルーターを通過します。 Amazon AWSとMongoDBの両方でドキュメントがかなりスリムであるため、私はこれについて数日間つまずきました。

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

    更新 :-私の古い答えに問題がある場合は、次のことを試してください-これはバージョン3のMongoで動作し、現在、本番のMongoDBクラスターで使用されています。

    このバージョンは、(AWS Route53経由で)内部DNSを使用するという点でより高度です- mongo-cfg1.internal ...に注意してください 。これは推奨されるベストプラクティスであり、Route53を使用してプライベートゾーンを設定する価値があります。つまり、MongoDB Configインスタンスの1つに問題がある場合は、壊れたインスタンスを置き換えて、Route53のプライベートIPアドレスを更新できます。各エラスティックビーンズトークで更新は必要ありません。これは本当にすばらしいことです。ただし、ゾーンを作成したくない場合は、IPアドレスをconfigDBに挿入するだけです。 属性(私の最初の例のように)。

    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. RuntimeWarning:スーパーユーザー権限でワーカーを実行しています:これは絶対にお勧めしません

    2. マングースの個体数とオブジェクトのネスト

    3. MongoDB:大文字と小文字を区別しないクエリを作成することは可能ですか?

    4. GoでRedis公開メッセージを受信する方法