前置依赖
-
添加MongoDB GPG Key
1 2 3
curl -fsSL https://pgp.mongodb.com/server-4.4.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-4.4.gpg \ --dearmor
-
添加mongodb列表,我们使用的系统是Ubuntu 20.04 (Focal)
1
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
-
更新系统软件包
1
sudo apt-get update
MongoDB Server
安装
安装服务
|
|
配置
⚠️ 在配置的过程中尽量使用 DNS 主机名的方式而不是IP地址,防止 IP 改变导致需要更改配置
我们这里的副本集是一个 3 节点的副本架构,3 个节点的内网 IP 分别为 192.168.1.6
、 192.168.1.7
、192.168.1.8
,对应的 hostname 分别为 mongo1
、mongo2
、mongo3
新增主机 IP 地址映射
分别在三台主机下的 /etc/hosts
添加映射
-
打开
/etc/hosts
文件1
sudo vim /etc/hosts
-
在文件中添加如下内容
1 2 3
192.168.1.6 mongo1 192.168.1.7 mongo2 192.168.1.8 mongo3
-
在三台机器上分别使用
ping
命令测试添加的映射是否生效1 2 3
ping mongo1 ping mongo2 ping mongo3
配置 mongod.conf
配置文件
MongoDB 的配置文件路径为 /etc/mongod.conf
,这里我们主要配置3个参数。
-
配置
bindIp
来控制那些人可以访问 mongodb 服务,在/etc/mongod.conf
添加如下内容1 2 3
net: port: 27017 # 修改了 port 内容,不使用默认端口加强安全性 bindIp: 0.0.0.0 # 配置允许远程连接访问
-
配置
replSetName
参数,注意三个服务的配置文件里,这个值是一摸一样的!1 2
replication: replSetName: rs0
-
配置
keyFile
参数让副本成员质检通过 keyFile 进行身份校验-
生成 keyfile 文件到
/data/mongo/mongodb.key
1
openssl rand -base64 756 > /data/mongo/mongodb.key
-
在
/etc/mongod.conf
中配置keyFile
1 2
security: keyFile: /data/mongo/mongodb.key
-
到此,配置完成。
启动
我们这里使用的是 systemd(systemctl) 方式,service 方式可参考官方文档。分别在三个节点中执行如下命令启动 mongo
|
|
初始化集群
-
使用
mongo
连接到服务1
mongo 127.0.0.1:27017
-
初始化集群
1 2 3 4 5 6 7 8
rs.initiate( { _id : "rs0", members: [ { _id: 0, host: "mongo1:27017" }, { _id: 1, host: "mongo2:27017" }, { _id: 2, host: "mongo3:27017" } ] })
-
集群连接用户创建,这里我们创建用户名为
root
的用户1 2
use admin # 切换到 admin 用户 db.createUser({user:'root', pwd:'xxxx', roles: ['root']}) # 创建用户名为 root, 密码为 xxxx, 角色为 root 的用户
测试连接
⚠️ 阿里云等云服务主机需要修改安全组策略开通 27017 服务端口
使用如下命令进行连通性测试:
|
|