mongo Shard部署

mongo副本集配置部署

副本集:

    1主2从2仲裁

mongo安装包:http://www.mongodb.org/downloads

机器:

    采用5台机器,host0,host1,host2,host3,host4

角色分布:

    1主:host0:8111

    2从:host1:8111,host2:8111

    2仲裁:host3:10000,host3:10000

replica set部署开始

1.准备

    将mongo安装包解压至家目录~,改名为mongo

    mkdir -p ~/mongo/data/mongo/

    mkdir -p ~/mongo/log/

    mkdir -p ~/mongo/conf/

2.配置

vi ~/mongo/conf/mongod.conf

#log
logpath = ./log/mongod.log
logappend = true
#listen port
port = 8111
#db path
dbpath  = ./data/mongo/
#independent dir per db
directoryperdb = true
#namespace disk size
nssize = 500
#max connection numbers
maxConns = 2048
#replica set name
replSet = shard0
#relication log size
oplogSize = 10240
#monitor
rest = true

echo "mongoSecretPassword" > ~/mongo/conf/secretKey

3.启动

nohup numactl --interleave=all ./bin/mongod -f ./conf/mongod.conf --fastsync --keyFile=./conf/secretKey >/dev/null 2>&1 &

注:

    1.不同的分片中,replSet配置不同

    2.numactl --interleave=all,numa:Non-Uniform Memory Access,内存交织分配,必须,否则导致频繁的内存交换,影响mongo性能

    3.--keyFile=./conf/secretKey,集群认证的私钥,secretKey权限不要太开放,chmod 400 ~/mongo/conf/secretKey

    4.--fastsync,使用已有的基准数据,而非完全重新同步数据

4.检查

    检查mongo进程,检查mongo日志~/mongo/log/mongod.log

    此时mongod.log会提示:[rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)

    这是由于副本集无法获取配置导致,完成下一步即可解决

5.设置replica set

随意进入一台mongod机器

cd ~/mongo
./bin/mongo 127.0.0.1:8111
connecting to: 127.0.0.1:8111/test
> config = {_id:'shard0',members:[{_id:0,host:'host0IP:8111'},{_id:1,host:'host1IP:8111'},{_id:2,host:'host2IP:8111'}]}
> rs.initiate(config)

6.设置secondary可读

登录secondary机器

cd ~/mongo/
./bin/mongo 127.0.0.1:8111
>rs.slaveOk()

7.检查分片状态

分别到各台机器检查

> rs.conf()
> rs.status()
> rs.isMaster()

8.用户名密码设定

到primary机器(rs.status可以查找到),进行如下操作

> use admin
> db.addUser("username","password")

9.arbiter:仲裁者的构建

9.1准备

    arbiter与mongod同进程,不同是arbiter无数据集,在选举时进行投票

    将mongo安装包解压至家目录~,改名为arbiter

    cd ~/arbiter/bin/ && cp mongod arbiter-10000        //arbiter耗费资源较少,集群分片的arbiter可全量搭建在两台机器,以arbiter-port命名

    mkdir -p ~/arbiter/conf/

    mkdir -p ~/arbiter/log/

    mkdir -p ~/arbiter/data/arbiter-10000/

9.2配置

    vi ~/arbiter/conf/arbiter-10000.conf        //统一命名规范,便于问题定位

#log
logpath = ./log/arbiter-10000.log
logappend = true
#listen port = 10000
port = 10000
#db path
dbpath  = ./data/arbiter-10000/
#max connection numbers
maxConns = 2048
#replica set name
replSet = shard0
#relication log size
oplogSize = 1024
#monitor
rest = true
# disable http
nohttpinterface = true

9.3启动

    类似副本集中mongod的启动命令

    arbiter启动:

        nohup numactl --interleave=all ./bin/arbiter-10000 -f ./conf/arbiter-10000.conf --keyFile=./conf/secretKey >/dev/null 2>&1 &

8.4将arbiter加入分片

primary节点执行:

    ./bin/mongo 127.0.0.1:8111/admin -u username -p password

shard0:PRIMARY> rs.addArb("host3IP:10000")
shard0:PRIMARY> rs.addArb("host4IP:10000")

8.5查询arbiter状态

    分片节点执行rs.status()查询arbiter状态

至此,1主2从2arbiter的分片构造完毕。

转载于:https://my.oschina.net/vnlyzhang/blog/363042

部署 MongoDB 分片集群,需要按照以下步骤进行操作: 1. 安装 MongoDB:在每个分片服务器和配置服务器上安装 MongoDB。可以从 MongoDB 官方网站(https://www.mongodb.com/try/download/community)下载最新的 MongoDB 版本,并按照官方文档提供的说明进行安装。 2. 配置配置服务器(config server):选择三个服务器作为配置服务器的节点。在每个节点上创建一个配置服务器实例,并将它们配置为副本集。详细的配置步骤可以参考 MongoDB 官方文档中的 "Deploy a Config Server Replica Set" 部分。 3. 启动配置服务器副本集:启动配置服务器副本集,确保副本集中的每个节点都正常运行,并且选举了一个主节点。 4. 启动分片服务器(shard server):选择多个服务器作为分片服务器的节点。在每个节点上创建一个 mongod 实例,并将其配置为副本集。详细的配置步骤可以参考 MongoDB 官方文档中的 "Deploy a Sharded Cluster" 部分。 5. 向分片集群添加分片:将分片服务器添加到分片集群中。你可以使用 `mongos` 实例连接到任意一个分片服务器,然后使用 `sh.addShard()` 命令将分片服务器添加到集群中。详细的操作步骤可以参考 MongoDB 官方文档中的 "Add Shards to a Cluster" 部分。 6. 定义分片键和路由规则:在集群中定义分片键,并根据分片键的取值范围定义路由规则。这样 `mongos` 实例就能根据分片键将数据路由到正确的分片服务器上。你可以使用 `sh.shardCollection()` 命令来定义分片键和路由规则。详细的操作步骤可以参考 MongoDB 官方文档中的 "Shard a Collection" 部分。 7. 验证和测试:最后,确保整个分片集群正常运行。你可以插入测试数据并查询数据,以确保数据正确地分布在不同的分片服务器上。 请注意,在部署 MongoDB 分片集群时,需要仔细阅读 MongoDB 官方文档并按照其中的说明进行操作。这样可以确保正确配置和部署分片集群,并获得最佳性能和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值