MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cài đặt / thiết lập Mongos trong Elastic Beanstalk

Tôi đã tạo một thư mục có tên ".ebextensions" và một tệp có tên "aws.config". Nội dung của tệp này như sau:-

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

Những gì tệp này làm là:-

  • Tạo tệp "mongodb.repo" (xem http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/).

Chạy 4 lệnh vùng chứa (các lệnh này được chạy sau khi máy chủ được tạo nhưng trước khi triển khai WAR. Đây là:-

  1. Bật quyền truy cập root - điều này là bắt buộc đối với các lệnh "sudo" afaik.
  2. Cài đặt Mongo - cài đặt mongo dưới dạng dịch vụ bằng lệnh yum. Chúng tôi chỉ cần "mongos" nhưng điều này vẫn chưa được tách khỏi máy chủ mongo. Điều này có thể thay đổi trong tương lai.
  3. Thay đổi cấu hình cho mongod thành "tắt" - điều này có nghĩa là nếu máy chủ khởi động lại, chương trình mongod sẽ không chạy nếu máy chủ khởi động lại.
  4. Tạo tập lệnh để chạy mongos. Lưu ý $ MONGO_CONFIG_IPS trong bước 4, bạn có thể chuyển các giá trị này bằng cách sử dụng trang cấu hình trong Elastic Beanstalk. Quá trình này sẽ chạy khi máy chủ khởi động lại.
  5. Đặt quyền để thực thi. Những lý do này mà tôi đã làm 4/5 trái ngược với việc đưa vào tệp:phần là nó không tạo địa chỉ IP từ biến môi trường.
  6. Chạy tập lệnh đã tạo ở bước 4.

Điều này làm việc cho tôi. Tệp WAR của tôi chỉ đơn giản là kết nối với localhost và tất cả lưu lượng đi qua bộ định tuyến. Tôi đã lúng túng trong vài ngày về vấn đề này vì tài liệu này khá mỏng trong cả Amazon AWS và MongoDB.

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

CẬP NHẬT :- Nếu bạn gặp vấn đề với câu trả lời cũ của tôi, vui lòng thử cách sau - nó hoạt động cho phiên bản 3 của Mongo và hiện đang được sử dụng trong cụm MongoDB sản xuất của chúng tôi.

Phiên bản này nâng cao hơn ở chỗ nó sử dụng DNS nội bộ (thông qua AWS Route53) - lưu ý mongo-cfg1.internal ... . Đây là phương pháp hay nhất được đề xuất và rất đáng để thiết lập vùng riêng tư của bạn bằng Route53. Điều này có nghĩa là nếu có vấn đề với một trong các phiên bản MongoDB Config, bạn có thể thay thế phiên bản bị hỏng và cập nhật địa chỉ IP riêng trong Route53 - không cần cập nhật trong mỗi cây đậu đàn hồi, điều này thực sự tuyệt vời. Tuy nhiên, nếu bạn không muốn tạo vùng, bạn có thể chỉ cần chèn địa chỉ IP vào configDB thuộc tính (như ví dụ đầu tiên của tôi).

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. Cập nhật số lượng lớn các bản ghi trong một bộ sưu tập

  2. Khung tổng hợp MongoDB - Đổi tên trường động

  3. Mongoose - sử dụng Populate trên một mảng ObjectId

  4. Tìm tổng thời gian của một người dùng trong mongoDB

  5. $ In khoản của MongoDB có đảm bảo thứ tự không