mongodb4.4.23部署

集群规划

系统ipmongo端口mongo服务mongo版本
ubuntu1~18.04192.168.134.1720001,21001,22001,22002,22003mongos,config servers,shard1,shard2,shard34.4.23
ubuntu1~18.04192.168.134.1820001,21001,22001,22002,22003mongos,config servers,shard1,shard2,shard34.4.23
ubuntu1~18.04192.168.134.1920001,21001,22001,22002,22003mongos,config servers,shard1,shard2,shard34.4.23

下载地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.4.23.tgz
以下操作若无说明需以abm用户在三台机器执行
修改主机hostname

sudo hostnamectl set-hostname abm13417

添加hosts解析

abm@abm13417:~# cat /etc/hosts
192.168.134.17 abm13417
192.168.134.18 abm13418
192.168.134.19 abm13419

下载解压mongodb压缩包

#只需在192.168.134.17执行即可
 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1804-4.4.23.tgz
 tar zxvf mongodb-linux-x86_64-ubuntu1804-4.4.23.tgz
sudo mv mongodb-linux-x86_64-ubuntu1804-4.4.23 /mnt/mongodb-4.4.23
sudo chown abm:abm -R /mnt/mongodb-4.4.23

创建mongodb各项服务所需目录

#只需在192.168.134.17执行即可
cd /mnt/mongodb-4.4.23
mkdir -p conf
mkdir -p config
mkdir -p mongos
mkdir -p shard1
mkdir -p shard2
mkdir -p shard3
mkdir -p config/data
mkdir -p config/log
mkdir -p mongos/log
#拷贝mongodb目录至其他两台
scp -r /mnt/mongodb-4.4.23 192.168.134.18:/mnt/
scp -r /mnt/mongodb-4.4.23 192.168.134.19:/mnt/

格式化三块磁盘并挂载

sudo mkfs.ext4 /dev/sdb
sudo mkfs.ext4 /dev/sdc
sudo mkfs.ext4 /dev/sdd
tail /etc/fstab
UUID="f2639bfe-1f95-479d-a6d9-96abcfb074b3" /mnt/mongodb-4.4.23/shard1 ext4 defaults 0 0
UUID="7012010f-1379-478f-8734-bb1d7bcd057f" /mnt/mongodb-4.4.23/shard2 ext4 defaults 0 0
UUID="b8f51a98-965b-4426-a023-a6bdfbfcfd56" /mnt/mongodb-4.4.23/shard3 ext4 defaults 0 0

创建shard所需目录

cd /mnt/mongodb-4.4.23
mkdir -p shard1/log
mkdir -p shard1/data
mkdir -p shard2/data
mkdir -p shard2/log
mkdir -p shard3/log
mkdir -p shard3/data

config服务配置文件

abm@abm13417:/mnt/mongodb-4.4.23$ cat conf/config.conf
pidfilepath=/mnt/mongodb-4.4.23/config/config_server.pid  #记录config服务的pid
dbpath=/mnt/mongodb-4.4.23/config/data/    #存放config服务数据的目录
logpath=/mnt/mongodb-4.4.23/config/log/config_server.log #记录config服务日志
logappend=true  #以追加写入的形式写入日志
bind_ip=0.0.0.0  #绑定ip地址
port=21001   #config服务使用的端口
fork=true  #后台启动服务
configsvr=true  #configsvr选项设置为true时,当前MongoDB实例将被配置为配置服务器,可以用于存储和管理分片集群的元数据信息,在这种情况下,MongoDB实例将会监听默认端口27019,并使用默认的数据目录/data/configdb存储配置服务器的数据文件
replSet=config_server #副本集名称
maxConns=20000  #最大连接数

shard1服务配置文件

abm@abm13417:/mnt/mongodb-4.4.23$ cat conf/shard1.conf
pidfilepath=/mnt/mongodb-4.4.23/shard1/shard1.pid
dbpath=/mnt/mongodb-4.4.23/shard1/data
logpath=/mnt/mongodb-4.4.23/shard1/log/shard1.log
logappend=true
bind_ip=0.0.0.0
port=22004
fork=true
directoryperdb=true #用于指定MongoDB实例是否使用独立的数据目录来存储每个数据库。当directoryperdb选项设置为true时,MongoDB实例将为每个数据库创建一个独立的数据目录,这样可以更好地管理和维护不同数据库之间的数据。如果directoryperdb选项设置为false,则MongoDB实例将使用单个数据目录来存储所有的数据库文件
replSet=shard1  #配置副本集名称
shardsvr=true  #用于指定MongoDB实例是否用作分片集群的分片节点。当shardsvr选项设置为true时,MongoDB实例将被配置为分片集群的分片节点,可以用于存储和管理分片集群的数据。在这种情况下,MongoDB实例将会监听默认端口27018,并使用默认的数据目录/data/db存储数据文件
maxConns=20000


shard2服务配置文件

abm@abm13417:/mnt/mongodb-4.4.23$ cat conf/shard2.conf
pidfilepath=/mnt/mongodb-4.4.23/shard2/shard2.pid
dbpath=/mnt/mongodb-4.4.23/shard2/data
logpath=/mnt/mongodb-4.4.23/shard2/log/shard2.log
logappend=true
bind_ip=0.0.0.0
port=22002
fork=true
directoryperdb=true
replSet=shard2
shardsvr=true
maxConns=20000


