mongodb集群部署

部署结构

一主一从一个投票节点。

准备三台服务器或者单机上用不同的端口,部署方式一致。

192.168.2.188:2718

192.168.2.188:2719

192.168.2.188:2720(arbiter)

 

 

安装mongodb(yum)

更新yum源

vim /etc/yum.repos.d/mongodb-org-4.2.repo

mongodb-org-4.2.repo的内容

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

执行安装

yum install -y mongodb-org

创建目录

mkdir -p /usr/local/mongodb
cd /usr/local/mongodb
mkdir 2718
mkdir 2719
mkdir 2720

cd 2718
mkdir data
touch db.log
vim db.conf

 

db.conf配置内容

//端口
port=2718
//绑定IP,多个用逗号隔开,注意绑定localhost
bind_ip=192.168.2.188,localhost
//日志的目录,注意要具体到文件
logpath=/usr/mongodb/2718/db.log
//数据目录
dbpath=/usr/mongodb/2718/data/
//追加的方式写日志
logappend=true
//pid文件,可选
pidfilepath=/usr/mongodb/2718/.pid
//以守护进程的方式开启mongod的进程
fork=true
//oplog的大小,M为单位,复制集同步数据的文件
oplogSize=1024
//开启日志
journal=true
//复制集的名称
replSet=NC
//开启认证
auth=true
//复制集之间的通信认证文件
keyFile=/usr/mongodb/.keyfile
//本地登录未配置用户的时候,可直接登录,创建用户后失效
setParameter=enableLocalhostAuthBypass=1

三个目录均创建改文件,注意端口和IP根据需要,对应进行修改。

创建keyFile,注意keyfile会忽略全部的空格,而且要匹配[0-9a-zA-Z+/],最大长度不能超过1000,建议不要使用太长,在复制集直接通信要做对比,以免影响性能。

openssl rand -base64 102

 .keyfile注意要设置权限600

要不然会提示

ERROR: child process failed, exited with error number 1

查看日志,可以看到

permissions on /xxx/.keyfile are too open

chmod 600 .keyfile

产生的内容保存到conf对应的目录下。

配置完成后,启动mongod。

mongod -f /usr/mongodb/2718/db.conf
mongod -f /usr/mongodb/2719/db.conf
mongod -f /usr/mongodb/2720/db.conf

启动后,登录任意一个服务,注意要用localhost或者12.7.0.01登录,否则没办法进行用户创建。

mongo 127.0.0.1:2718/admin

配置复制集信息

关于一些参数的说明

“_id":"NC",复制集的名称,与上面配置mongod的conf对应,注意这个名称要保持一致。

”members":[]复制集组成的成员

“arbiterOnly”:标志该节点未投票节点,默认是false

"votes":1,具有投票权,0不能投票,最多只能有7个节点可以参与投票,

config={
	"_id" : "NC",
	"members" : [
		{
			"_id" : 0,
			"host" : "192.168.2.188:2718",
			"votes" : 1
		},
		{
			"_id" : 1,
			"host" : "192.168.2.188:2719",
			"arbiterOnly" : false,
			"votes" : 1
		},
		{
			"_id" : 2,
			"host" : "192.168.2.188:2720",
			"arbiterOnly" : true,
			"votes" : 1
		}
	]
}

初始化复制集

rs.initiate(config) 

执行完成后可以通过命令

rs.status()

可以查看到当前复制集的状态

创建超管进行授权

db.createUser({
   "user":"root",
   "pwd":"root",
   "roles":[{
          "role":"root",
          "db":"admin"
     }] 
})

重新认证

db.auth("root","root")

创建其他的数据库的用户,注意,当前在哪个库创建用户,那么创建的用户,只对当前的库有效

use nc

db.createUser({ "user":"nc", "pwd":"nc", "roles":[{ "role":"readWrite", "db":"nc" }] })

 

posted @ 2019-11-15 15:54  牧羊人-hunter  阅读(158)  评论(0编辑  收藏  举报