Mongodb副本集集群搭建
一、环境准备
1.1.主机信息(机器配置要求见硬件及开发标准规范文档V1.0)
序号 |
主机名 |
IP |
1 |
DB_01 |
10.202.105.52 |
2 |
DB_02 |
10.202.105.53 |
3 |
DB_03 |
10.202.105.54 |
4 |
DB_04 |
10.202.105.181 |
|
|
|
服务器52(DB_01) |
服务器53(DB_02) |
服务器54(DB_03) |
服务器55(DB_04) |
primary |
secondry |
secondry |
hidden(阿里云一般都是主 备 Hidden三节点) 这里暂时忽略异常情况选举 其实和zk选举一样的道理 |
端口分配:(端口可以根据实际情况进行更改)
mongos:20000
1.2.软件版本
组件 |
版本 |
备注 |
MongoDB |
3.4.X |
|
1.3.软件下载
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.7.tgz
二、软件部署
2.1软件安装
useradd mongodb
passwd mongodb
chown -R mongodb:mongodb /app/mongodb/
chown -R mongodb:mongodb /data/mongodb/
并用mongo用户在一台机器上生成集群间验证文件并同步文件到其余两台机器相应位置赋予同样权限
openssl rand -base64 100 > /data/keyFile/keyFilers0.key
chmod 600 /data/keyFile/keyFilers0.key
1、新建目录(四台机器均操作) mkdir -p /data/mongodb/conf mkdir -p /data/mongodb/data mkdir -p /data/mongodb/log
2、安装Mongodb(三台机器均操作,目录为/app/mongo/…<mongo为超链接>) tar –zxvf mongodb-linux-x86_64-rhel70-3.4.7 tar.gz
然后配置环境变量
vim /etc/profile # 内容 export MONGODB_HOME=… export PATH=$MONGODB_HOME/bin:$PATH # 使立即生效 source /etc/profile
|
2.2配置文件
1、打开mongod.conf,修改以下配置项:(四台机器均操作)
vi /data/mongodb/conf/mongod.conf
systemLog: destination: file logAppend: true logRotate: reopen path: /data/mongodb/log/mongod.log # Where and howto store data. ##########operationProfilingOptions storage: dbPath: /data/mongodb/data journal: enabled: true directoryPerDB: true engine: wiredTiger #########storage.wiredTigerOptions wiredTiger: engineConfig: cacheSizeGB: 2 directoryForIndexes: true collectionConfig: blockCompressor: zlib indexConfig: prefixCompression: true operationProfiling: slowOpThresholdMs: 100 mode: "all" processManagement: fork: true pidFilePath: /data/mongodb/log/mongod.pid net: port: 20000 bindIp: 0.0.0.0 maxIncomingConnections: 20000 security: #authorization: enabled #clusterAuthMode: keyFile #keyFile: /data/keyFile/keyFilers0.key #keyFile: /srv/mongodb/keyfile javascriptEnabled: true setParameter: enableLocalhostAuthBypass: false authenticationMechanisms: SCRAM-SHA-1 replication: ##oplog大小 oplogSizeMB: 10000 replSetName: repl sharding: clusterRole: configsvr #configsvr or shardsvr |
2.3初始化服务及副本集
1.启动四台服务器的mongod server并配置副本集(四台均启动) mongod -f /data/mongodb/conf/mongod.conf
登录任意一台配置服务器,初始化配置副本集 #连接 mongo --port 20000
use admin #config变量 cfg={_id:"repl",members:[ {_id:0,host:"10.202.105.52:20000",priority:2}, {_id:1,host:"10.202.105.53:20000",priority:1}, {_id:2,host:"10.202.105.54:20000",priority:1}, {_id:3,host:"10.202.105.181:20000",priority:0,hidden:true}]} #初始化副本集 rs.initiate(cfg) 其中,"_id" : "cfg"应与配置文件中配置的 replicaction.replSetName 一致,"members" 中的 "host" 为四个节点的 ip 和 port
|
2.4增加安全机制
http://blog.csdn.net/u011191463/article/details/68485529 //mongo用户类型引导
http://www.jianshu.com/p/f585f71acbf2 //用户添加步骤
1)在Router下,切换到admin库,用db.createUser(用户名,密码)添加好认证帐号,再切换到目标数据库做类似的帐号添加操作。步骤如下 创建用户 use admin db.createUser( { user: "admin", pwd: "123456", roles: [ {role: "userAdminAnyDatabase",db: "admin"}, { role: "readAnyDatabase", db:"admin" }, { role: "dbOwner", db:"admin" }, { role: "userAdmin", db:"admin" }, { role: "root", db: "admin"}, { role: "clusterMonitor", db:"admin" }, { role: "dbAdmin", db:"admin" }, ] } ) 用户名为admin,密码为123456 验证用户db.auth("admin","123456"); 出现1则为验证成功 再切换到zhaobo此数据库,添加用户 db.createUser( { user: "zhaobo", pwd: "123456", roles: [ { role: "dbOwner", db:"zhaobo" }, { role: "userAdmin", db:"zhaobo" }, { role: "dbAdmin", db:"zhaobo" }, ] } ) 验证用户db.auth("zhaobo","123456"); 出现1则为验证成功 2)生成keyfile,可以使用如下命令:(在开始安装之前已经生成就不需要此步骤了) openssl rand -base64 100 > /data/keyFile/keyFilers0.key 将keyfile文件复制到各服务器备用,注意:需要给keyfile设置好权限,权限必须为600。 chmod 600 /data/keyFile/keyFilers0.key 3)杀掉所有的mongod进程。去掉配置文件的sectury下面的注释,本文以配置文件方式设置启动参数,启动各服务器
5)完成以后就可以使用上面配置的帐号密码访问Router了。在客户端Robo 3T测试成功 本地登陆数据库之后验证db.auth("admin","123456"); 即可正常使用 mongodb的启动顺序是, mongos -f /data/mongodb/conf/mongos.conf
关闭mongos use admin db.shutdownServer() |