搭建mongo副本集群

一、mongodb副本集原理及功能

1、特点
高可用,将数据写入时快速复制到另一个独立节点,接受写故障时自动选举一个新的节点替代

数据分发:将数据从一个区域复制到另一个区域,减少另一个区域的读延时

读写分离:不同类型的压力分别在不同节点上执行

异地容灾:在数据中心故障的时候快速切换到异地

异步复制:通过内部的oplog进行异步复制

raft功能:只负责投票选举功能。

2、结构
一个经典的复制集由3个以上具有投票权的节点组成,包括:

一个主节点(primary): 接受写入操作和选举时投票

两个或多个从节点(secondary):复制主节点上的新数据和选举时投票

arbiter(投票节点)

3、选举策略
1)具备投票权的节点两两互相发送心跳

当5次心跳未收到时判断为节点失联

如果失联的是主节点。从节点会发起选举,选出新的主节点。

如果失联的从节点则不会产生新的选举

选举基于raft一致性算法,选举成功的必要条件是大多数投票节点存活(存活少的话失败)

2)影响选举的因素

整个集群必须有大多数节点存活:被选举为主节点的节点必须:

能够与多数节点建立链接

具有较新的 oplog

具有较高的优先级(如果有配置)

二、搭建mongodb 副本集

1、环境信息

版本: mongodb7.0.0
节点划分:
10.10.180.101 mongo01#主节点
10.10.180.104 mongo02 #副本集1
10.10.180.60 mongo03 #副本集2

2、配置域名解析
cat >>/etc/hosts<<EOF
10.10.180.101 mongo01
10.10.180.104 mongo02
10.10.180.60 mongo03
EOF
3、下载安装 mongodb (三个节点都要装)
#下载依赖包
yum install libcurl openssl xz-libs net-tools gcc-c++ tcl zlib-devel -y 

#下载mongodb安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.0.tgz

#解压并放到指定目录
tar xf mongodb-linux-x86_64-rhel70-7.0.0.tgz
mv mongodb-linux-x86_64-rhel70-7.0.0 /usr/local/
cd /usr/local/

#软连接
ln -s mongodb-linux-x86_64-rhel70-7.0.0/ mongodb70

#配置环境变量
echo 'export PATH=/usr/local/mongodb70/bin:$PATH' >>/etc/profile
source /etc/profile

#创建用户和目录并授权
mkdir -p /mongo/data/
mkdir -p /mongo/log/
useradd mongod
passwd mongod   #密码 mongod
chown -R mongod:mongod /mongo/

#添加配置文件
cat >/etc/mongod.conf<<EOF
storage:
   dbPath: /mongo/data

systemLog:
   destination: file
   path: /mongo/log/mongo.log
   logAppend: true

processManagement:
   fork: true

net:
   port: 27017
   bindIp: 0.0.0.0

replication:
   oplogSizeMB: 102400
   replSetName: cs01
EOF

#关闭selinux和防火墙
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service
systemctl disable firewalld.service

#启动
mongod --config /etc/mongod.conf

#查看是否启动成功
netstat -lntup |grep mongod
4、安装 mongosh (mongo命令在6.0不支持)
#下载安装包并解压到指定目录
wget https://downloads.mongodb.com/compass/mongosh-1.10.6-linux-x64-openssl11.tgz
tar xf mongosh-1.10.6-linux-x64-openssl11.tgz
mv mongosh-1.10.6-linux-x64-openssl11 /usr/local/
cd /usr/local/

#做软连接并添加到环境变量
ln -s mongosh-1.10.6-linux-x64-openssl11/ mongosh
cd mongosh/bin/
chmod +x mongosh
cp mongosh /usr/local/bin/
cp mongosh_crypt_v1.so /usr/local/lib/
ln -s $(pwd)/bin/* /usr/local/bin/

#查看依赖如果不是1.1.1请用下面方案升级到对应版本
openssl version

#安装指定openssl包
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate
mv openssl-1.1.1t.tar.gz   /usr/local/src/
cd /usr/local/src/
tar xf openssl-1.1.1t.tar.gz 
cd openssl-1.1.1t

#编译
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib-dynamic
make && make install

#备份原来的openssl文件,可通过whereis openssl查询位置,如下:
mv /usr/bin/openssl /usr/bin/openssl.old

#用新的文件替换旧的文件,执行命令如下:
ln -sf /opt/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/src/openssl-1.1.1t/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/src/openssl-1.1.1t/libssl.so.1.1 /usr/lib64/libssl.so.1.1

#用mongodb链接
mongosh --host mongodb01 --port 28015
5、登录mongo初始化集群
rs.initiate( {
   _id : "cs0",
   members: [
     { _id: 0, host: "mongo01:27017" },
     { _id: 1, host: "mongo02:27017" },
     { _id: 2, host: "mongo03:27017" }
   ]
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值