1)搭建mongonb
1节点规划三节点
172.16.3.33 后面规划为PRIMARY
172.16.3.34 后面规划为SECONDARY
172.16.3.35 后面规划为SECONDARY
2三节点部署mongodb
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.5.tgz
mv mongodb-linux-x86_64-rhel70-4.4.5/ mongodb4
cd mongodb4/
mkdir -p ./db
mkdir -p ./logs
touch ./logs/mongodb.log
vi mongodb.conf
dbpath=/mnt/keydom/db/mongodb4/db #数据文件保存地址
logpath=/mnt/keydom/db/mongodb4/logs/mongodb.log #日志保存地址
port=27017 #端口
fork=true #是否后台启动
#auth= #是否开启权限,访问需要用户名和密码
bind_ip=0.0.0.0 任何IP克登录
logappend=true
配置环境变量:
vi /etc/profile
export PATH=$PATH:/mnt/keydom/db/mongodb4/bin
source /etc/profile
3启动mongodb
进入mongodb bin目录
cd /bin
./mongod --config /mnt/keydom/db/mongodb4/mongodb.conf
登录mongodb 配置用户认证:
use admin
db.createUser(
{
user:'admin',
pwd:'Admin',
roles:['userAdminAnyDatabase']
}
)
三节点做同样配置:
配置完成之后,分别在三个节点上执行如下命令通过加载文件配置来启动MongoDB服务:
./mongod --config /mnt/keydom/db/mongodb4/mongodb.conf
至此,进行一些配置。
2 副本集配置
三个节点vi mongodb.conf配置文件分别添加:
# 设置副本集名称,在各个配置文件中,其值必须相同
replSet=rs0 #副本集名称
3个MongoDB实例都已经以副本集方式启动,重启 三个节点 mongodb ,但它们彼此之间现在还不会进行通信,仍需要
1副本集初始化:
通过 Shell 连接到任意一个MongoDB实例,配置副本集并配置权重,根据权重选举主节点 ,执行 rs.initiate() 方法对副本集进行初始化。
执行
conf=
{
"_id" : "rs0",
"members" : [
{ "_id" : 0, "host" : "172.16.3.33:27017",priority:5 },
{ "_id" : 1, "host" : "172.16.3.34:27017",priority:1},
{ "_id" : 2, "host" : "172.16.3.35:27017",priority:1 }
]
}
rs.initiate(conf) 初始化
2 创建认证keyFile文件
1) 先停掉所有SECONDARY节点的MongoDB服务,然后再停掉PRIMARY节点的MongoDB服务,并在PRIMARY节点所在服务器上创建keyFile文件,并赋予权限:
openssl rand -base64 666 > /mnt/keydom/db/mongodb/bin/keyfile
chmod 600 /mnt/keydom/db/mongodb/bin/keyfile
2) 将生成的keyFile文件拷贝到其他节点服务器上,并修改文件的操作权限为 600。
3) 修改三个节点配置文件添加
keyFile=/mnt/keydom/db/mongodb/bin/keyfile
4启动三个节点的mongodb数据库:
进入 mongodb bin目录下./mongod --config /mnt/keydom/db/mongodb/mongodb.conf
到此副本集配置完成
验证
经过验证三节点正常运行后
172.16.3.33 为 PRIMARY 主节点
172.16.3.34 为 SECONDARY副本
172.16.3.35 为 SECONDARY副本
会发现172.16.3.33 为 PRIMARY 主节点 主节点进行数据库操作后
172.16.3.34 、172.16.3.35 为 SECONDARY副本 上数据库信息同步更新
测试当172.16.3.33 服务挂点后 172.16.3.34变为PRIMARY 主节点。