做网站公司平台,零基础网站开发要学多久,中卫市网站开发制作,网站系统报价方案模板下载从图中可以看到有四个组件#xff1a;mongos、config server、shard、replica set。mongos#xff1a;数据库集群请求的入口#xff0c;所有的请求都通过mongos进行协调#xff0c;不需要在应用程序添加一个路由选择器#xff0c;mongos自己就是一个请求分发中心#xff… 从图中可以看到有四个组件mongos、config server、shard、replica set。mongos数据库集群请求的入口所有的请求都通过mongos进行协调不需要在应用程序添加一个路由选择器mongos自己就是一个请求分发中心它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口防止其中一个挂掉所有的mongodb请求都没有办法操作。config server顾名思义为配置服务器存储所有数据库元信息路由、分片的配置。mongos本身没有物理存储分片服务器和数据路由信息只是缓存在内存里配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态这样 mongos 就能继续准确路由。在生产环境通常有多个 config server 配置服务器因为它存储了分片路由的元数据这个可不能丢失就算挂掉其中一台只要还有存货 mongodb集群就不会挂掉。shard这就是传说中的分片了。上面提到一个机器就算能力再大也有天花板就像军队打仗一样一个人再厉害喝血瓶也拼不过对方的一个师。俗话说三个臭皮匠顶个诸葛亮这个时候团队的力量就凸显出来了。在互联网也是这样一台普通的机器做不了的多台机器来做。我们要求是做的 6片的集群 参考上面3切片图片 数据存储 用的是内存存储盘提高速度机器配置 32h 260GB内存。一3台机器建立准备工作yum -y install numactl vim lrzszmkdir -p /data/{work,app}mkdir -p /data/work/mongodb/conf调整存储空间大小umount /dev/shm/mount tmpfs /dev/shm -t tmpfs -o size200G [rootlocalhost work]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda3 78G 1.1G 73G 2% //dev/sda1 485M 31M 429M 7% /boot/dev/sdb2 3.6T 33M 3.6T 1% /data/dev/sda2 197G 267M 187G 1% /hometmpfs 200G 0 200G 0% /dev/shmcd /data/work/mongodb/ mkdir {shard1,shard2,shard3,shard4,shard5,shard6,server,mongos} cd /dev/shm/ mkdir {shard1,shard2,shard3,shard4,shard5,shard6,server} 二启动sharding服务 wget http://10.31.67.32:8099/Download/mongodb/mongodb-linux-x86_64-rhel62-3.4.2.tgz tar -zxvf mongodb-linux-x86_64-rhel62-3.4.2.tgz mv mongodb-linux-x86_64-rhel62-3.4.2 /data/app/mongodb#####开启验证需要 任意服务器产生kefile文件 openssl rand -base64 741 keyfile chmod 600 keyfile 注意要上传到集群中每一台服务器/data/work/mongodb/mongo-keyfile cd /data/work/mongodb/conf 吧配置文件上传cat /data/work/mongodb/conf/shard1.conf storage: dbPath: /dev/shm/shard1 journal: enabled: true directoryPerDB: true #syncPeriodSecs: 60 engine: wiredTigerprocessManagement: fork: true pidFilePath: /data/work/mongodb/shard1/mongod.pidnet: port: 27011 http: enabled: false systemLog: destination: file path: /data/work/mongodb/shard1/mongod.log logAppend: true operationProfiling: slowOpThresholdMs: 100 mode: slowOp需要用户认证则开启###security: ## keyFile: /data/work/mongodb/mongo-keyfile #authorization: enabledreplication: oplogSizeMB: 20000 replSetName: rs001每个配置文件 日志路径和存储路径 改下即可3台机器从别启动numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard1.conf numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard2.conf numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard3.conf numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard4.conf numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard5.conf numactl --interleaveall /data/app/mongodb/bin/mongod --shardsvr -f /data/work/mongodb/conf/shard6.conf 以上3台机器全部执行 让 主从仲裁 分别在每台机器上 hostrs001rs002rs003rs004rs005rs00610.33.100.118主仲从主仲从10.33.100.118从主仲从主仲10.33.100.119仲从主仲从主登入 端口27011 -27016 /data/app/mongodb/bin/mongo --port 27016 cfg{ _id:rs006, members:[ {_id:0,host:10.33.100.119:27016,priority:2}, {_id:1,host:10.33.100.117:27016,priority:1},{_id:2,host:10.33.100.118:27016,arbiterOnly:true}] }; rs.initiate(cfg)rs.status()三启动配置服务[rootlocalhost ~]# cat /data/work/mongodb/conf/server.conf storage: dbPath: /dev/shm/server journal: enabled: true directoryPerDB: true #syncPeriodSecs: 60 engine: wiredTigerprocessManagement: fork: true pidFilePath: /data/work/mongodb/server/mongod.pidnet: port: 27020 http: enabled: false systemLog: destination: file path: /data/work/mongodb/server/mongod.log logAppend: truereplication: replSetName: configReplSet /data/app/mongodb/bin/mongod --configsvr -f /data/work/mongodb/conf/server.conf 3台分别 配置服务启动 /data/app/mongodb/bin/mongo --port 27020 rs.initiate( {_id: configReplSet,configsvr: true,members: [{ _id: 0, host: 10.33.100.117:27020},{ _id: 1, host: 10.33.100.118:27020},{ _id: 2, host: 10.33.100.119:27020}]} )四3台分别路由接口cat /data/work/mongodb/conf/mongos.conf processManagement: fork: true pidFilePath: /data/work/mongodb/mongos/mongos.pidnet: port: 27030 http: enabled: falsesystemLog: destination: file path: /data/work/mongodb/mongos/mongos.log logAppend: truesharding: configDB: configReplSet/10.33.100.117:27020,10.33.100.118:27020,10.33.100.119:27020#配置服务的端口和地址。 numactl --interleaveall /data/app/mongodb/bin/mongos -f /data/work/mongodb/conf/mongos.conf 至此每个机器保证8个mongodb 进程。 /data/app/mongodb/bin/mongo --port 27030依次添加6个分片 sh.addShard(rs001/10.33.100.117:27011,10.33.100.118:27011,10.33.100.119:27011)测试分片sh.enableSharding(test)sh.shardCollection(test.Log, { id: 1})use testfor(var i 1; i 100000; i){ db.Log.save({id:i,message:messagei}); } rs.status() db.Log.stats() db.Log.drop() 转载于:https://blog.51cto.com/hzcsky/1913947