MongoDB 安装及复制集配置说明

MongoDB 安装及复制集配置说明

  • MongoDB 安装及复制集配置说明
    • 复制集架构
    • 一个主节点与两个从节点
    • 前期准备
    • 下载安装包
    • RHEL 6、CentOS 6 操作系统安装包下载
    • 创建安装目录
    • RHEL 6、CentOS 6 操作系统解压安装
    • 配置环境变量
    • 设置环境变量:
    • 使环境变量生效
    • 按需编辑刚创建的配置文件中的:
    • 登录
    • 复制集验证
    • 验证数据复制
      • 删除验证数据
    • 主故障自动选举新主功能验证
      • 人为模拟故障
      • 验证
      • 恢复正常状态

复制集架构

PRD环境即便只有一台服务器,为了未来平滑扩容及维护,也应配置为单节点复制集。

复制集应含有奇数个成员。

最基础的复制集架构是由三个成员组成的。这样的架构为复制集提供了冗余与故障切换的余地。根据应用的需求来设计复制集的架构,尽量避免不必要的复杂化。

最基础的复制集架构是由三个节点组成的。在这样的复制集中,三个节点可以都拥有数据集,也可以是由两个拥有数据集的节点加上一个投票节点组成。

一个主节点与两个从节点

包含三个带有数据集的节点组成的复制集拥有:

  • 一个 主节点 。
  • 两个 从节点 。这两个从节点都可以在 选举中 升职为主节点。

这样的架构中除了主节点外还一直拥有两个包含完整数据集的从节点。这样架构的复制集提供了 高可用性 与故障容灾的功能。一旦主节点不可用了,复制集会将一个从节点选举为新的主节点来继续对外服务。之前的主节点将在其可用后再次加入复制集中。

一个主节点、一个从节点和一个投票节点
包含三个节点其中两个带有数据集的复制集拥有:

  • 一个 主节点 。
  • 一个 从节点 。这个从节点可以在 选举 中升职为主节点。
  • 一个 投票节点 。投票节点仅在选举中进行投票。

由于投票节点不包含数据集,所以这样的复制集架构仅有一份数据集的备份。投票节点需要的资源很少

但是,在拥有一个主节点,一个从节点和一个投票节点的复制集架构中,如果主节点 或者 从节点不可用了,复制集还是可以正常提供服务的。如果主节点不可用了,那么复制集会将从节点升职为主节点。

前期准备

准备好服务器,安装好操作系统(64位Linux操作系统,RedHat、CentOS、Ubuntu均可)
配置好服务器网络,多服务器间网络可互通
操作系统上创建好安装配置用户(此文档以 parim 用户为例)
mongodb安装
如无特殊说明,以下各步骤所有服务器均需执行。

下载安装包

Ubuntu 1604 操作系统安装包下载
下载如下安装包,并上传到要安装的服务器 ~/setup 目录:

mongodb-linux-x86_64-ubuntu1604-3.4.10.tgz

在可访问外网的服务器上,可直接使用如下命令创建安装包文件夹并下载安装包:

mkdir -p ~/setup
cd ~/setup
wget http://res.parim.net/yy/setup/mongodb-linux-x86_64-ubuntu1604-3.4.10.tgz

RHEL 6、CentOS 6 操作系统安装包下载

下载如下安装包,并上传到要安装的服务器 ~/setup 目录:

mongodb-linux-x86_64-rhel62-3.4.11.tgz

在可访问外网的服务器上,可直接使用如下命令创建安装包文件夹并下载安装包:

mkdir -p ~/setup
cd ~/setup
wget http://res.parim.net/zjrb/setup/mongodb-linux-x86_64-rhel62-3.4.11.tgz

创建安装目录

按实际情况创建安装目录,并给安装配置用户授予读写权限。

此处以 ~/apps 为例,执行如下命令授权:

mkdir -p ~/apps

安装 mongodb
Ubuntu 1604 操作系统解压安装
进入安装目录,执行解压安装。

cd ~/apps
tar xzvf ../setup/mongodb-linux-x86_64-ubuntu1604-3.4.10.tgz
mv mongodb-linux-x86_64-ubuntu1604-3.4.10/ mongodb

RHEL 6、CentOS 6 操作系统解压安装

进入安装目录,执行解压安装。

cd ~/apps
tar xzvf ../setup/mongodb-linux-x86_64-rhel62-3.4.11.tgz
mv mongodb-linux-x86_64-rhel62-3.4.11/ mongodb

配置环境变量

仅Ubuntu操作系统执行:

[ ! -f ~/.bash_profile ] && cp -vf ~/.profile ~/.bash_profile

以下所有操作系统执行:

设置环境变量:

cat >> ~/.bash_profile << EOF
export MONGODB_HOME=/home/parim/apps/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
EOF

使环境变量生效

source ~/.bash_profile

创建配置、数据、日志文件夹

cd $MONGODB_HOME
mkdir -p conf logs data

此处选择数据文件存放目录为安装目录下的data目录,可按需修改。

创建、修改配置文件
使用如下命令创建配置文件:

cd $MONGODB_HOME/conf

 mongod.conf

for documentation of all options, see:
   http://docs.mongodb.org/manual/reference/configuration-options/

 Where and how to store data.
storage:
  dbPath: /home/parim/apps/mongodb/data
  journal:
    enabled: true
 engine:
  mmapv1:
  wiredTiger:

 where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /home/parim/apps/mongodb/logs/mongo.log

 network interfaces
