自动安装mongo分片集群脚本
###主节点安装mongosh,便于调试————————————————————————————————————————————————————
if [ "$1" == "install_mongosh" ];then
cat >> /etc/yum.repos.d/mongodb-org-6.0.repo <<EOF
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
yum install mongodb-mongosh -y
echo "mongosh 版本检查:"
mongosh --version
echo -e "\033[32m '>>>>>> mongosh安装完成' \033[0m"
fi
###安装shard容器,三个节点的名字不一样
if [ "$1" == "install_shard1" ];then
if [ -d "/mongo/data/db" ];then
echo -e "\033[31m '__________________________________ 存在/mongo文件夹,退出安装,请手动删除后再执行 ,and EXIT' \033[0m"
exit 1
fi
mkdir -p /mongo/data/db
chmod -R 777 /mongo/data/db
docker run --name shard_server -itd --network=host -v /mongo/data/db:/data/db mongo:6.0.1 --shardsvr --replSet "my_shard_s1"
sleep 2
docker ps
echo -e "\033[32m '>>>>>> 第1个分片安装完成' \033[0m"
fi
if [ "$1" == "install_shard2" ];then
if [ -d "/mongo/data/db" ];then
echo -e "\033[31m '__________________________________ 存在/mongo文件夹,退出安装,请手动删除后再执行 ,and EXIT' \033[0m"
exit 1
fi
mkdir -p /mongo/data/db
chmod -R 777 /mongo/data/db
docker run --name shard_server -itd --network=host -v /mongo/data/db:/data/db mongo:6.0.1 --shardsvr --replSet "my_shard_s2"
sleep 2
docker ps
echo -e "\033[32m '>>>>>> 第2个分片安装完成' \033[0m"
fi
if [ "$1" == "install_shard3" ];then
if [ -d "/mongo/data/db" ];then
echo -e "\033[31m '__________________________________ 存在/mongo文件夹,退出安装,请手动删除后再执行 ,and EXIT' \033[0m"
exit 1
fi
mkdir -p /mongo/data/db
chmod -R 777 /mongo/data/db
docker run --name shard_server -itd --network=host -v /mongo/data/db:/data/db mongo:6.0.1 --shardsvr --replSet "my_shard_s3"
sleep 2
docker ps
echo -e "\033[32m '>>>>>> 第3个分片安装完成' \033[0m"
fi
###初始化shard节点,在主节点通过mongosh执行
if [ "$1" == "init_shard_1" ];then
ip=$2
echo """rs.initiate({_id : \"my_shard_s1\",members: [{ _id : 0, host : \"$ip:27018\" }]});""" |mongosh --host $ip --port 27018
echo -e "\033[32m '>>>>>> 第1个分片初始化结束,若上一行显示有{ ok,1 }代表正常' \033[0m"
fi
if [ "$1" == "init_shard_2" ];then
ip=$2
echo """rs.initiate({_id : \"my_shard_s2\",members: [{ _id : 0, host : \"$ip:27018\" }]});""" |mongosh --host $ip --port 27018
echo -e "\033[32m '>>>>>> 第2个分片初始化结束',若上一行显示有{ ok,1 }代表正常' \033[0m"
fi
if [ "$1" == "init_shard_3" ];then
ip=$2
echo """rs.initiate({_id : \"my_shard_s3\",members: [{ _id : 0, host : \"$ip:27018\" }]});""" |mongosh --host $ip --port 27018
echo -e "\033[32m '>>>>>> 第3个分片初始化结束',若上一行显示有{ ok,1 }代表正常' \033[0m"
fi
###创建conf容器,三个节点,后期不用增加
if [ "$1" == "install_conf" ];then
if [ -d "/mongo/data/configdb" ];then
echo -e "\033[31m '__________________________________ 存在/mongo文件夹,退出安装,请手动删除后再执行 ,and EXIT' \033[0m"
exit 1
fi
mkdir -p /mongo/data/configdb
chmod -R 777 /mongo/data/configdb
docker run -d --name configsvr -v /mongo/data/configdb:/data/configdb --network=host mongo:6.0.1 --configsvr --replSet "rs_configsvr"
fi
###配置conf集群
if [ "$1" == "init_conf" ];then
ip1=$2
ip2=$3
ip3=$4
echo """rs.initiate({_id: \"rs_configsvr\",configsvr: true,members: [{ _id : 0, host : \"$ip1:27019\" },{ _id : 1, host : \"$ip2:27019\" },{ _id : 2, host : \"$ip3:27019\" }]});""" |mongosh --port 27019
echo -e "\033[32m '>>>>>> 初始化conf集群完成',若上一行显示有{ ok: 1, lastCommittedOpTime: Timestamp({ t: 1663838967, i: 1 }) }代表正常' \033[0m"
fi
###创建mongos容器安装配置mongos
if [ "$1" == "install_mongos" ];then
ip1=$2
ip2=$3
ip3=$4
docker run --name mongos0 -d --network=host mongo:6.0.1 mongos --configdb rs_configsvr/$ip1:27019,$ip2:27019,$ip3:27019 --bind_ip_all
echo -e "\033[32m '>>>>>> mongos节点安装完成',' \033[0m"
fi
####添加分片节点到集群
if [ "$1" == "start_cluster" ];then
ip1=$2
ip2=$3
ip3=$4
echo """sh.addShard(\"my_shard_s1/$ip1:27018\");sh.addShard(\"my_shard_s2/$ip2:27018\");sh.addShard(\"my_shard_s3/$ip3:27018\");""" |mongosh --port 27017
fi
安装流程说明
###说明:
三个节点 node1(192.168.2.11) node2(192.168.2.12) node3(192.168.2.13) ,其中node1为主要节点
容器分布
node1:shard ,conf,mongos,
node2:shard ,conf
node3:shard ,conf
###安装流程
1 将mongo_shard.txt 复制到三个节点上
2 在node1执行
sh mongo_shard.txt install_mongosh
3在node1执行
sh mongo_shard.txt install_shard1
4在node2执行
sh mongo_shard.txt install_shard2
5在node3执行
sh mongo_shard.txt install_shard3
6在node1执行
sh mongo_shard.txt init_shard_1 192.168.2.11
sh mongo_shard.txt init_shard_2 192.168.2.12
sh mongo_shard.txt init_shard_3 192.168.2.13
7在node1执行
sh mongo_shard.txt install_conf
8在node2执行
sh mongo_shard.txt install_conf
9在node3执行 sh mongo_shard.txt
sh mongo_shard.txt install_conf
10在node1执行
sh mongo_shard.txt init_conf 192.168.2.11 192.168.2.12 192.168.2.13
11在node1执行
sh mongo_shard.txt install_mongos 192.168.2.11 192.168.2.12 192.168.2.13
12在node执行
sh mongo_shard.txt start_cluster 192.168.2.11 192.168.2.12 192.168.2.13