User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   mongo   ›   正文
mongo

安装mongo分片集群shell脚本-无密码版

2022-11-02 14:18:31
1208  0 0

自动安装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
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
210 文章 2 评论 194508 浏览
测试
测试