MongoDB Master, Slave, Arbiter 스 크 립 트 자동 설치

최근 에 MongoDB 의 Master, Slave, Arbiter 구 조 를 사용 해 야 하 는 새로운 프로젝트 가 있 습 니 다. 홈 페이지 에 가서 문 서 를 뒤 져 서 허름 한 스 크 립 트 를 썼 습 니 다.스 크 립 트 는 제 github 에서 찾 을 수 있 습 니 다.https://github.com/sangrealest.
설치 하기 전에 dns 를 미리 설정 하거나 hosts 파일 이 설정 되 어 있 는 지 확인 하 십시오.방화벽 은 상응하는 규칙 을 세우 거나 방화벽 을 닫는다.mongodb 를 제어 하 는 스 크 립 트 는 나의 github 에서 찾 을 수 있 습 니 다. 여 기 는 붙 이지 않 습 니 다.
먼저 mongodb 의 인증서 파일 을 만 든 다음 Master, Slave, Arbiter 디 렉 터 리 에 복사 하여 설정 파일 에 추가 합 니 다.
openss rand -base64 741 >/etc/mongodb.key
chmod 600 /etc/mongodb.key
#!/bin/bash

#Mongo Server Info
SlaveIP='192.168.0.29'
SlaveName='Database-Slave'
SlaveMongoPort='27017'
ArbiterIP='192.168.0.30'
ArbiterName='Database-Arbiter'
ArbiterMongoPort='27017'
MasterIP='192.168.0.28'
MasterName='Database-Master'
MasterMongoPort='27017'
#Mongo s config
MongosPort='27015'
#Mongo Config Server Conffig
MongoConfigIP='127.0.0.1'
MongoConfigName='Database-Config'
MongoConfigDBPath='/var/lib/mongodc'
MongoConfiglogpath='/var/log/mongodc'
MongoConfigPort='27014'
MongoConfigkeyFile='/etc/mongodb.key'


function createConfig(){
#    read -p "please inpute role name(master/slave/arbiter)" role
    role=$1
    mongoConfig="./mongod-$role"
    if [ ! -f "$mongoConfig" ]
    then
        echo "dbpath=/var/lib/mongodb-$role" >>$mongoConfig
        echo "logpath=/var/log/mongodb-$role/mongodb.log" >>$mongoConfig
        echo "logappend=true" >>$mongoConfig
        echo "keyFile=$MongoKeyFile" >>$mongoConfig
        if [ "$role" == "master" ]
        then
            echo "port = $MasterMongoPort" >>$mongoConfig
        elif [ "$role" == "slave" ]
        then
            echo "port = $SlaveMongoPort" >>$mongoConfig
        elif [ "$role" == "arbiter" ]
        then
            echo "port = $ArbiterMongoPort" >>$mongoConfig
        fi
        echo "nohttpinterface=true" >>$mongoConfig
        echo "replSet = rs0" >>$mongoConfig
        chmod 644 /etc/$mongoConfig

    fi

}

function installMongoService(){

    echo "installing mongoserver"
    if [ ! -f "/usr/bin/mongo" ]
    then
        tar zxvf ./mongodb-linux-x86_64-2.4.9.tgz
        cd ./mongodb-linux-x86_64-2.4.9/bin/
        cp * /usr/bin
        cd ../.
    else
        echo "mongo server file already exist"
    fi

    cp mongod-$1.sh /etc/init.d/
    chmod 755 /etc/init.d/mongod-$1.sh
    /etc/init.d/mongod-$1.sh start
    i=1
    until ((i=="0"))
    do
        /bin/cat /var/log/mongodb-$1/mongodb.log | grep "waiting for connection"
        i=$?
        sleep 3
        echo "waiting for mongodb ready"
    done
    echo "mongodb is ready"
    sleep 4
}

function setupReplSet(){

    echo "setup mongodb replicationset"
    case $1 in
        master|Master|MASTER)
            member=("$SlaveName:$SlaveMongoPort")
            echo "rs.initiate()" | /usr/bin/mongo $MasterName:$MasterMongoPort
            sleep 3
            for count in $member
            do
                echo "rs.add(\"$count\")" | /usr/bin/mongo $MasterName:$MasterMongoPort
                sleep 3
            done
            echo "rs.addArb(\"$ArbiterName:$ArbiterMongoPort\")"|/usr/bin/mongo $MasterName:$MasterMongoPort
            echo "rs.status()"|/usr/bin/mongo $MasterName:$MasterMongoPort
        ;;
        slave|Slave|SLAVE)
        exit 0
        ;;
        arbiter|Arbiter|ARBITER)
        exit 0
        ;;
        *)
        exit 0
        ;;
    esac
}


case $1 in
    master|Master|MASTER)
        createConfig "master"
        installMongoService "master"
        setupReplSet "master"
    ;;

    slave|Slave|SLAVE)
        createConfig "slave"
        installMongoService "slave"
    ;;

    arbiter|Arbiter|ARBITER)
        createConfig "arbiter"
        installMongoService "arbiter"
    ;;

    mongos|Mongos|MONGOS)
        InstallMongoServerConfig
            getMongoServerConfig
    ;;


    all|All|ALL)
        #Install Slave
        createConfig "slave"
        installMongoService "slave"
        setupReplSet "slave"
        #install Arbiter
        createConfig "arbiter"
        installMongoService "arbiter"
        setupReplSet "arbiter"
        #Install Master
        createConfig "master"
        installMongoService "master"
        setupReplSet "master"

    ;;

    uninstall|Uninstall|UNINSTALL)
        #echo "this will remove all mongo files!!!"

        if [ -f "/usr/bin/pkill" ]
        then
             pkill -9 mongod
        else
            kill -9 `ps aux | grep mongo | grep -v grep | awk -F" " '{print $2}'`
            rm -rf /etc/mongo*
            rm -rf /etc/init.d/mongo*
            rm -rf /var/lib/mongo*
            rm -rf /var/log/mongo*
            rm -rf /usr/bin/mongo*
            rm -rf /var/run/mongo*
        fi
    ;;

    *)
        echo "Please inpute $0 Master, slave or ARBITER"
        exit 0
    ;;

    esac

좋은 웹페이지 즐겨찾기