为了节省部署时间,编写简单的脚本一键式部署单机mongodb副本集:
vim Auto-deploy-mongodb-replica-set.sh
#!/bin/bash
#一键式部署mongodb replica set 集群
#单机版的副本集集群!
#准备环境
yum -y install wget >/dev/null
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz
tar -xvf mongodb-linux-x86_64-4.0.6.tgz -C /usr/local/ >/dev/null
mv /usr/local/mongodb-linux-x86_64-4.0.6/ /usr/local/mongodb
#为了方便管理,事后可以加入环境变量
echo export PATH=$PATH:/usr/local/mongodb/bin >> /etc/profile.d/mongodb.sh #完成后执行以下刷新即可source /etc/profile
#创建文件目录:
mkdir -p /opt/data/mongodb/{master,slave,arbiter}
##配置 “master”
#创建master数据存放目录
mkdir /opt/data/mongodb/master/{db,log,pid}
#创建master的配置文件
echo '
#master.conf
#数据目录
dbpath=/opt/data/mongodb/master/db
#日志目录
logpath=/opt/data/mongodb/master/log/master.log
#pid文件
pidfilepath=/opt/data/mongodb/master/pid/master.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定的端口
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-master.conf
##配置 “slave”
#创建 slave的存放目录
mkdir /opt/data/mongodb/slave/{db,log,pid}
#创建slave的配置文件
echo '
#slave.conf
#数据目录
dbpath=/opt/data/mongodb/slave/db
#日志目录
logpath=/opt/data/mongodb/slave/log/slave.log
#pid文件
pidfilepath=/opt/data/mongodb/slave/pid/slave.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27018
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-slave.conf
##配置裁决arbiter
#创建 arbiter的存放目录
mkdir /opt/data/mongodb/arbiter/{db,log,pid}
#创建arbiter的配置文件
echo '
#arbiter.conf
#数据目录
dbpath=/opt/data/mongodb/arbiter/db
#日志目录
logpath=/opt/data/mongodb/arbiter/log/arbiter.log
#pid文件
pidfilepath=/opt/data/mongodb/arbiter/pid/arbiter.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27019
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-arbiter.conf
#启动服务
echo "启动master,slave,arbiter,服务"
stty -echo
/usr/local/mongodb/bin/mongod -f /etc/mongodb-master.conf >/dev/null
/usr/local/mongodb/bin/mongod -f /etc/mongodb-slave.conf >/dev/null
/usr/local/mongodb/bin/mongod -f /etc/mongodb-arbiter.conf >/dev/null
sleep 2
#开始配置replica set 副本集
echo "现在配置replica set 副本集"
Mongodb='/usr/local/mongodb/bin/mongo'
$Mongodb <<EOF
use admin
cfg={
"_id" : "testdb",
"members" : [
{
"_id" : 0,
"host" : "127.0.0.1:27017",
"priority" : 2
},
{
"_id" : 1,
"host" : "127.0.0.1:27018",
"priority" : 1
},
{
"_id" : 2,
"host" : "127.0.0.1:27019",
"arbiterOnly" : true
}
]
}
rs.initiate(cfg)
rs.status()
exit;
EOF
sleep 2
echo ”到此单机mongodb-replica set 部署完毕“
多机版一键式部署mongodb replica set 副本集
为了节省多机部署mongodb副本集的时间,编辑了易懂的shell脚本:
vim Mongodb-replica-set-for-multi-machine.sh
#!/bin/bash
#一键式部署mongodb replica set 集群
#多机版的副本集集群!
#多机部署,可以就是分开部署master和slave
#arbiter裁决服务器是不会存储数据的可以随便部署在任意一台服务器中
#准备环境
yum -y install wget >/dev/null
#cd /opt/ && wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz
#下载非交互式远程连接工具
yum -y install sshpass >/dev/null
sshpass -p "123456" scp /opt/mongodb-linux-x86_64-4.0.6.tgz root@192.168.1.12:/opt
for i in 11 12
do
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cd /opt && tar -xvf mongodb-linux-x86_64-4.0.6.tgz -C /usr/local/ >/dev/null"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mv /usr/local/mongodb-linux-x86_64-4.0.6/ /usr/local/mongodb"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "echo export PATH=$PATH:/usr/local/mongodb/bin >> /etc/profile.d/mongodb.sh"
#完成后执行一下刷新即可source /etc/profile
done
#创建master数据存放目录
mkdir -p /opt/data/mongodb/master/{db,log,pid}
#创建 slave的存放目录
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 " mkdir -p /opt/data/mongodb/slave/{db,log,pid}"
#创建 arbiter的存放目录
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "mkdir -p /opt/data/mongodb/arbiter/{db,log,pid}"
# 11 服务器配置master服务
#创建master的配置文件
echo '
#master.conf
#数据目录
dbpath=/opt/data/mongodb/master/db
#日志目录
logpath=/opt/data/mongodb/master/log/master.log
#pid文件
pidfilepath=/opt/data/mongodb/master/pid/master.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定的端口
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-master.conf
##配置 “slave”
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "echo '
#slave.conf
#数据目录
dbpath=/opt/data/mongodb/slave/db
#日志目录
logpath=/opt/data/mongodb/slave/log/slave.log
#pid文件
pidfilepath=/opt/data/mongodb/slave/pid/slave.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-slave.conf"
##配置裁决arbiter
#创建arbiter的配置文件
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "echo '
#arbiter.conf
#数据目录
dbpath=/opt/data/mongodb/arbiter/db
#日志目录
logpath=/opt/data/mongodb/arbiter/log/arbiter.log
#pid文件
pidfilepath=/opt/data/mongodb/arbiter/pid/arbiter.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27018
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-arbiter.conf"
#启动服务
echo "启动master,slave,arbiter,服务"
/usr/local/mongodb/bin/mongod -f /etc/mongodb-master.conf >/dev/null
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "/usr/local/mongodb/bin/mongod -f /etc/mongodb-slave.conf >/dev/null"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "/usr/local/mongodb/bin/mongod -f /etc/mongodb-arbiter.conf >/dev/null"
sleep 2
#开始配置replica set 副本集
echo "现在配置replica set 副本集"
Mongodb='/usr/local/mongodb/bin/mongo'
$Mongodb <<EOF
use admin
cfg={
"_id" : "testdb",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.11:27017",
"priority" : 2
},
{
"_id" : 1,
"host" : "192.168.1.12:27017",
"priority" : 1
},
{
"_id" : 2,
"host" : "192.168.1.12:27018",
"arbiterOnly" : true
}
]
}
rs.initiate(cfg)
rs.status()
exit;
EOF
sleep 2
echo ”到此mongodb-replica set 部署完毕,如此就不会引发mongodb的路由回旋“