总体实验步骤:环境准备——》部署Mongodb——》部署Config Server——》部署Shard——》部署mongos——》启动分片功能——》分片基本操作和功能验证
目录
实验操作代码:
配置文件和安装包和安装流程PDF: 资源下载处
环境准备
部署Mongodb
部署Config Server
部署Shard
部署mongos
启动分片功能
分片基本操作和功能验证
#1 bigdata111 bigdata112 bigdata113虚拟机环境准备/etc/hosts并修改/etc/hostname文件内容的主机名
bigdata111 192.168.1.111
bigdata112 192.168.1.112
bigdata113 192.168.1.113
你可以选择重新建立三个主机,在初始的信息配置里改成上面格式
如果你虚拟机上已经有了三个主机,可以通过命令操作来修改:
su root
hostname 查看主机名
vim /etc/hostname 修改主机名
ip addr或者ifconfig 查看主机IP
cd /etc/sysconfig/network-scripts
vi ifcfg-ens33 修改网络配置文件
{
将BOOTPROTO=dhcp改为static
ONBOOT=NO改为yes
首先设置IPADDR=192.168..(要根据自己电脑情况)最后一个要除了2,可以填1-255之间的数
NETMASK=255.255.255.0(与虚拟机的子网掩码保持一致)
GATEWAY=192.168..(与虚拟机的网关保持一致)
到编辑里面打开虚拟网络编辑器然后找到NAT模式点击NAT设置就可以看到网关
DNS1=8.8.8.8(属于默认的服务器端口)
#下面四行就是我在bigdata112上的网络配置文件中加入的配置信息:(每个人的网关是不一样的,其他都要和我这个相同)
IPADDR=192.168.1.112
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=8.8.8.8
}
#2 bigdata111 将mongodb压缩包放置在/home/bigdata目录下 解压
su root
mkdir -p /home/bigdata
cd /home/bigdata/
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.13.tgz
mv mongodb-linux-x86_64-rhel70-4.4.13 mongodb
#3 bigdata111 目录与数据准备
cd /home/bigdata/mongodb
mkdir -p /home/bigdata/mongodb/shardcluster/configServer/configFile
mkdir -p /home/bigdata/mongodb/shardcluster/configServer/data
mkdir -p /home/bigdata/mongodb/shardcluster/configServer/logs
mkdir -p /home/bigdata/mongodb/shardcluster/shard/configFile
mkdir -p /home/bigdata/mongodb/shardcluster/shard/shard1_data
mkdir -p /home/bigdata/mongodb/shardcluster/shard/shard2_data
mkdir -p /home/bigdata/mongodb/shardcluster/shard/shard3_data
mkdir -p /home/bigdata/mongodb/shardcluster/shard/logs
mkdir -p /home/bigdata/mongodb/shardcluster/mongos/configFile
mkdir -p /home/bigdata/mongodb/shardcluster/mongos/logs
touch /home/bigdata/mongodb/shardcluster/configServer/logs/config_server.log
touch /home/bigdata/mongodb/shardcluster/shard/logs/shard1.log
touch /home/bigdata/mongodb/shardcluster/shard/logs/shard2.log
touch /home/bigdata/mongodb/shardcluster/shard/logs/shard3.log
touch /home/bigdata/mongodb/shardcluster/mongos/logs/mongos.log
#4 bigdata111 放置config server配置文件
shardcluster/configServer/configFile mongodb_config.conf
#5 将bigdata111上的mongodb目录及其内容上传至bigdata112和bigdata113
先在bigdata112 bigdata113上mkdir -p /home/bigdata
scp -r /home/bigdata/mongodb/ [email protected]:/home/bigdata/
scp -r /home/bigdata/mongodb/ [email protected]:/home/bigdata/
scp -r /home/bigdata/mongodb/shardcluster/configServer/configFile/mongodb_config.conf [email protected]:/home/bigdata/mongodb/shardcluster/configServer/configFile/
#6 bigdata111 112 113 在/etc/profile文件中添加如下内容
export PATH=/home/bigdata/mongodb/bin:$PATH
#7 启动config server集
##bigdata111 bigdata112 bigdata113
systemctl stop firewalld.service
source /etc/profile
mongod -f /home/bigdata/mongodb/shardcluster/configServer/configFile/mongodb_config.conf
#8 配置config server集
##bigdata111
mongo --host bigdata111 --port 27022
config_conf={
_id: "configs",
members: [
{_id: 0,host: "192.168.1.111:27022"},
{_id: 1,host: "192.168.1.112:27022"},
{_id: 2,host: "192.168.1.113:27022"}
]
}
rs.initiate(config_conf)
#9 放置shard配置文件
##bigdata111 112 113
shardcluster/shard/configFile
#10 启动三个shard集群
##bigdata111 112 113
mongod -f /home/bigdata/mongodb/shardcluster/shard/configFile/mongodb_shard1.conf
mongod -f /home/bigdata/mongodb/shardcluster/shard/configFile/mongodb_shard2.conf
mongod -f /home/bigdata/mongodb/shardcluster/shard/configFile/mongodb_shard3.conf
#11 配置三个shard集群
##bigdata111
mongo --host bigdata111 --port 27018
shard_conf={
_id: "shard1",
members: [
{_id: 0,host: "192.168.1.111:27018"},
{_id: 1,host: "192.168.1.112:27019"},
{_id: 2,host: "192.168.1.113:27020",arbiterOnly: true}
]
}
rs.initiate(shard_conf)
##bigdata112
mongo --host bigdata112 --port 27018
shard_conf={
_id: "shard2",
members: [
{_id: 1,host: "192.168.1.111:27020",arbiterOnly: true},
{_id: 0,host: "192.168.1.112:27018"},
{_id: 2,host: "192.168.1.113:27019"}
]
}
rs.initiate(shard_conf)
##bigdata113
mongo --host bigdata113 --port 27018
shard_conf={
_id: "shard3",
members: [
{_id: 2,host: "192.168.1.111:27019"},
{_id: 1,host: "192.168.1.112:27020",arbiterOnly: true},
{_id: 0,host: "192.168.1.113:27018"}
]
}
rs.initiate(shard_conf)
#12 放置mongos配置文件
shardcluster/mongos/configFile
#13 启动mongos服务
##bigdata111 112
mongos -f /home/bigdata/mongodb/shardcluster/mongos/configFile/mongodb_mongos.conf
#14 启动分片功能
##bigdata111
mongo --host bigdata111 --port 27021
use gateway
sh.addShard("shard1/192.168.1.111:27018,192.168.1.112:27019,192.168.1.113:27020")
sh.addShard("shard2/192.168.1.111:27020,192.168.1.112:27018,192.168.1.113:27019")
sh.addShard("shard3/192.168.1.111:27019,192.168.1.112:27020,192.168.1.113:27018")
#15 验证分片功能
use config
db.settings.save({"_id":"chunksize","value":1}) #设置块大小1MB
use school
for(i=1;i<=5;i++){db.user.insert({"id":i,"name":"jack"+i})} #添加5个文档数据
use gateway
sh.enableSharding("school") #开启集合school的分片功能
use school
db.user.createIndex({"id":1}) #以ID创建为主键索引
use gateway
sh.shardCollection("school.user",{"id":1}) #启动
sh.status() #查看分片信息
资源说明:分片的conf配置文件共14个,3个主机每个主机3个shard配置文件,每个主机一个配置文件,只有前两个主机有mongos路由配置文件 ,你可以下载后通过xftp文件传输到虚拟机上,也可以复制内容,在linux终端通过vim写入命令复制进去。后面为了简化操作,可以只实现一台机子上的文件,然后传输到另外的文件上,但需要做一些小修改,毕竟每台主机的配置文件内容不同。
1.利用命令vim etc/hostname修改主机名和命令vi /etc/sysconfig/network-scripts
/ifcfg-ens33修改主机的的ip地址,ip地址和主机名如下:
bigdata111 192.168.1.111;bigdata112 192.168.1.112;bigdata113 192.168.1.113
从上图中可以看到主机名和ip地址与设计的是一致的
2.接下来在bigdata111上创建MongoDB分片集群相关服务器的数据文件、配置文件以及日志文件。
最后的蓝色目录表示成功准备好了相关目录和数据文件
1.在bigdata111上创建和编写config.conf文件并传到112和113上
2.在bigdata111和112和113上启动config.conf文件
启动完成后,3个主机都出现了successfully说明启动成功
3.最后返回bigdata111,启动mongo --host bigdata111 --port 27022然后进行config server的配置和初始化。
初始化结果出现了ok字段,并且configs从secondary变成了primary说明配置成功。
1.在每台主机上创建并编写3个shard.conf配置文件并利用mongod命令启动,可看见每台主机上都会出现三个successfully。
2.在每台主机上都进行Shard集群配置操作,可以看见三个初始化的OK字段,在bigdata111上shard1从secondary变成primary,bigdata112上shard2从secondary变成了primary,bigdata113上shard3从other变成了primary,该结果表明了Shard集群配置成功。
1.在bigdta111和112上创建并编写mongos.conf文件,利用mongos启动,可看见出现了两个successfully即启动成功。
1.在bigdata111上通过mongo --host bigdata111 --port 27021启动mongodb,使用gateway数据库,在分片集群中添加三个Shard,出现了三个OK字段,说明三个Shard都添加成功。
1.还是在bigdata111上进行操作,先切换到数据库config,设置块大小为1M,然后切换到数据库school,向集合user中添加5条文档,最后切换到数据库gateway,利用enableSharding实现数据库school分片功能,出现了OK字段,说明我们成功开启数据库分片功能,即成功对数据库进行分片操作。
2.切换到数据库school创建“id”的索引,再切换到数据库gateway以id为分片键对集合user进行分片操作。
3.在数据库gateway下查看数据库school中集合user的分片信息,从返回的结果中可知chunks中各Shard的分布信息为“shard1 767,shard2 128,shard3 129”,说明每个shard对应存在相应数字的量的chunk,在school.user的信息中,它的分片键是shard key:{“id”:1},shards中的分片信息也与前面添加的操作与之对应,综上可知分片的验证是成功的。