mongodb副本集|Linux下MongoDB副本集部署步骤详解

时间:2020-03-22  来源:MongoDB  阅读:
说明: 有三台服务器,已经安装好了MongoDB数据库,具体信息如下: MongoDB版本:mongodb-linux-x86_64-2.6.11 MongoDB安装目录:/usr/local/mongodb MongoDB数据库目录:/home/data/mongodb/mongodb_data MongoDB日志目录:/home/data/mongodb/mongodb_log MongoDB配置文件:/usr/local/mongodb/mongodb.conf 三台服务器IP地址: 192.168.0.8 192.168.0.9 192.168.0.10 实现目的: 对三台服务器进行部署,实现副本集功能。 具体操作: 一、确定副本集名称、主从节点、配置文件、启动脚本信息 1、定义副本集名称为:osyunwei 2、主节点为:192.168.0.8 3、两台从节点为: 192.168.0.9 192.168.0.10 4、确保三台副本集服务器上的配置文件完全相同,如下: 第一种写法:官方推荐、适合2.6以后的版本 vi /usr/local/mongodb/mongodb.conf #编辑 systemLog: destination: "file" path: "/home/data/mongodb/mongodb_log/mongodb.log" logAppend: true storage: journal: enabled: true dbPath: "/home/data/mongodb/mongodb_data/" directoryPerDB: true processManagement: fork: true pidFilePath: "/usr/local/mongodb/mongo.pid" net: port: 27017 http: enabled: true RESTInterfaceEnabled: true #security: # keyFile: "/usr/local/mongodb/keyfile" # clusterAuthMode: "keyFile" # authorization: "enabled" replication: replSetName: "osyunwei" :wq! #保存退出 第二种写法:适用所有版本 vi /usr/local/mongodb/mongodb.conf #编辑 port=27017 dbpath=/home/data/mongodb/mongodb_data/ logpath=/home/data/mongodb/mongodb_log/mongodb.log pidfilepath=/usr/local/mongodb/mongo.pid fork=true logappend=true shardsvr=true directoryperdb=true #auth=true #keyFile =/usr/local/mongodb/keyfile replSet =osyunwei :wq! #保存退出 注意:以上两种配置文件的写法都可以。 5、确保三台副本集服务器上的启动脚本完全相同,如下: vi /etc/init.d/mongod ulimit -SHn 655350 #!/bin/sh # chkconfig: - 64 36 # description:mongod case $1 in start) /usr/local/mongodb/bin/mongod --maxConns 20000 --config /usr/local/mongodb/mongodb.conf ;; stop) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()" #/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth("system", "123456");db.shutdownServer()" ;; status) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.stats()" #/usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth("system", "123456");db.stats()" ;; esac :wq! #保存退出 二、对主节点进行配置 1、/usr/local/mongodb/bin/mongo #进入主节点192.168.0.8 jquery1448439808890="96" original="http://filesimg.111cn.net/2015/11/25/20151125162445977.jpg" loaded="true" size-full="" src="http://filesimg.111cn.net/2015/11/25/20151125162445977.jpg" /> rs.initiate() rs.conf() #初始化副本集,设置本机为主节点PRIMARY 2、添加副本集从节点 rs.add("192.168.0.9:27017") rs.add("192.168.0.10:27017") 3、设置节点优先级 cfg = rs.conf() #查看节点顺序 cfg.members[0].priority = 1 cfg.members[1].priority = 1 cfg.members[2].priority = 2 #设置_ID为2的节点为主节点 rs.reconfig(cfg) #使配置生效 exit #退出控制台 说明: MongoDB副本集通过设置priority决定优先级,默认优先级为1,值为1到1000之间的数字,priority值是0到100之间的数字,数字越大优先级越高,priority=0,则此节点永远不能成为主节点primay。 cfg.members[0].priority =1参数,中括号里的数字是执行rs.conf()查看到的节点顺序,第一个节点是0,第二个节点是1,第三个节点是2,以此类推。 三、分别对两台从节点进行配置 /usr/local/mongodb/bin/mongo #进入从节点192.168.0.9/10 jquery1448439808890="99" original="http://filesimg.111cn.net/2015/11/25/20151125162449492.jpg" loaded="true" size-full="" src="http://filesimg.111cn.net/2015/11/25/20151125162449492.jpg" /> db.getMongo().setSlaveOk() #设置从节点为只读数据库 exit #退出控制台 四、设置数据库账号,开启登录验证 1、设置数据库账号 在主节点服务器192.168.0.8上面操作 /usr/local/mongodb/bin/mongo #进入主节点192.168.0.8 show dbs #列出所有数据库 use admin #切换到admin数据库,添加的账号才是管理员账号。 show collections db.system.users.find() #添加两个管理员账号,一个系统管理员:system 一个数据库管理员:administrator db.createUser({user:"system",pwd:"123456",roles:[{role:"root",db:"admin"}]}) #添加系统管理员账号,用来管理用户 db.auth("system","123456") #添加管理员用户认证,认证之后才能管理所有数据库 db.createUser({user:"administrator",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) #添加数据库管理员,用来管理所有数据库 db.auth("administrator","123456") #添加管理员用户认证,认证之后才能管理所有数据库 exit #退出 #用刚才创建的账号进行登录 /usr/local/mongodb/bin/mongo -u system -p 123456 --authenticationDatabase admin exit #退出 /usr/local/mongodb/bin/mongo -u administrator -p 123456 --authenticationDatabase admin exit #退出 2、开启登录验证 在主节点服务器192.168.0.8上面操作 cd /usr/local/mongodb #进入mongodb安装目录 openssl rand -base64 21 > keyfile #创建一个keyfile(使用openssl生成21位base64加密的字符串) chmod 600 /usr/local/mongodb/keyfile #修改文件权限为600 cat /usr/local/mongodb/keyfile #查看刚才生成的字符串,做记录,后面要用到。 注意:上面的数字21,最好是3的倍数,否则生成的字符串可能含有非法字符,认证失败。 3、设置配置文件 分别在所有节点上面操作 192.168.0.8/9/10 配置文件/usr/local/mongodb/mongodb.conf取消注释 第一种写法: security: keyFile: "/usr/local/mongodb/keyfile" clusterAuthMode: "keyFile" authorization: "enabled" 第二种写法: auth=true keyFile =/usr/local/mongodb/keyfile 启动脚本使用下面的代码(注释原来的,启用之前注释掉的) /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth("system", "123456");db.shutdownServer()" /usr/local/mongodb/bin/mongo 127.0.0.1:27017/admin --eval "db.auth("system", "123456");db.stats()" 4、设置权限验证文件 先进入主节点服务器192.168.0.8,查看cat /usr/local/mongodb/keyfile #查看刚才生成的字符串,做记录 再分别进入两台从节点服务器192.168.0.9/10 vi /usr/local/mongodb/keyfile #输入上一步查看到的字符串 :wq! #保存退出 chmod 600 /usr/local/mongodb/keyfile #修改文件权限为600 五、验证副本集 分别重启三台副本集服务器 /usr/local/mongodb/bin/mongo -u system -p 123456 --authenticationDatabase admin #登录到控制台 rs.status() #副本集状态查看 exit #退出 当主节点出现故障的时候,在两个从节点上会选举出一个新的主节点,故障恢复之后,之前的主节点会变为从节点。 至此,Linux下MongoDB副本集部署完成。 扩展阅读: 官方文档: http://docs.mongodb.org/manual/reference/configuration-options/ rs.remove("ip:port"); #删除副本 /usr/local/mongodb/bin/mongo --host 192.168.0.9 #远程连接服务器 默认情况下,mongodb不启用验证的。 单服务器,启动时添加--auth参数开启验证。 副本集服务器,开启--auth参数的同时,必须指定keyfile参数,节点之间的通讯基于该keyfile,key长度必须在6到1024个字符之间,最好为3的倍数,不能含有非法字符。 重新设置副本集 rs.stepDown() cfg = rs.conf() cfg.members[n].host= "new_host_name:prot" rs.reconfig(cfg) 副本集所有节点服务器总数必须为奇数,服务器数量为偶数的时候,需要添加一个仲裁节点,仲裁节点不参数副本集,只有选举权。 rs.addArb("192.168.0.11:27017") #添加仲裁节点

mongodb副本集|Linux下MongoDB副本集部署步骤详解

http://m.bbyears.com/shujuku/88793.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新