Linux下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

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

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") #添加仲裁节点

时间: 2024-10-23 19:22:23

Linux下MongoDB副本集部署步骤详解的相关文章

Linux下配置Shadowsocks服务器的步骤详解

说明: Shadowsocks是一个轻量级的socks5代理软件, 而hadowsocks-libev是一个基于shadowsocks 协议的socks5代理软件, 相比原版,hadowsocks-libev程序体积小.高并发.资源占用更少.跨平台.完全兼容shadowsocks协议. hadowsocks-libev包括三个模块: ss-server:服务器端,部署在远程服务器,提供shadowsocks服务. ss-local:客户端,提供本地socks5协议代理. ss-redir:客户端

Linux安装Mongodb改良版tokutek步骤详解

系统环境:CentOS x86_64 tokutek为mongodb的改良版,在很多程度上解决了mongodb的不足之处,如磁盘占用空间等. 开放端口: -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 27017 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p

linux下httpd增加模块的步骤详解

通常我们在部署LAMP时,安装完httpd服务,用我们整理的httpd.conf替换默认的httpd.conf重启httpd服务时可能会遇到某些模块未编译的情况,第一反应是要重新编译,但是apache是支持动态扩展模块的,也就是说不需要重新编译整个apache,就像的PHP phpize工具一样,能够单独编译某个扩展,并加入到已有的环境中. 操作步骤: 1.下载相应的httpd-x.x.xx源码 2.安装扩展(以module_file_cache为例)  代码如下 复制代码 #cd httpd-

Linux下pure-ftpd编译安装配置步骤详解

mkdir -p /home/src cd /home/src ## 下载源码包 wget -c http://lnmp.xiaobai.com/1.0/src/pure-ftpd-1.0.29.tar.gz ## 解压 tar zxvf pure-ftpd-1.0.29.tar.gz ## 进入目录 cd pure-ftpd-1.0.29 ## 编译安装 ./configure –prefix=/usr/local/webserver/pure-ftpd –with-everything –w

linux下安装ftp服务器vsftpd步骤详解

先检查一下,有没有vsftp服务器 rpm -qa | grep *ftp* 如果有的话,请将其卸载 安装vsftpd服务器 yum -y install vsftpd 修改配置文件/etc/vsftpd/vsftpd.conf如下几项 #禁止匿名访问 anonymous_enable=NO 限制指定用户可以访问 其他用户不能访问文件尾部修改成如下 userlist_enable=YES tcp_wrappers=YES userlist_deny=no userlist_file=/etc/v

linux下coreseek 安装及使用方法详解

一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软件,支持高速建立索引.有很强的扩展性.支持分布式检索,支持不同的搜索模式('完全匹配','短语匹配','任一匹配'). 一.coreseek 安装 1:安装mmseg分词库 wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-3.2.14-beta.tar.gz tar -

Linux下软件包的安装与管理详解

一 源码安装方式 由于linux操作系统开放源代码,因而在其上安装的软件大部分也都是开源软件,例如apache.tomcat.php等软件.开源软件基本都提供源码下载,源码安装的方式:源码安装的好处是用户可以自己定制软件功能,安装需要的模块,不需要的功能可以不用安装,此外,用户还可以自己选择安装路径,方便管理,卸载软件也很方便,只需删除对应的安装目录即可.没有windows所谓的注册表之说. 源码安装软件一般有以下几个步骤组成:下载解压源码.分析安装平台环境(ifconfigure).编译安装软

Linux下同步工具inotify+rsync使用详解

1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的"Rsync演算法"来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.所以通常可以作为备份工具来使用. 运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据:也可以多个Rsync server备份一个client的数

linux下的yum命令原理和详解_Linux

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt