MongoDB安装模式[原创]

Linux Mongodb

date:2017-11-11

author:张建新

查看硬盘分配情况

[root@dscn022 mongodb]# lsblk
NAME             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                8:0    0 278.5G  0 disk
├─sda1             8:1    0   500M  0 part /boot
└─sda2             8:2    0 224.9G  0 part
  ├─rhel-root    253:0    0    50G  0 lvm  /
  ├─rhel-swap    253:1    0     4G  0 lvm  [SWAP]
  ├─rhel-home    253:2    0 100.9G  0 lvm  /home
  ├─rhel-var     253:3    0    20G  0 lvm  /var
  └─rhel-var_log 253:4    0    50G  0 lvm  /var/log
sdb                8:16   0   3.7T  0 disk
└─sdb1             8:17   0   3.7T  0 part /home/hadmin/logs
sdc                8:32   0   3.7T  0 disk
└─sdc1             8:33   0   3.7T  0 part
sdd                8:48   0   3.7T  0 disk
└─sdd1             8:49   0   3.7T  0 part
sde                8:64   0   3.7T  0 disk
└─sde1             8:65   0   3.7T  0 part
sdf                8:80   0   3.7T  0 disk
└─sdf1             8:81   0   3.7T  0 part /home/hadmin/data/mongodb/prev
sdg                8:96   0   3.7T  0 disk
└─sdg1             8:97   0   3.7T  0 part /home/hadmin/data/mongodb/curr
sdh                8:112  0   3.7T  0 disk
└─sdh1             8:113  0   3.7T  0 part /home/hadmin/data/mongodb/next
sdi                8:128  0   3.7T  0 disk
└─sdi1             8:129  0   3.7T  0 part
sdj                8:144  0   3.7T  0 disk
└─sdj1             8:145  0   3.7T  0 part
sdk                8:160  0   3.7T  0 disk
└─sdk1             8:161  0   3.7T  0 part
sdl                8:176  0   3.7T  0 disk
└─sdl1             8:177  0   3.7T  0 part
sdm                8:192  0   3.7T  0 disk
└─sdm1             8:193  0   3.7T  0 part
loop0              7:0    0   3.8G  0 loop /mnt

进行配置

------- ------ -------
curr 1 2 3 4 5
prev 5 1 2 3 4
next 2 3 4 5 1

分配mongoDB 目录

mkdir -p  /home/hadmin/data/mongodb/prev
mkdir -p  /home/hadmin/data/mongodb/curr
mkdir -p  /home/hadmin/data/mongodb/next

进行mount

mount    /dev/sdf1      /home/hadmin/data/mongodb/prev
mount    /dev/sdg1     /home/hadmin/data/mongodb/curr
mount   /dev/sdh1     /home/hadmin/data/mongodb/next

查看硬盘大小

[root@dscn022 mongodb]# df -h
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root      50G  5.1G   45G  11% /
devtmpfs                  126G     0  126G   0% /dev
tmpfs                     126G     0  126G   0% /dev/shm
tmpfs                     126G   50M  126G   1% /run
tmpfs                     126G     0  126G   0% /sys/fs/cgroup
/dev/sda1                 494M  127M  368M  26% /boot
/dev/mapper/rhel-var       20G  101M   20G   1% /var
/dev/mapper/rhel-home     101G  1.5G  100G   2% /home
/dev/mapper/rhel-var_log   50G   58M   50G   1% /var/log
/dev/loop0                3.8G  3.8G     0 100% /mnt
tmpfs                     126G   64K  126G   1% /tmp
tmpfs                      26G     0   26G   0% /run/user/0
/dev/sdb1                 3.6T   89M  3.4T   1% /home/hadmin/logs
/dev/sdf1                 3.6T  390M  3.4T   1% /home/hadmin/data/mongodb/prev
/dev/sdg1                 3.6T  390M  3.4T   1% /home/hadmin/data/mongodb/curr
/dev/sdh1                 3.6T  390M  3.4T   1% /home/hadmin/data/mongodb/next

脚本 (傻瓜模式)

重要 numactl

yum install -y numactl

配置Mongodb用到的文件夹都要mkdir

common.sh

#!/bin/bash

# $1就是shard几
# $2目录,重新规划磁盘后可以修改此处
# $3是关闭位,启动不传,关闭传 --shutdown

INDEX=$1

PORT=$(( 27018 + $INDEX ))
HOSTNAME=`cat /etc/hostname`
SHARD="TOD-Shard-$INDEX"
DB_PATH=" /home/hadmin/data/mongodb/"$2
PID_FILE="/home/hadmin/data/pids/mongodb/$SHARD.pid"
LOG_FILE="/home/hadmin/data/logs/mongodb/$SHARD.log"

numactl --interleave=all /home/hadmin/mongodb/bin/mongod --logpath $LOG_FILE --logappend --logRotate rename --timeStampFormat ctime --fork --pidfilepath $PID_FILE --port $PORT --bind_ip $HOSTNAME --dbpath $DB_PATH --journalCommitInterval 100 --storageEngine wiredTiger --wiredTigerCacheSizeGB 4 --replSet $SHARD --enableMajorityReadConcern --shardsvr --oplogSize 10240 $3

cfgsvr.start

#!/bin/bash

numactl --interleave=all /home/hadmin/mongodb/bin/mongod -f /home/hadmin/mongodb/conf/configserver.conf

route

#!/bin/bash

/home/hadmin/mongodb/bin/mongos -f /home/hadmin/mongodb/conf/router.conf

shard_curr.start

#!/bin/bash

/home/hadmin/mongodb/sbin/common.sh 1 curr

shard_next.start

#!/bin/bash

/home/hadmin/mongodb/sbin/common.sh 2 next

shard_prev.start

#!/bin/bash

/home/hadmin/mongodb/sbin/common.sh 5 prev

initConfig.sh

初始化副本

#!/bin/bash
/home/hadmin/mongodb/bin/mongo dscn022:27018 <

initShard.sh

初始化Shard

#!/bin/bash
    /home/hadmin/mongodb/bin/mongo dscn022:27017 <

initRS.sh

#!/bin/bash
############
# init rs1 #
############
/home/hadmin/mongodb/bin/mongo dscn022:27019 <

总结(总体流程)

  • 第一步挂盘(mount)
  • 复制Mongodb到5个节点
  • 配置文件只需要配置(ConfigServer,Route)!Shard 不需要配置。
  • 将脚本放倒Sbin下(与mongodb,Bin 同级别目录)
  • 启动ConfigServer(3个节点)
  • 启动Route 3个节点
  • sbin包含文件
    • stop 文件请看common.sh
流程图

脚本执行流程

  • cfgsvr.start(三个节点)
  • route.start(三个节点)
  • shard_curr.start (每个节点)
  • shard_next.start (每个节点)
  • shard_prev.start (每个节点)
  • initConfig.sh (任意节点)
  • initRS.sh (任意节点)
  • initShard.sh (任意节点)

提醒

  • 注意 ConfigServer 名称
  • 注意 Route指定的 ConfigServer地址
  • 节点互信 以及hosts

感谢兽兽提供的脚本

感谢民权协助

  • 以上操作经过验证可以直接拿去。
  • auther breakEval13
  • https://github.com/breakEval13