准备工作:三台服务器进行分片集群规划,填写相关信息到下表,测试通信是否互通,如果没有互通,配置通信互通。查看Linux防火墙状态,检查是否关闭,如果没有关闭,则关闭防火墙。查看Linux中SELinux是否无效,如果不是,则修改为无效的。
虚拟机
名称
主机名
IP地址
Shard1
Shard2
Shard3
mongos
Config Server
Hadoop01
Hadoop01
192.168.121.134
27018
主结点
27020
仲裁结点
27019
副结点
27021
27022
主结点
Hadoop02
Hadoop02
192.168.121.135
27019
副结点
27018
主结点
27020
仲裁结点
27021
27022
副结点
Hadoop03
Hadoop03
192.168.121.136
27020
仲裁结点
27019
副结点
27018
主结点
27022
副结点
1、创建相关文件夹和文件,安装mongodb。在第一台服务器上创建相关文件夹和文件,安装mongodb,并将相关目录分发到其他两台,使得三台服务器目录和安装相同。(20分)
#创建等下要使用的文件夹
[root@hadoop01~]#touch/opt/servers/mongodb_demo/shardcluster/configServer/logs/config_server.log
[root@hadoop01 ~]# touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard1.log
[root@hadoop01 ~]# touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard2.log
[root@hadoop01 ~]# touch /opt/servers/mongodb_demo/shardcluster/shard/logs/shard3.log
[root@hadoop01 ~]# touch /opt/servers/mongodb_demo/shardcluster/mongos/logs/mongos.log
[root@hadoop01 ~]# tar -zxvf /opt/software/mongodb-linux-x86_64-rhel62-3.6.23.tgz -C /opt/servers/mongodb_demo/shardcluster/
#复制文件夹到其他两台虚拟机
scp -r /opt/servers/mongodb_demo/shardcluster/ root@hadoop02:/opt/servers/mongodb_demo/
scp -r /opt/servers/mongodb_demo/shardcluster/ root@hadoop03:/opt/servers/mongodb_demo/
2、部署配置服务器。(20分)
3、部署分片服务器。(20分)
配置分片的主节点、副节点、仲裁节点
./mongo --host hadoop01 --port 27018
rs.initiate()
rs.add("hadoop02:27019")
rs.addArb("hadoop03:27020")
rs.status()
./mongo --host hadoop02 --port 27018
rs.initiate()
rs.add("hadoop03:27019")
rs.addArb("hadoop01:27020")
rs.status()
./mongo --host hadoop03 --port 27018
rs.initiate()
rs.add("hadoop01:27019")
rs.addArb("hadoop03:27020")
rs.status()
4、部署路由服务器。(20分)
./mongos -f /opt/servers/mongodb_demo/shardcluster/mongos/configFile/mongodb_mongos.conf
5、启动分片功能,在服务器nosql01中登录mongos的MongoDB客户端,切换到数据库gateway,向分片集群添加3个分片。(20分)
./mongo --host hadoop01 --port 27021
use gateway
sh.addShard("shard1/hadoop01:27018,hadoop02:27019,hadoop03:27020")
sh.addShard("shard2/hadoop01:27020,hadoop02:27018,hadoop03:27019")
sh.addShard("shard3/hadoop01:27019,hadoop02:27020,hadoop03:27018")
MongoDB分片操作
登录01服务器MongoDB客户端./mongo --host hadoop01 --port 27021
2、切换到数据库config,设置分片块(chunk)大小为1M。主要是为了便于展示分片操作,将分片chunk(块)设置为1M,使得插入少量数据就可体现出分片的效果。
3、创建一个测试数据库,模拟向数据库的集合插入50000条文档(文档除了默认的_id字段,还包括id和name字段,默认_id字段不用插入值,系统自动生成,可用for循环生成id和name值)。
for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})}
4、对数据库进行分片:切换到数据库gateway,对测试数据库进行分片操作
Use gateway
sh.enableSharding("school")
5、对集合进行分片:切换到数据库school,对测试数据库的集合基于分片键id创建索引,切换到数据库gateway,以"id"作为分片键对集合user进行分片。
6、切换到数据库gateway,查看分片信息。