Ubuntu部署mongodb集群

参考文档:https://mp.weixin.qq.com/s?__biz=MzIwNjg3NTI0Mg==&mid=2247485395&idx=1&sn=beb209ce657e15d004c4ed1dd496386f&chksm=971bb8d6a06c31c05a33d50c7839fed48da845d2465891a02ca4acb5a70cfba7ad87fe0639b3&scene=21#wechat_redirect

安装依赖

  228  apt install libcurl4-openssl-dev
  229  apt install libcurl4-nss-dev
  230  apt install libcurl4-gnutls-dev
  231  apt install liblzma-dev
  232  apt-get install build-essential

安装mongo

apt install mongodb-server

创建文件夹

mkdir -p /data/{mongodb27001/data/configdb,mongodb27001/data/sharddb,mongodb27001/conf,mongodb27001/run,mongodb27001/logs}

编辑配置文件

vim /data/mongodb27001/conf/mongod.conf

复制代码
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb27001/logs/mongod.log
storage:
  dbPath: /data/mongodb27001/data
  journal:
    enabled: true
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /data/mongodb27001/run/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27001
  bindIp: 0.0.0.0
复制代码

配置 keyfile

openssl rand -base64 745 > /data/mongodb27001/conf/keyfile
chmod 600 /data/mongodb27001/conf/keyfile

启动 MongoDB

mongod -f /data/mongodb27001/conf/mongod.conf
登录 MongoDB
mongo --port 27001

创建管理员账户

复制代码
use admin

db.createUser(  
  {  
    user: "root",  
pwd: "xxxxxx",  
    roles: [ { role: "root",db:"admin" } ]  
  }  
)
复制代码

增加集群配置

vim /data/mongodb27001/conf/mongod.conf
复制代码
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb27001/logs/mongod.log
storage:
  dbPath: /data/mongodb27001/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /data/mongodb27001/run/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27001
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 4096
  replSetName: mongo_repl
security:
  authorization: enabled
  clusterAuthMode: keyFile
  keyFile: /data/mongodb27001/conf/keyfile
复制代码

重启服务

登录 MongoDB

mongo --port 27001 -uroot -pxxxxxx admin

关闭 MongoDB

db.shutdownServer()

重新启动 MongoDB

mongod -f /data/mongodb27001/conf/mongod.conf

 

创建27002和27003配置文件

复制代码
root@mongo:/data/mongodb27001/conf# cat ../../mongodb27002/conf/mongod.conf
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb27002/logs/mongod.log
storage:
  dbPath: /data/mongodb27002/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /data/mongodb27002/run/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27002
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 4096
  replSetName: mongo_repl
security:
  authorization: enabled
  clusterAuthMode: keyFile
  keyFile: /data/mongodb27002/conf/keyfile
复制代码

27003

复制代码
root@mongo:/data/mongodb27001/conf# cat ../../mongodb27003/conf/mongod.conf
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb27003/logs/mongod.log
storage:
  dbPath: /data/mongodb27003/data
  journal:
    enabled: true
processManagement:
  fork: true
  pidFilePath: /data/mongodb27003/run/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27003
  bindIp: 0.0.0.0
replication:
  oplogSizeMB: 4096
  replSetName: mongo_repl
security:
  authorization: enabled
  clusterAuthMode: keyFile
  keyFile: /data/mongodb27003/conf/keyfile
复制代码

将之前的keyfile复制到27002和27003

  417  cp /data/mongodb27001/conf/keyfile  /data/mongodb27002/conf/keyfile
  418  cp /data/mongodb27001/conf/keyfile  /data/mongodb27003/conf/keyfile

启动

mongod -f /data/mongodb27002/conf/mongod.conf
mongod -f /data/mongodb27003/conf/mongod.conf

在第一个节点上登录 MongoDB

mongo --port 27001 -uroot -pxxxxxx admin

执行下面命令增加集群配置

config={
_id:'mongo_repl',
members:[
{_id: 0, host: '172.25.0.133:27001',priority:1},
{_id: 1, host: '172.25.0.133:27002',priority:1},
{_id: 2, host: '172.25.0.133:27003',arbiterOnly:true},
    ]
}

初始化配置

rs.initiate(config)

查看集群

rs.status()

完整命令

复制代码
root@mongo:/data/mongodb27003/conf# mongo --port 27001 -uroot -ppasswd admin
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27001/admin
Implicit session: session { "id" : UUID("7b1211dc-5e73-4c00-8fcb-26b70aa4bd0f") }
MongoDB server version: 3.6.8
Server has startup warnings:
2022-06-20T20:04:27.877+0800 I STORAGE  [initandlisten]
2022-06-20T20:04:27.877+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2022-06-20T20:04:27.877+0800 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2022-06-20T20:04:29.160+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2022-06-20T20:04:29.160+0800 I CONTROL  [initandlisten]
> config={
... _id:'mongo_repl',
... members:[
... {_id: 0, host: '172.25.0.133:27001',priority:1},
... {_id: 1, host: '172.25.0.133:27002',priority:1},
... {_id: 2, host: '172.25.0.133:27003',arbiterOnly:true},
...     ]
... }
{
        "_id" : "mongo_repl",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "172.25.0.133:27001",
                        "priority" : 1
                },
                {
                        "_id" : 1,
                        "host" : "172.25.0.133:27002",
                        "priority" : 1
                },
                {
                        "_id" : 2,
                        "host" : "172.25.0.133:27003",
                        "arbiterOnly" : true
                }
        ]
}
> rs.initiate(config)
{ "ok" : 1 }
mongo_repl:SECONDARY> rs.status()
{
        "set" : "mongo_repl",
        "date" : ISODate("2022-06-20T12:09:40.355Z"),
        "myState" : 2,
        "term" : NumberLong(0),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(0, 0),
                        "t" : NumberLong(-1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1655726976, 1),
                        "t" : NumberLong(-1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1655726976, 1),
                        "t" : NumberLong(-1)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "172.25.0.133:27001",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 313,
                        "optime" : {
                                "ts" : Timestamp(1655726976, 1),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("2022-06-20T12:09:36Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "could not find member to sync from",
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 1,
                        "name" : "172.25.0.133:27002",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 3,
                        "optime" : {
                                "ts" : Timestamp(1655726976, 1),
                                "t" : NumberLong(-1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1655726976, 1),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("2022-06-20T12:09:36Z"),
                        "optimeDurableDate" : ISODate("2022-06-20T12:09:36Z"),
                        "lastHeartbeat" : ISODate("2022-06-20T12:09:40.071Z"),
                        "lastHeartbeatRecv" : ISODate("2022-06-20T12:09:40.316Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 1
                },
                {
                        "_id" : 2,
                        "name" : "172.25.0.133:27003",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 3,
                        "lastHeartbeat" : ISODate("2022-06-20T12:09:40.072Z"),
                        "lastHeartbeatRecv" : ISODate("2022-06-20T12:09:38.606Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "",
                        "configVersion" : 1
                }
        ],
        "ok" : 1
}
mongo_repl:SECONDARY> quit()
复制代码

 

posted @   不会跳舞的胖子  阅读(220)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示