복붙노트

[MONGODB] 탄성 콩 줄기에서 Mongos은 설치 / 설정

MONGODB

탄성 콩 줄기에서 Mongos은 설치 / 설정

샤딩의 길을 찾고, 우리는 여러 mongos 인스턴스를 가질 수 있도록하고 싶습니다. 권장 사항은 각 응용 프로그램 서버에 mongos를 넣어 것 같다. 난 그냥 자신의 서버에 그 부하를 분산 거라고 생각하지만,이 문서 http://craiggwilson.com/2013/10/21/load-balanced-mongos/이에 문제가 있음을 나타냅니다.

나는 응용 프로그램 서버에있는에 돌아 왔어요 그래서. 그러나, 우리는 탄성 콩 줄기를 사용하고 있습니다. 패키지가 설치하는 나는이에 몽고를 설치할 수 있습니다. 그러나,이 Mongos에 문제를 만듭니다. 나는 mongos 시작이 mongodb.conf 파일을 사용 가야 방법을 찾을 수가있다. 복제 된 서버, 또는 설정 서버의 경우 conf의 파일에 추가 항목은 내가 원하는 길을 시작하는 원인이 될 수 있습니다. 하지만 Mongos으로 그렇게 할 수 없습니다. 나는 몽고를 설치하는 경우, 실제로 MongoDB를로 시작됩니다. 나는 그 행동을 죽이고 내 설정 서버에서 지적 Mongos로 시작하는 얻을 필요가있다.

모든 I는 생각할 수 있습니다 :

MongoDB를 시작 스크립트를 죽이고, 그 자동 시작 '정상'모드에서 데이터베이스. 는 config 서버에서 지적 mongos를 시작하는 새 신출내기 스크립트를 작성합니다.

이것에 대한 어떤 생각? 아니면 그냥 둔한거야 경우 사람의 노하우를 않습니다, 나는 mongos로 서버를 시작합니다 콩나무에 제자리에 새로운 mongodb.conf 파일을 복사 할 수 있습니까?

우리는 박쥐이 바로 일을 계획하지 않습니다,하지만 우리는 내가 장소에 조각이없는 것처럼, 어느 정도 준비해야, 나는 완전히 사실 후 내 콩나무 서버를 다시 작성해야합니다. 모든 소프트웨어가 설치된 차라리, 갈 준비가 배포 것입니다.

해결법

  1. ==============================

    1.나는 ".ebextensions"라는 폴더와 "aws.config"라는 파일을 만들었습니다. 다음과 같이이 파일의 내용은 다음과 같습니다 -

    나는 ".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
    

    무엇이 파일이하는 것은 -

    서버가 생성 된 후 4 개 컨테이너 명령 (이 실행되는 실행하지만 WAR을 배포하기 전에이는 다음과 같습니다. -

    이것은 나를 위해 작동합니다. 내 WAR 파일은 단순히 로컬 호스트에 연결하여 모든 트래픽은 라우터를 통해 이동합니다. 문서 아마존 AWS와 MongoDB를 모두 상당히 슬림 나는이에 며칠 동안 약 비틀 거렸다.

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

    UPDATE : - 당신은 나의 오래된 대답에 문제가있는 경우, 다음을 시도하십시오 - 그것은 몽고의 버전 3 작품과 현재 우리의 생산 MongoDB를 클러스터에 사용되고있다.

    이 버전은 (AWS Route53를 통해) 내부 DNS를 사용하는 더 진보 - Route53를 사용하여 개인 영역까지 몽고 - cfg1.internal ....이 권장 모범 사례와 가치 설정을 확인합니다. 이 방법 당신이 깨진 인스턴스를 교체하고 Route53의 사설 IP 주소를 업데이트 할 수 MongoDB를 구성 인스턴스 중 하나에 문제가 있다면 - 정말 멋진 때마다 탄성 콩나무에 필요없이 업데이트됩니다. 당신이 영역을 생성하고 싶지 않은 경우, 당신은 단순히 (내 첫 번째 예제와 같은) configDB 속성에 IP 주소를 삽입 할 수 있습니다.

    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 &"
    
  2. ==============================

    2.나는 일에 bobmarksie의 솔루션 @ 얻을 수 있지만, 덕분에이 .ebextensions / aws.config 파일에 대한 anowak 및 avinci 여기에 없습니다 :

    나는 일에 bobmarksie의 솔루션 @ 얻을 수 있지만, 덕분에이 .ebextensions / aws.config 파일에 대한 anowak 및 avinci 여기에 없습니다 :

    files:
      "/home/ec2-user/install_mongo.sh" :
        mode: "0007555"
        owner: root
        group: root
        content: |
          #!/bin/bash
          echo "[MongoDB]
          name=MongoDB Repository
          baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
          gpgcheck=0
          enabled=1" | tee -a /etc/yum.repos.d/mongodb.repo
          yum -y update
          yum -y install mongodb-org-server mongodb-org-shell mongodb-org-tools
    
    commands:
      01install_mongo:
        command: ./install_mongo.sh
        cwd: /home/ec2-user
        test: '[ ! -f /usr/bin/mongo ] && echo "MongoDB not installed"'
    
    services:
      sysvinit:
        mongod:
          enabled: true
          ensureRunning: true
          commands: ['01install_mongo']
    
  3. from https://stackoverflow.com/questions/19961046/mongos-install-setup-in-elastic-beanstalk by cc-by-sa and MIT license