MongoDB as windows service and setting up replicaSet

前端 未结 2 1476
囚心锁ツ
囚心锁ツ 2021-01-31 12:45

I have installed MongoDB and its set up as windows service. When I try to set up replicaSet I am getting error \"Only one usage of each socket address (protocol/network address/

相关标签:
2条回答
  • 2021-01-31 13:27

    You can set up replica set and MongoDB service at the same time on Windows. Since you have already set up a replica set, you are aware that you need to have a data directory and a log file for each replica set member. If you are running all replica set members on a single machine, each replica set member must be assigned a different port number. The sample provided is for development or functional testing only. Setting up all replica set members on a single machine will constitute a single point of failure in addition to being a total performance drag.

    Create a configuration file for each replica set member including data directory, log file, port number, and replica set name. For example, I have a replica set of 3 members, one primary Mongodb running on port 27017 and two secondary, Mongodb1 on port 37017, and Mongodb2 on port 47017. The replica set name is rs1.

    Here is the configuration file for instance Mongodb.

    # mongod.conf
    
    # data directory
    dbpath=C:\data\db
    
    # log file
    logpath=C:\mongodb-win32-i386-2.4.4\log\mongo.log
    
    logappend=true
    
    #port number 
    port=27017
    
    #replica set name
    replSet=rs1
    

    Here is the configuration file for one of the secondaries.

    # mongo.conf
    
    # data directory
    dbpath=C:\data\db2
    
    # log file
    logpath=C:\mongodb-win32-i386-2.4.4\log2\mongo.log
    
    logappend=true
    
    # port number
    port=47017
    
    # replica set name
    replSet=rs1
    

    The following link provides a complete list of configuration file options: http://docs.mongodb.org/manual/reference/configuration-options/

    Add all three MongoDB instances as Windows service. Since I did not specify the service and service display name, the MongoDB service will use the default service/service display name MongoDB

    C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod.cfg --install
    

    Install the other two MongoDB instances with service name and service display name.

    C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod1.cfg --serviceName MongoDB1 --serviceDisplayName MongoDB1 --install
    C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod2.cfg --serviceName MongoDB2 --serviceDisplayName MongoDB2 --install
    

    Start all three instances of MongDB

    C:\mongodb-2.4.4\bin>net start mongodb
    The Mongo DB service is starting.
    The Mongo DB service was started successfully.
    
    C:\mongodb-2.4.4\bin>net start mongodb1
    The MongoDB1 service is starting.
    The MongoDB1 service was started successfully.
    
    C:\mongodb-2.4.4\bin>net start mongodb2
    The MongoDB2 service is starting.
    The MongoDB2 service was started successfully.
    

    Verify the status of all three Windows service using the sc command with query option.

    C:\mongodb-2.4.4\bin>sc query mongodb
    C:\mongodb-2.4.4\bin>sc query mongodb1
    C:\mongodb-2.4.4\bin>sc query mongodb2
    

    Configure replica set from MongoDB shell. In the following example, the MongoDB instance on port 27017 will be the primary replica set member.

    C:\mongodb-2.4.4\bin>mongo --port 27017
    

    Set replica set configuration from MongoDB shell.

    > config = { _id: "rs1", members:[
    ... { _id : 0, host : "localhost:27017"},
    ... { _id : 1, host : "localhost:37017"},
    ... { _id : 2, host : "localhost:47017"}
    ... ] }
    

    At MongoDB shell, initialize the replica set and verify its status.

    > rs.initiate(config)
    {
            "info" : "Config now saved locally.  Should come online in about a minute.",
            "ok" : 1
    }
    > rs.status()
    {
            "set" : "rs1",
            "date" : ISODate("2013-07-02T18:40:27Z"),
            "myState" : 1,
            "members" : [
                    {
                            "_id" : 0,
                            "name" : "localhost:27017",
                            "health" : 1,
                            "state" : 1,
                            "stateStr" : "PRIMARY",
                            "uptime" : 651,
                            "optime" : {
                                    "t" : 1372790393,
                                    "i" : 1
                            },
                            "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                            "self" : true
                    },
                    {
                            "_id" : 1,
                            "name" : "localhost:37017",
                            "health" : 1,
                            "state" : 2,
                            "stateStr" : "SECONDARY",
                            "uptime" : 31,
                            "optime" : {
                                    "t" : 1372790393,
                                    "i" : 1
                            },
                            "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                            "lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
                            "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                            "pingMs" : 0,
                            "syncingTo" : "localhost:27017"
                    },
                    {
                            "_id" : 2,
                            "name" : "localhost:47017",
                            "health" : 1,
                            "state" : 2,
                            "stateStr" : "SECONDARY",
                            "uptime" : 31,
                            "optime" : {
                                    "t" : 1372790393,
                                    "i" : 1
                            },
                            "optimeDate" : ISODate("2013-07-02T18:39:53Z"),
                            "lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
                            "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                            "pingMs" : 0,
                            "syncingTo" : "localhost:27017"
                    }
            ],
            "ok" : 1
    }
    rs1:PRIMARY>
    

    You can also check the status of the secondaries. Here I am connecting to one of the secondaries on port 37017.

    C:\mongodb-2.4.4\bin>mongo --port 37017
    

    The following prompt will present in MongoDB shell showing the secondary status.

    rs1:SECONDARY>
    

    A tutorial on deploying a replica set can be found here: https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

    0 讨论(0)
  • 2021-01-31 13:28

    Not covering the service part.

    but setting up sharded replica set. Try this blog to setup mongodb cluster on your local, it has all the configuration files with windows script to create required folder structure.

    https://medium.com/@arun2pratap/set-up-mongodb-sharded-cluster-for-windows-with-just-a-double-click-6eedbb7b79e

    0 讨论(0)
提交回复
热议问题