Linux Mongodb Sharding replset 集群

项目中第一次使用Mongodb,难免会遇到一些问题,由其是集群环境搭建,足足耗费了两天时间,所以写在博客记录下来,以免时间久了忘记了.

本次测试环境搭建结构图如下:

 

 

条件有限,在正式环境安装前,先在测试环境搭建测试一下,可是只有一台服务器,好不容易找同事借了一台电脑,装了两个虚拟机,203,204这两台,好了,不多说了,开始干活

第一步,创建用户,安装软件

用户为:iport

软件版本为:mongodb-linux-x86_64-2.4.5.tgz

操作系统为:Centos5.6-x86_64

安装目录为:/home/iport/apps/mongodb-linux-x86_64-2.4.5

具体怎么弄,此处略去一百字............微笑

 

第二步,创建一个SecurityKey

执行如下命令,创建一个mongo.key文件,最后mongo安全认证时会用到这个文件,所有服务器上文件内容要一样....

[iport@localhost ~]$ openssl rand -base64 741 > mongo.key
 [iport@localhost ~]$ chmod 0600 mongo.key
复制mongo.key到所有服务器上的/home/iport/apps/mongodb-linux-x86_64-2.4.5/目录上

 

第三步,安装MongoDB实例

------------------------------------------------172.16.2.203上的操作-----------------------------------------------------------


[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs1-1
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs1-1
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs2-1
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs2-1
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/mongos

--进入bin目录

[iport@localhost mongodb-linux-x86_64-2.4.5]$ cd bin/

--启动mongodb rs1-1

[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs1 --port 27019 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs1-1 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs1-1/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongodb rs2-1
[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs2 --port 27020 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs2-1 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs2-1/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongo config服务
[iport@localhost bin]$ ./mongod --fork --configsvr --nohttpinterface --port 30000 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/config --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/config/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

------------------------------------------------172.16.2.204-----------------------------------------------------------

[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs1-2
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs1-2
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs2-2
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs2-2
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/mongos

--进入bin目录

[iport@localhost mongodb-linux-x86_64-2.4.5]$ cd bin/

--启动mongodb rs1-2

[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs1 --port 27019 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs1-2 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs1-2/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongodb rs2-2
[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs2 --port 27020 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs2-2 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs2-2/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongo config
[iport@localhost bin]$ ./mongod --fork --configsvr --nohttpinterface --port 30000 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/config --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/config/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'


------------------------------------------------172.16.0.119-----------------------------------------------------------

[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs1-3
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs1-3
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/rs2-3
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/rs2-3
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p data/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/config
[iport@localhost mongodb-linux-x86_64-2.4.5]$ mkdir -p log/mongos

--进入bin目录

[iport@localhost mongodb-linux-x86_64-2.4.5]$ cd bin/

--启动mongodb rs1-3
[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs1 --port 27019 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs1-3 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs1-3/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongodb rs2-3
[iport@localhost bin]$ ./mongod --fork --journal --maxConns 20000 --nohttpinterface --shardsvr --replSet rs2 --port 27020 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/rs2-3 --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/rs2-3/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

--启动mongo config
[iport@localhost bin]$ ./mongod --fork --configsvr --nohttpinterface --port 30000 --dbpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/data/config --logpath /home/iport/apps/mongodb-linux-x86_64-2.4.5/log/config/mongodb.log --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'


第四步,配置mongos

三台服务上分别执行如下命令,启动mongos实例
[iport@localhost bin]$ ./mongos --fork --configdb 172.16.0.119:30000,172.16.2.203:30000,172.16.2.204:30000 --port 40000 --logpath '/home/iport/apps/mongodb-linux-x86_64-2.4.5/log/mongos/mongos.log' --keyFile='/home/iport/apps/mongodb-linux-x86_64-2.4.5/mongo.key'

 

第五步,配置replset

在任何一台服务器上用mongo命令连接本地mongodb实例(通过localhost),创建两个replset,rs1和rs2
[iport@localhost bin]$ ./mongo localhost:27019/admin
> config = {_id: 'rs1', members: [{_id: 0, host: '172.16.0.119:27019'},{_id: 1, host: '172.16.2.203:27019'},{_id: 2, host: '172.16.2.204:27019'}]}
> rs.initiate(config);

[iport@localhost bin]$ ./mongo localhost:27020/admin
> config = {_id: 'rs2', members: [{_id: 0, host: '172.16.0.119:27020'},{_id: 1, host: '172.16.2.203:27020'},{_id: 2, host: '172.16.2.204:27020'}]}
> rs.initiate(config);

 

第七步,配置NTP

配置其中一台为ntpd服务器,其余几台定时同步时间,mongodb各服务器之间时间必须同步,ntp时间同步方式,参考百度,此处略去两百字.......吐舌头

第八步,添加数据库,用户,启用分片功能
 连接任一台mongos(通过localhost连接),执行命令:  ./mongo localhost:40000/admin
 在mongo控制台执行如下命令:
 >db.addUser({user:"clusterAdmin",pwd:"pwd",roles:["clusterAdmin","userAdminAnyDatabase","readWriteAnyDatabase"]});
 >sh.addShard("rs1/172.16.0.119:27019,172.16.2.203:27019,172.16.2.204:27019");
 >sh.addShard("rs2/172.16.0.119:27020,172.16.2.203:27020,172.16.2.204:27020");

--创建测试数据库,及测试collection,并分片
 >use wx_iop;
 >db.createCollection("packet");
 >db.createCollection("access_records");

--创建测试数据库用户
 >db.addUser( { user: "wx_iop_mongo",pwd: "wx_iop_mongo",roles: [ "readWrite", "dbAdmin" ]});

--创建索引
 >db.access_records.ensureIndex( {"meta.year":1,"meta.month":1,"meta.day":1,"meta.date":1,"meta.apiName":1,"meta.appKey":1}, { unique: true,name:"metaIdx" } );
--开启数据库分片功能 

>sh.enableSharding("wx_iop");

--开启collection分片功能
 >sh.shardCollection("wx_iop.packet",{"_id":"hashed"});
 >sh.shardCollection("wx_iop.access_records",{"meta.year":1,"meta.month":1,"meta.day":1,"meta.date":1,"meta.apiName":1,"meta.appKey":1});

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值