MongoDB Master, Slave, Arbiter 스 크 립 트 자동 설치
설치 하기 전에 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
레코드를 업데이트하고 업데이트 전에 동일한 레코드를 삭제하는 방법(nest js & mongoDB)ID로 레코드를 업데이트하고 싶지만 업데이트 전에 동일한 레코드에 이전에 저장된 데이터를 삭제하고 싶습니다. 프로세스는 무엇입니까? 컨트롤러.ts 서비스.ts 나는 이것을 해결하기 위해 이런 식으로 노력하고 있습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.