1 概要
本文档用于部署 单节点的mongos,一个节点的 config , 一个节点的 shard ,一个节点的mongos。
变量:
mongodb 版本号:{{mongodb-version}}
2 部署架构及资源列表
2.1 架构图
2.2 架构说明
2.3 服务器列表
IP | 服务 | 描述 |
---|---|---|
mongodb-01 | configsvr1 Primary | 端口开放: - 27019 |
mongodb-01 | shardsvr1 Primary | 端口开放: - 27018 |
mongodb-01 | mongos1 Primary | 端口开放: - 27017 |
3 安装 MongoDB
3.1 环境准备
mongodb-01:
在 linux bash 中执行以下命令:
ulimit -n 1024000
echo “* soft nofile 1024000” >> /etc/security/limits.conf
echo “* hard nofile 1024000” >> /etc/security/limits.conf
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i “s/enforcing/disabled/g” /etc/selinux/config
准备环境:首先,您需要在机器上配置主机名和修改内核参数。在/etc/hosts文件中,添加以下配置:
127.0.0.1 configsvr1
127.0.0.1 shardsvr1
127.0.0.1 mongos1
3.2 安装步骤
获取到 mongodb 安装包后,在服务器上按顺序执行以下命令:
configsvr1 :
将安装包解压到指定目录下:
tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz
调整软件目录,创建 mongodb 相关目录
mkdir /data
mv mongodb-{{mongodb-version}}/ /data/
mkdir -p config/data config/log data
创建配置文件
vim config/mongod.conf,粘贴以下内容后,保存
根据实际情况调整个别参数:
systemLog:
verbosity: 0
quiet: false
traceAllExceptions: false
destination: file
path: /data/mongos/mongodb-3.4.24-27019/config/log/mongod.log
logAppend: true
logRotate: rename
processManagement:
fork: true
pidFilePath: /data/mongos/mongodb-3.4.24-27019/config/mongod.pid
storage:
dbPath: /data/mongos/mongodb-3.4.24-27019/config/data
journal:
enabled: true
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
net:
bindIp: 0.0.0.0
port: 27019
maxIncomingConnections: 20000
replication:
oplogSizeMB: 10240
replSetName: configReplSet
4. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile
source ~/.bash_profile
启动 mongod
mongod --configsvr --config /data/mongos/mongodb-3.4.24-27019/config/mongod.conf
配置副本集
在命令行执行:mongo “mongodb://localhost:27019”
进入 mongo shell ,执行以下命令:
rs.initiate()
若执行失败,则可以这么执行:
var cfg = {
… “_id”: “tap”,
… “members”: [
… {
… “_id”: 0,
… “host”: “119.8.233.223:27019”,
… “priority”: 1,
… “votes”: 1
… }
… ]
… };
再执行:rs.initiate(cfg);
use admin
db.createUser(
{
user: “admin”,
pwd: “password”,
roles: [
“root”
],
passwordDigestor:“server”
}
)
shardsvr1:
将安装包解压到指定目录下:
tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz
调整软件目录,创建 mongodb 相关目录
mkdir /data
mv mongodb-{{mongodb-version}}/ /data/
mkdir -p config data/shard1
创建配置文件
vim config/mongod.yml,粘贴以下内容后,保存
根据实际情况调整个别参数:
systemLog:
verbosity: 0
quiet: false
traceAllExceptions: false
destination: file
path: /data/mongos/mongodb-3.4.24-27018/data/shard1/mongod.log
logAppend: true
logRotate: rename
processManagement:
fork: true
pidFilePath: /data/mongos/mongodb-3.4.24-27018/data/shard1/mongod.pid
storage:
dbPath: /data/mongos/mongodb-3.4.24-27018/data/shard1
journal:
enabled: true
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
net:
bindIp: 0.0.0.0
port: 27018
maxIncomingConnections: 20000
replication:
oplogSizeMB: 10240
replSetName: shard1
4. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile
source ~/.bash_profile
启动 mongoshard
./mongod --shardsvr --config /data/mongos/mongodb-3.4.24-27018/config/mongod.yml
配置副本集
在命令行执行:mongo “mongodb://localhost:27018”
进入 mongo shell ,执行以下命令:
rs.initiate()
若执行失败,则可以这么执行:
var cfg = {
… “_id”: “tap”,
… “members”: [
… {
… “_id”: 0,
… “host”: “119.8.233.223:27019”,
… “priority”: 1,
… “votes”: 1
… }
… ]
… };
再执行:rs.initiate(cfg);
use admin
db.createUser(
{
user: “admin”,
pwd: “password”,
roles: [
“root”
],
passwordDigestor:“server”
}
)
db.auth(‘admin’, ‘Gotapd8!’)
cfg = rs.conf()
cfg.members[0].host = “{{IP:27019}}”
rs.reconfig(cfg)
mongos1:
8. 将安装包解压到指定目录下:
tar -zxvf mongodb-{{mongodb-version}}.xxx.tar.gz
调整软件目录,创建 mongodb 相关目录
mkdir /data
mv mongodb-{{mongodb-version}}/ /data/
mkdir -p config data/shard1
创建配置文件
vim config/mongos.yml,粘贴以下内容后,保存
根据实际情况调整个别参数:
systemLog:
destination: file
path: /data/mongos/mongodb-3.4.24-27017/data/shard1/mongod.log
logAppend: true
net:
bindIp: 0.0.0.0
port: 27017
sharding:
configDB: “configReplSet/jack-test:27019”
11. 增加环境变量
echo “export PATH=$PATH:/data/mongodb-{{mongodb-version}}/bin” >> ~/.bash_profile
source ~/.bash_profile
启动 mongos
后台运行
nohup ./mongos --configdb “configReplSet/jack-test:27019” --port 27017 &
配置副本集
./mongo --port 27017
进入 mongo shell ,执行以下命令:
rs.initiate()
若执行失败,则可以这么执行:
var cfg = {
… “_id”: “tap”,
… “members”: [
… {
… “_id”: 0,
… “host”: “119.8.233.223:27019”,
… “priority”: 1,
… “votes”: 1
… }
… ]
… };
再执行:rs.initiate(cfg);
use admin
db.createUser(
{
user: “admin”,
pwd: “password”,
roles: [
“root”
],
passwordDigestor:“server”
}
)
添加分片:
sh.addShard(“shard1/hostname:27018”)
插入一条测试数据:
db.test_table_001.insert({name: “test”,ORDER_ID: 1})
mongos创建新的集合,并创建分片键
db.createCollection(“test_table_001”) ;
sh.shardCollection(“test.test_table_001”, { ORDER_ID: 1 }) ;
db.test_table_001.createIndex({ ORDER_ID: 1 },{ background: true });
杀掉 mongo进程
db.shutdownServer()
创建证书
mkdir -p /etc/mongo
openssl rand -base64 745 > /etc/mongo/mongodb-keyfile
chmod 600 /etc/mongo/mongodb-keyfile