准备工作:三台服务器进行分片集群规划,填写相关信息到下表,测试通信是否互通,如果没有互通,配置通信互通。查看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分片操作
./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,查看分片信息。