shard3服务配置文件

abm@abm13417:/mnt/mongodb-4.4.23$ cat conf/shard3.conf
pidfilepath=/mnt/mongodb-4.4.23/shard3/shard3.pid
dbpath=/mnt/mongodb-4.4.23/shard3/data
logpath=/mnt/mongodb-4.4.23/shard3/log/shard3.log
logappend=true
bind_ip=0.0.0.0
port=22003
fork=true
directoryperdb=true
replSet=shard3
shardsvr=true
maxConns=20000

mongos服务配置文件

abm@abm13417:/mnt/mongodb-4.4.23$ cat conf/mongos.conf
pidfilepath=/mnt/mongodb-4.4.23/mongos/mongos.pid
logpath=/mnt/mongodb-4.4.23/mongos/log/mongos.log
logappend=true
bind_ip=0.0.0.0
port=20001
fork=true
configdb=config_server/abm13417:21001,abm13418:21001,abm13419:21001  #配置config服务副本集的所有节点,config_server之前在config配置文件中配置的副本集的名称
maxConns=20000

启动服务

cd /mnt/mongodb-4.4.23
bin/mongod --config conf/config.conf
bin/mongod --config conf/shard1.conf
bin/mongod --config conf/shard2.conf
bin/mongod --config conf/shard3.conf

初始化各项服务副本集

##仅在一台执行即可
#初始化config服务
mongo --port 21001 #连接到mongo
rs.initiate({ _id: "config_server", members: [ { _id: 0, host: "abm13417:21001",priority: 3 }, { _id: 1, host: "abm13418:21001",priority: 2}, { _id: 2, host: "abm13419:21001",priority: 1}] });
#初始化shard1
mongo --port 22001
rs.initiate({ _id: "shard1", members: [ { _id: 0, host: "abm13417:22001",priority: 3 }, { _id: 1, host: "abm13418:22001",priority: 2}, { _id: 2, host: "abm13419:22001",priority: 1}] });
#初始化shard2
mongo --port 22002
rs.initiate({ _id: "shard2", members: [ { _id: 0, host: "abm13417:22002",priority: 3 }, { _id: 1, host: "abm13418:22002",priority: 2}, { _id: 2, host: "abm13419:22002",priority: 1}] });
#初始化shard3
mongo --port 22003
rs.initiate({ _id: "shard3", members: [ { _id: 0, host: "abm13417:22003",priority: 3 }, { _id: 1, host: "abm13418:22003",priority: 2}, { _id: 2, host: "abm13419:22003",priority: 1}] });

启动mongos服务

cd /mnt/mongodb-4.4.23 && bin/mongos --config conf/mongos.conf

登录mongos服务添加分片信息

use admin               #使用admin库,以下操作需要在admin库下执行

db.adminCommand({

   "setDefaultRWConcern" : 1,

   "defaultWriteConcern" : {

      "w" : 3      

   }

});

添加分片副本集信息

db.runCommand({'addshard':'shard1/abm13417:22001,abm13418:22001,abm13419:22001'});

db.runCommand({'addshard':'shard2/abm13417:22002,abm13418:22002,abm13419:22002'});

db.runCommand({'addshard':'shard3/abm13417:22003,abm13418:22003,abm13419:22003'});

查看集群状态

sh.status()

创建mongos超级管理员

mongo --port 20001
#超级管理员
use admin
db.createUser(
    {
        user: "root",
        pwd: "*******",
        roles: [{role : "root", db : "admin"}]
    }
)


此时,集群部署完成。如果是生产环境建议开启集群认证,步骤如下

开启集群认证
生成密钥文件

#仅在一台执行即可
openssl rand -base64 756 >/mnt/mongodb-4.4.23/keyfile
chmod 600 /mnt/mongodb-4.4.23/keyfile
scp /mnt/mongodb-4.4.23/keyfile 192.168.134.18:/mnt/mongodb-4.4.23/
scp /mnt/mongodb-4.4.23/keyfile 192.168.134.18:/mnt/mongodb-4.4.23/

mongos上创建的用户,是不会自动添加到"shard"分片服务器上的,为了以后方便维护shard分片服务器,分别登录到每个分片服务器的"primary"节点,添加管理员用户

use admin

db.createUser(
    {
        user: "root",
        pwd: "*******",
        roles: [{role : "root", db : "admin"}]
    }
)

开启认证

#为所有"monogd"程序配置文件添加认证参数
auth=true
keyFile=/mnt/mongodb-4.4.23/keyfile
#为所有"monogs"程序配置文件添加认证参数
keyFile=/mnt/mongodb-4.4.23/keyfile

重启集群服务后验证即可
停服务:mongos->shard->config
起服务:config->shard->mongos

部署主要参考:https://blog.csdn.net/ApexPredator/article/details/130509525
次要参考:https://blog.csdn.net/duanbeibei/article/details/89334866
其他参考:https://blog.csdn.net/weixin_48583915/article/details/128353924

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值