ip地址 端口 角色 备注 192。168。52。18 27017hrPrimary节点 192。168。52。19 27017hrSecondary节点 192。168。52。20 27017hrSecondary节点 2系统初始化 关闭防火墙 systemctlstopfirewalld systemctldisablefirewalld 关闭selinux sedisenforcingdisabledetcselinuxconfig永久 setenforce0临时 关闭THP echoneversyskernelmmtransparenthugepageenabled echoneversyskernelmmtransparenthugepagedefrag vietcrc。drc。local echoneversyskernelmmtransparenthugepageenabled echoneversyskernelmmtransparenthugepagedefrag 设置内核参数,避免疯狂交换: echo0procsysvmzonereclaimmode关闭zonereclaim模式,可以从其他zone或NUMA节点回收内存(临时修改,重启失效) sysctlwvm。zonereclaimmode0永久设置 设置vm。swappiiness为1,禁用交换虚拟内存 sysctlwvm。swappiness1 时间同步 yuminstallntpdatey ntpdatetime。windows。com echo5usrsbinntpdatentp。api。bzdevnull21varspoolcronroot 修改文件描述符 ulimitSHn65535 catetcsecuritylimits。confEOF softnproc65535 hardnproc65535 softnofile655350 hardnofile655350 EOF sedis409665535getcsecuritylimits。d20nproc。conf3安装部署mongodb集群3。1、下载mongodb并解压 wgetchttps:fastdl。mongodb。orglinuxmongodblinuxx86644。0。8。tgz mkdirdata tarxzfmongodblinuxx86644。0。8。tgzCdata cddata mvmongodblinuxx86644。0。8mongodb cdmongodb mkdirdblogconf3。2、添加环境变量 vietcprofile exportPATHdatamongodbbin:PATH sourceetcprofile3。3、配置文件 catconfmongodb。conf 数据库文件位置 dbpathdatamongodbdb 日志文件位置 logpathdatamongodblogmongodb。log 以追加方式写入日志 logappendtrue 是否以守护进程方式运行 forktrue bindip0。0。0。0 port27017 表示是一个配置服务器 configsvrtrue 配置服务器副本集名称 replSettest3。4、启动mongodb catdatamongodbmongodb。sh !binbash datamongodbbinmongodfdatamongodbconfmongodb。conf chmodxdatamongodbmongodb。sh datamongodbmongodb。sh3。5、配置副本集群 mongoport27017登陆mongo useadmin config{id:test, members:〔 {id:1,host:192。168。52。18:27017}, {id:2,host:192。168。52。19:27017}, {id:3,host:192。168。52。20:27017}〕 }; rs。initiate(config) rs。status()3。6、配置shard集群3。6。1、shard1集群搭建 分别在三台服务器上操作如下命令: mkdirdatamongodbshard1p mkdirdatamongodbshard2p mkdirdatamongodbshard3p 添加配置文件shard37017。conf: vidatamongodbconfshard37017。conf dbpathdatamongodbshard1 bindip0。0。0。0 port37017 forktrue logpathdatamongodbshard1shard1。log replSetshard1 shardsvrtrue 启动shard1集群: datamongodbbinmongodfdatamongodbconfshard37017。conf mongoport37017 config{id:shard1, protocolVersion:1, members:〔 {id:1,host:192。168。52。18:37017}, {id:2,host:192。168。52。19:37017}, {id:3,host:192。168。52。20:37017} 〕 }; rs。initiate(config) rs。status()3。6。2、shard2集群搭建 添加配置文件shard37018。conf: vidatamongodbconfshard37018。conf dbpathdatamongodbshard2 bindip0。0。0。0 port37018 forktrue logpathdatamongodbshard2shard2。log replSetshard2 shardsvrtrue 启动shard2集群: datamongodbbinmongodfdatamongodbconfshard37018。conf mongoport37018 config{id:shard2, protocolVersion:1, members:〔 {id:1,host:192。168。52。18:37018}, {id:2,host:192。168。52。19:37018}, {id:3,host:192。168。52。20:37018} 〕 }; rs。initiate(config) rs。status()3。6。3、shard3集群搭建 添加配置文件shard37019。conf: vidatamongodbconfshard37019。conf dbpathdatamongodbshard3 bindip0。0。0。0 port37019 forktrue logpathdatamongodbshard3shard3。log replSetshard3 shardsvrtrue 启动shard3集群: datamongodbbinmongodfdatamongodbconfshard37019。conf mongoport37019 config{id:shard3, protocolVersion:1, members:〔 {id:1,host:192。168。52。18:37019}, {id:2,host:192。168。52。19:37019}, {id:3,host:192。168。52。20:37019} 〕 }; rs。initiate(config) rs。status()3。7、配置和启动路由节点3。7。1、配置路由节点 mkdirdatamongodbroutelogsp vidatamongodbconfroute。conf port17017 bindip0。0。0。0 forktrue logpathdatamongodbroutelogsroute。log configdbtest192。168。52。18:27017,192。168。52。19:27017,192。168。52。20:27017 datamongodbbinmongosfdatamongodbconfroute。conf3。7。2、mongos(路由)中添加分片节点 mongoport17017 mongossh。status() mongossh。addShard(shard1192。168。52。18:37017,192。168。52。19:37017,192。168。52。20:37017); mongossh。addShard(shard2192。168。52。18:37018,192。168。52。19:37018,192。168。52。20:37018); mongossh。addShard(shard3192。168。52。18:37019,192。168。52。19:37019,192。168。52。20:37019); mongossh。status() 3。7。3、开启数据库和集合分片(指点片键) 为数据库开启分片功能 sh。enableSharding(lgresume) 为指定集合开启分片功能 sh。shardCollection(lgresume。lgresumedatas,{name:hashed})3。7。4、向集合中插入数据测试 mongoport27017 for(vari1;i1000;i){ db。lgresumedatas。insert({name:testi, salary:(Math。random()20000)。toFixed(2)}); }3。8、单节点添加安全认证 mongoport27017 db。createUser({ user:root, pwd:123456, roles:〔{role:root,db:admin}〕 }) 切换到lgresume库对用户的添加: db。createUser({ user:lagougx, pwd:abc321, roles:〔{role:readWrite,db:lgresume}〕 })3。9、以auth方式启动mongod vidatamongodbconfmongodb。conf authtrue datamongodbbinmongodfdatamongodbconfmongodb。conf 验证用户: useadmin db。auth(root,123456)3。10、分片集群添加安全认证 yuminstallpsmiscy pkillmongo opensslrandbase64756datamongodbmyKey。file chmod600datamongodbmyKey。file scprdatamongodbmyKey。fileroot192。168。52。19:datamongodb scprdatamongodbmyKey。fileroot192。168。52。20:datamongodb 配置节点集群和分片节点集群开启安全认证和指定密钥文件: catdatamongodbconfmongodb。conf authtrue keyFiledatamongodbmyKey。file catdatamongodbconfshard37017。conf authtrue keyFiledatamongodbmyKey。file catdatamongodbconfshard37018。conf authtrue keyFiledatamongodbmyKey。file catdatamongodbconfshard37019。conf authtrue keyFiledatamongodbmyKey。file 在路由配置文件中设置密钥文件: vidatamongodbconfroute。conf keyFiledatamongodbmyKey。file 创建mongostartup。sh脚本: !binbash datamongodbbinmongodfdatamongodbconfmongodb。conf datamongodbbinmongodfdatamongodbconfshard37017。conf datamongodbbinmongodfdatamongodbconfshard37018。conf datamongodbbinmongodfdatamongodbconfshard37019。conf datamongodbbinmongosfdatamongodbconfroute。conf 如果您喜欢本文,就请动动您的发财手为本文点赞评论转发,让我们一起学习更多运维相关知识,最后请记得关注我。