一、环境准备

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)

服务器55DB_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增加安全机制

//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()