net:
  port: 30000
  bindIp: 0.0.0.0


how the process runs
processManagement:
  fork: true
  pidFilePath: /home/parim/apps/mongodb/data/mongod.pid
  # timeZoneInfo: /usr/share/zoneinfo

security:
  authorization: enabled
  keyFile: /home/parim/apps/mongodb/conf/.keyFile

operationProfiling:

replication:
   oplogSizeMB: 20480
   replSetName: qimooc
    secondaryIndexPrefetch: 
    enableMajorityReadConcern: 

sharding:

 Enterprise-Only Options:

auditLog:

snmp:

EOF

按需编辑刚创建的配置文件中的:

bindIp
port
dbPath
replSetName
pidFilePath
systemLog.path
oplogSizeMB

生成、拷贝keyFile
在其中一台服务器上执行如下命令,生成keyFile:

openssl rand -base64 102 > MONGODBHOME/conf/.keyFilechmod600 M O N G O D B H O M E / c o n f / . k e y F i l e c h m o d 600 MONGODB_HOME/conf/.keyFile

将刚生成的keyFile复制到其他服务器的对应目录。

scp MONGODB_HOME/conf/.keyFile {other_server_ip}:{ MONGODB_HOME/conf/.keyFile {other_server_ip}:{ MONGODB_HOME}/conf/.keyFile
注意:

执行复制前请缺保其他服务已完成安装及配置文件的修改。
请替换 {other_server_ip} 和 {$MONGODB_HOME} 为对应服务器的 ip 地址和 mongodb 的安装目录。
启动 mongodb
使用如下命令启动 mongodb :

mongod –config MONGODBHOME/conf/mongod.confmongodbmongodconfig M O N G O D B H O M E / c o n f / m o n g o d . c o n f 停 止 m o n g o d b ( 仅 说 明 停 止 命 令 , 无 需 执 行 ) m o n g o d – c o n f i g MONGODB_HOME/conf/mongod.conf –shutdown
配置 mongodb 自动启动
以 parim 用户登录执行:

cat >> ~/bin/sys_init_startup.sh << EOF

mongod –config $MONGODB_HOME/conf/mongod.conf

EOF

chmod 750 ~/bin/sys_init_startup.sh
以 root 用户登录,编辑 /etc/rc.local 文件,在exit 0所在行前面添加如下行:

su - parim -c “/home/parim/bin/sys_init_startup.sh”
注意:如果文件中已有此行,则无需再次添加。

配置复制集及业务数据库
配置复制集前,请确认各服务器已按前述说明安装、配置、启动。

初始化复制集
mongodb启动后,在其中一台服务器上,使用如下命令登录mongodb:

mongo –port 30000
依次执行如下命令:

use admin
rs.initiate()
完成后,提示符中有 PRIMARY> 字样。

为复制集添加节点:

rs.add(“{another_server_ip}:30000”)
如果选择的复制集架构包含投票节点,使用如下命令添加投票节点。

为复制集添加投票节点:

rs.addArb(“{another_server_ip}:30000”)
注意:

将 {another_server_ip} 替换为其他服务器的 IP 地址,如果端口号不是 30000,也做对应修改。
有几台其他服务器,就修改执行几次。
查看复制集状态:

rs.status()
输出json中”members”属性包含所有添加的复制集成员,且 “ok” 属性值为 1 则正常。

创建管理用户
在主服务器上执行如下命令创建管理用户:

use admin
db.createUser(
{
user: “root”,
pwd: “PassW0rd”,
roles: [ { role: “__system”, db: “admin” } ]
}
)

密码请按实际情况修改。

登录

第一个用户创建后,所有服务器都需要登录后才可操作。可使用如下命令登录刚创建的 root 用户:

use admin
db.auth(‘root’,’PassW0rd’);

其他用户登录方法类似,需先选择用户所在的库,此处为admin。

创建业务数据库及用户
以管理用户 root 登录 PRIMARY 库后执行如下命令:

use qimoocdb
db.createUser(
{
“user”: “qimooc”,
“pwd”: “anOtherPassW0rd”,
“roles”:[
{ role: “dbOwner”, “db”: “qimoocdb” },
{ role: “readWrite”, db: “qimoocdb” },
{ role: “read”, db: “qimoocdb” }
]
}
)

复制集验证

复制验证
创建验证数据
以管理用户 root 登录PRIMARY 库后执行如下命令:

use qimoocdb
db.qimoocdb.user.insert({name:”piccy”})
db.qimoocdb.user.find()

验证数据复制

以管理用户 root 登录任意一个 SECONDARY 库后执行如下命令:

rs.slaveOk(true)
use qimoocdb
db.qimoocdb.user.find()

能查到类似如下记录则说明复制成功:

qimooc:PRIMARY> db.qimoocdb.user.find()
{ “_id” : ObjectId(“5a5c4e68869e45e735b5099c”), “name” : “piccy” }

删除验证数据

主故障自动选举新主功能验证

人为模拟故障

以 parim 用户登录当前 PRIMARY 主库库操作系统,手动停止主库:

mongod –config $MONGODB_HOME/conf/mongod.conf –shutdown

验证

登录之前的其他 SECONDARY 库会发现其中一个已经切换为主库。

恢复正常状态

以 parim 用户登录之前手动停止的服务器,启动 mongodb:

mongod –config $MONGODB_HOME/conf/mongod.conf

你可能感兴趣的:(安装配置)