美文网首页
mongodb伪集群(单机集群)搭建

mongodb伪集群(单机集群)搭建

作者: 草帽路飞S | 来源:发表于2020-11-03 16:14 被阅读0次

    ①、解压

    [root@jianshu ~]# tar -zxvf mongodb-linux-x86_64-4.0.13.tgz -C /usr/local/

    [root@jianshu ~]# mv mongodb-linux-x86_64-4.0.13 /usr/local/

    [root@jianshu ~]# ln -s /usr/local/mongodb/bin/* /usr/bin/

    ②、创建伪集群存放目录mdb1、mdb2、mdb3和其子目录logs、data/db、key

    [root@jianshu ~]# mkdir -pv /data/mongodbs/

    [root@jianshu ~]# cd  /data/mongodbs/

    [root@jianshu ~]# mkdir -pv mkdir -pv mdb{1,2,3}/{logs,data/db,key}

    ③、生成key(集群之间的安全认证,3个需一致)

    [root@jianshu ~]# openssl rand -base64 745 > /data/mongodbs/mdb1/key/keyfile

    [root@jianshu ~]# chmod 600 /data/mongodbs/mdb1/key/keyfile

    [root@jianshu ~]# cp /data/mongodbs/mdb1/key/keyfile /data/mongodbs/mdb2/key/

    [root@jianshu ~]# cp /data/mongodbs/mdb1/key/keyfile /data/mongodbs/mdb3/key/

    ④、配置

    集群1配置:

    [root@jianshu ~]# cat /data/mongodbs/mdb1/mongodb.conf

    systemLog:

      destination: file

    path: "/data/mongodbs/mdb1/logs/mongod.log"

      logAppend: true

    processManagement:

      fork: true

    pidFilePath: "/data/mongodbs/mdb1/mongod.pid"

    net:

      bindIp: 0.0.0.0

    port:27018

      maxIncomingConnections: 10000

    storage:

    dbPath: "/data/mongodbs/mdb1/data/db"

      journal:

        enabled: true

      engine: wiredTiger

      directoryPerDB: true

    replication:

      oplogSizeMB: 50

    replSetName: "mdbcluster"

    #注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

    security:

    keyFile: "/data/mongodbs/mdb1/key/keyfile"

      clusterAuthMode: "keyFile"

    集群2配置:

    [root@jianshu ~]# cat /data/mongodbs/mdb2/mongodb.conf

    systemLog:

      destination: file

    path: "/data/mongodbs/mdb2/logs/mongod.log"

      logAppend: true

    processManagement:

      fork: true

    pidFilePath: "/data/mongodbs/mdb2/mongod.pid"

    net:

      bindIp: 0.0.0.0

    port:27019

      maxIncomingConnections: 10000

    storage:

    dbPath: "/data/mongodbs/mdb2/data/db"

      journal:

        enabled: true

      engine: wiredTiger

      directoryPerDB: true

    replication:

      oplogSizeMB: 50

    replSetName: "mdbcluster"

    #注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

    security:

    keyFile: "/data/mongodbs/mdb3/key/keyfile"

      clusterAuthMode: "keyFile"

    集群3配置:

    [root@jianshu ~]# cat /data/mongodbs/mdb3/mongodb.conf

    systemLog:

      destination: file

    path: "/data/mongodbs/mdb3/logs/mongod.log"

      logAppend: true

    processManagement:

      fork: true

    pidFilePath: "/data/mongodbs/mdb3/mongod.pid"

    net:

      bindIp: 0.0.0.0

    port:27020

      maxIncomingConnections: 10000

    storage:

    dbPath: "/data/mongodbs/mdb3/data/db"

      journal:

        enabled: true

      engine: wiredTiger

      directoryPerDB: true

    replication:

      oplogSizeMB: 50

    replSetName: "mdbcluster"

    #注:如果配置security的keyFile,则开启了授权认证,则不能添加用户,如果要添加用户可以先暂时关闭

    security:

    keyFile: "/data/mongodbs/mdb3/key/keyfile"

      clusterAuthMode: "keyFile"

    ⑤、启动3个集群集群

    [root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb1/mongodb.conf

    [root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb2/mongodb.conf

    [root@jianshu ~]# /usr/local/mongodb/bin/mongod -f /data/mongodbs/mdb3/mongodb.conf

    ⑥、查看启动状态

    [root@jianshu ~]# netstat -lnpt | egrep "270"

    tcp        0      0 0.0.0.0:27018          0.0.0.0:*              LISTEN      10762/mongod       

    tcp        0      0 0.0.0.0:27019          0.0.0.0:*              LISTEN      10827/mongod       

    tcp        0      0 0.0.0.0:27020          0.0.0.0:*              LISTEN      10869/mongod

    ⑦、配置集群

    [root@jianshu ~]# mongo -port 27018

    MongoDB shell version v4.0.13

    connecting to: mongodb://127.0.0.1:27018/?gssapiServiceName=mongodb

    Implicit session: session { "id" : UUID("da5e47a0-319d-4081-ae47-2c58ace5add2") }

    MongoDB server version: 4.0.13

    >use admin

    switched to db admin

    >config={ _id:"mdbcluster", members:[ {"_id" : 0, "host" : "127.0.0.1:27018"}, {"_id" : 1, "host" : "127.0.0.1:27019"}, {"_id" : 2, "host" : "127.0.0.1:27020"} ] }

    {

            "_id" : "mdbcluster",

            "members" : [

                    {

                            "_id" : 0,

                            "host" : "127.0.0.1:27018"

                    },

                    {

                            "_id" : 1,

                            "host" : "127.0.0.1:27019"

                    },

                    {

                            "_id" : 2,

                            "host" : "127.0.0.1:27020"

                    }

            ]

    }

    >rs.initiate(config);

    { "ok" : 1 }

    mdbcluster:SECONDARY>rs.status();

    {

            "set" : "mdbcluster",

            "date" : ISODate("2020-10-23T06:34:39.614Z"),

            "myState" : 1,

            "term" : NumberLong(1),

            "syncingTo" : "",

            "syncSourceHost" : "",

            "syncSourceId" : -1,

            "heartbeatIntervalMillis" : NumberLong(2000),

            "optimes" : {

                    "lastCommittedOpTime" : {

                            "ts" : Timestamp(1603434879, 5),

                            "t" : NumberLong(1)

                    },

                    "readConcernMajorityOpTime" : {

                            "ts" : Timestamp(1603434879, 5),

                            "t" : NumberLong(1)

                    },

                    "appliedOpTime" : {

                            "ts" : Timestamp(1603434879, 5),

                            "t" : NumberLong(1)

                    },

                    "durableOpTime" : {

                            "ts" : Timestamp(1603434879, 5),

                            "t" : NumberLong(1)

                    }

            },

            "lastStableCheckpointTimestamp" : Timestamp(1603434879, 1),

            "members" : [

                    {

                            "_id" : 0,

                            "name" : "127.0.0.1:27018",

                            "health" : 1,

                            "state" : 1,

                            "stateStr" : "PRIMARY",

                            "uptime" : 110,

                            "optime" : {

                                    "ts" : Timestamp(1603434879, 5),

                                    "t" : NumberLong(1)

                            },

                            "optimeDate" : ISODate("2020-10-23T06:34:39Z"),

                            "syncingTo" : "",

                            "syncSourceHost" : "",

                            "syncSourceId" : -1,

                            "infoMessage" : "could not find member to sync from",

                            "electionTime" : Timestamp(1603434878, 1),

                            "electionDate" : ISODate("2020-10-23T06:34:38Z"),

                            "configVersion" : 1,

                            "self" : true,

                            "lastHeartbeatMessage" : ""

                    },

                    {

                            "_id" : 1,

                            "name" : "127.0.0.1:27019",

                            "health" : 1,

                            "state" : 2,

                            "stateStr" : "SECONDARY",

                            "uptime" : 12,

                            "optime" : {

                                    "ts" : Timestamp(1603434867, 1),

                                    "t" : NumberLong(-1)

                            },

                            "optimeDurable" : {

                                    "ts" : Timestamp(1603434867, 1),

                                    "t" : NumberLong(-1)

                            },

                            "optimeDate" : ISODate("2020-10-23T06:34:27Z"),

                            "optimeDurableDate" : ISODate("2020-10-23T06:34:27Z"),

                            "lastHeartbeat" : ISODate("2020-10-23T06:34:38.161Z"),

                            "lastHeartbeatRecv" : ISODate("2020-10-23T06:34:39.323Z"),

                            "pingMs" : NumberLong(0),

                            "lastHeartbeatMessage" : "",

                            "syncingTo" : "",

                            "syncSourceHost" : "",

                            "syncSourceId" : -1,

                            "infoMessage" : "",

                            "configVersion" : 1

                    },

                    {

                            "_id" : 2,

                            "name" : "127.0.0.1:27020",

                            "health" : 1,

                            "state" : 2,

                            "stateStr" : "SECONDARY",

                            "uptime" : 12,

                            "optime" : {

                                    "ts" : Timestamp(1603434867, 1),

                                    "t" : NumberLong(-1)

                            },

                            "optimeDurable" : {

                                    "ts" : Timestamp(1603434867, 1),

                                    "t" : NumberLong(-1)

                            },

                            "optimeDate" : ISODate("2020-10-23T06:34:27Z"),

                            "optimeDurableDate" : ISODate("2020-10-23T06:34:27Z"),

                            "lastHeartbeat" : ISODate("2020-10-23T06:34:38.161Z"),

                            "lastHeartbeatRecv" : ISODate("2020-10-23T06:34:39.324Z"),

                            "pingMs" : NumberLong(0),

                            "lastHeartbeatMessage" : "",

                            "syncingTo" : "",

                            "syncSourceHost" : "",

                            "syncSourceId" : -1,

                            "infoMessage" : "",

                            "configVersion" : 1

                    }

            ],

            "ok" : 1,

            "operationTime" : Timestamp(1603434879, 5),

            "$clusterTime" : {

                    "clusterTime" : Timestamp(1603434879, 5),

                    "signature" : {

                            "hash" : BinData(0,"La+1SisigTTB+RW6X6nguiyVx5U="),

                            "keyId" : NumberLong("6886700366570717185")

                    }

            }

    }

    ⑧、附:登录mongo脚本和加入系统命令

    [root@jianshu ~]# cat /root/script/mongo-login-27018.sh

    /usr/local/mongodb/bin/mongo -port 27018

    [root@jianshu ~]# cat /root/script/mongo-login-27019.sh

    /usr/local/mongodb/bin/mongo -port 27019

    [root@jianshu ~]# cat /root/script/mongo-login-27020.sh

    /usr/local/mongodb/bin/mongo -port 27020

    [root@jianshu ~]# ln -s /root/script/mongo-login-27018.sh /usr/bin/27018mongo

    [root@jianshu ~]# ln -s /root/script/mongo-login-27019.sh /usr/bin/27019mongo

    [root@jianshu ~]# ln -s /root/script/mongo-login-27020.sh /usr/bin/27020mongo

    ⑨、附:创建用户、创建管理员用户、添加数据

    样例1,创建普通用户:

    > use test

    switched to db test

    > db.createUser(

    ... {

    ... user: "test",

    ... pwd: "test",

    ... roles: [ "readWrite"]

    ... }

    ... );

    Successfully added user: { "user" : "member", "roles" : [ "readWrite" ] }

    >

    样例2,创建管理员用户:

    > use admin

    switched to db admin

    > db.createUser(

    {

    user: "root",

    pwd: "root",

    roles: ["dbAdmin"]

    }

    );

    Successfully added user: { "user" : "root", "roles" : [ "dbAdmin" ] }

    >

    样例3,添加表数据:

    > use test

    >db.createCollection('table1');

    >db.table1.insert({name:'amu',age:22}) 

    > db.table1.find();

    相关文章

      网友评论

          本文标题:mongodb伪集群(单机集群)搭建

          本文链接:https://www.haomeiwen.com/subject/ckxivktx.html