Mongodb單台機器多實例集群搭建


Mongodb單台機器多實例集群搭建

PS:因為條件有限,只能使用單機器多實例集群搭建,多機器配置一樣

搭建一個三節點的集群,一個主副本節點一個輔助副本節點,還有一個仲裁節點,仲裁節點作用主要是在當一台機器DOWN掉時,投票機制還能正常運行,所以使用仲裁節點滿足過半票數的要求。

一、預先准備配置:

  1. 三個節點使用不同的數據目錄,所以預先創建三個數據目錄:

​ /data/db1

​ /data/db2

​ /data/db3

  1. 還有三個日志目錄

​ /var/log/mongod1

​ /var/log/mongod2

​ /var/log/mongod3

  1. 准備配置文件mongod1.conf如下:
 1 systemLog:
 2    destination: file
 3    path: "/var/log/mongodb1/mongod.log"
 4    logAppend: true
 5 storage:
 6    dbPath: /data/db1
 7    journal:
 8       enabled: true
 9 processManagement:
10    fork: true
11 security:
12    authorization: disabled
13 net:
14    bindIp: 127.0.0.1,192.168.70.128
15    port: 27017
16 setParameter:
17    enableLocalhostAuthBypass: false
18 replication:
19    replSetName: test

 

  1. 並復制兩份分別為mongod2.conf和mongod3.conf 內容如下:

mongod2.conf :

 1 systemLog:
 2    destination: file
 3    path: "/var/log/mongodb2/mongod.log"
 4    logAppend: true
 5 storage:
 6    dbPath: /data/db2
 7    journal:
 8       enabled: true
 9 processManagement:
10    fork: true
11 security:
12    authorization: disabled
13 net:
14    bindIp: 127.0.0.1,192.168.70.128
15    port: 27018
16 setParameter:
17    enableLocalhostAuthBypass: false
18 replication:
19    replSetName: test

 

​ mongod3.conf :

systemLog:
   destination: file
   path: "/var/log/mongodb3/mongod.log"
   logAppend: true
storage:
   dbPath: /data/db3
   journal:
      enabled: true
processManagement:
   fork: true
security:
   authorization: disabled
net:
   bindIp: 127.0.0.1,192.168.70.128
   port: 27019
setParameter:
   enableLocalhostAuthBypass: false
replication:
   replSetName: test

 

  1. 然后根據配置文件分別啟動三個實例 :

​ /mongod --config /conf/mongod1.conf

/mongod --config /conf/mongod2.conf

/mongod --config /conf/mongod3.conf

二、目前配置集群的前期准備工作已經完成。下面開始初始化副本集:

我們選擇第一台機連接執行以下命令:

 1 cfg={
 2     _id:'test',
 3     members:[
 4         {_id:0,host:'192.168.70.128:27017'},
 5         {_id:1,host:'192.168.70.128:27018'},
 6         {_id:2,host:'192.168.70.128:27019',arbiterOnly:true}
 7     ]
 8 }
 9 
10 rs.initiate(cfg)

 

服務器返回表示成功:

 1 {
 2         "ok" : 1,
 3         "operationTime" : Timestamp(1531351517, 1),
 4         "$clusterTime" : {
 5                 "clusterTime" : Timestamp(1531351517, 1),
 6                 "signature" : {
 7                         "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
 8                         "keyId" : NumberLong(0)
 9                 }
10         }
11 }

 

執行rs.status()查看集群信息:

 1 {
 2         "set" : "test",
 3         "date" : ISODate("2018-07-11T23:25:32.808Z"),
 4         "myState" : 1,
 5         "term" : NumberLong(1),
 6         "heartbeatIntervalMillis" : NumberLong(2000),
 7         "optimes" : {
 8                 "lastCommittedOpTime" : {
 9                         "ts" : Timestamp(1531351531, 1),
10                         "t" : NumberLong(1)
11                 },
12                 "readConcernMajorityOpTime" : {
13                         "ts" : Timestamp(1531351531, 1),
14                         "t" : NumberLong(1)
15                 },
16                 "appliedOpTime" : {
17                         "ts" : Timestamp(1531351531, 1),
18                         "t" : NumberLong(1)
19                 },
20                 "durableOpTime" : {
21                         "ts" : Timestamp(1531351531, 1),
22                         "t" : NumberLong(1)
23                 }
24         },
25         "members" : [
26                 {
27                         "_id" : 0,
28                         "name" : "192.168.70.128:27017",
29                         "health" : 1,
30                         "state" : 1,
31                         "stateStr" : "PRIMARY",
32                         "uptime" : 194,
33                         "optime" : {
34                                 "ts" : Timestamp(1531351531, 1),
35                                 "t" : NumberLong(1)
36                         },
37                         "optimeDate" : ISODate("2018-07-11T23:25:31Z"),
38                         "infoMessage" : "could not find member to sync from",
39                         "electionTime" : Timestamp(1531351528, 1),
40                         "electionDate" : ISODate("2018-07-11T23:25:28Z"),
41                         "configVersion" : 1,
42                         "self" : true
43                 },
44                 {
45                         "_id" : 1,
46                         "name" : "192.168.70.128:27018",
47                         "health" : 1,
48                         "state" : 2,
49                         "stateStr" : "SECONDARY",
50                         "uptime" : 15,
51                         "optime" : {
52                                 "ts" : Timestamp(1531351517, 1),
53                                 "t" : NumberLong(-1)
54                         },
55                         "optimeDurable" : {
56                                 "ts" : Timestamp(1531351517, 1),
57                                 "t" : NumberLong(-1)
58                         },
59                         "optimeDate" : ISODate("2018-07-11T23:25:17Z"),
60                         "optimeDurableDate" : ISODate("2018-07-11T23:25:17Z"),
61                         "lastHeartbeat" : ISODate("2018-07-11T23:25:30.816Z"),
62                         "lastHeartbeatRecv" : ISODate("2018-07-11T23:25:30.121Z"),
63                         "pingMs" : NumberLong(0),
64                         "configVersion" : 1
65                 },
66                 {
67                         "_id" : 2,
68                         "name" : "192.168.70.128:27019",
69                         "health" : 1,
70                         "state" : 7,
71                         "stateStr" : "ARBITER",
72                         "uptime" : 15,
73                         "lastHeartbeat" : ISODate("2018-07-11T23:25:30.816Z"),
74                         "lastHeartbeatRecv" : ISODate("2018-07-11T23:25:29.592Z"),
75                         "pingMs" : NumberLong(0),
76                         "configVersion" : 1
77                 }
78         ],
79         "ok" : 1,
80         "operationTime" : Timestamp(1531351531, 1),
81         "$clusterTime" : {
82                 "clusterTime" : Timestamp(1531351531, 1),
83                 "signature" : {
84                         "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
85                         "keyId" : NumberLong(0)
86                 }
87         }
88 }

 

信息中顯示27017為主節點,27018為輔助節點,27019為仲裁節點,

試着把當前主節點關閉驗證集群狀態,在27017執行db.shutdownServer();

關閉成功后,登錄27018執行rs.status()查看集群狀態:

 1 test:PRIMARY> rs.status()rs.status()
 2 {
 3         "set" : "test",
 4         "date" : ISODate("2018-07-11T23:35:05.728Z"),
 5         "myState" : 1,
 6         "term" : NumberLong(2),
 7         "heartbeatIntervalMillis" : NumberLong(2000),
 8         "optimes" : {
 9                 "lastCommittedOpTime" : {
10                         "ts" : Timestamp(1531352009, 1),
11                         "t" : NumberLong(1)
12                 },
13                 "readConcernMajorityOpTime" : {
14                         "ts" : Timestamp(1531352009, 1),
15                         "t" : NumberLong(1)
16                 },
17                 "appliedOpTime" : {
18                         "ts" : Timestamp(1531352101, 1),
19                         "t" : NumberLong(2)
20                 },
21                 "durableOpTime" : {
22                         "ts" : Timestamp(1531352101, 1),
23                         "t" : NumberLong(2)
24                 }
25         },
26         "members" : [
27                 {
28                         "_id" : 0,
29                         "name" : "192.168.70.128:27017",
30                         "health" : 0,
31                         "state" : 8,
32                         "stateStr" : "(not reachable/healthy)",
33                         "uptime" : 0,
34                         "optime" : {
35                                 "ts" : Timestamp(0, 0),
36                                 "t" : NumberLong(-1)
37                         },
38                         "optimeDurable" : {
39                                 "ts" : Timestamp(0, 0),
40                                 "t" : NumberLong(-1)
41                         },
42                         "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
43                         "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
44                         "lastHeartbeat" : ISODate("2018-07-11T23:35:04.928Z"),
45                         "lastHeartbeatRecv" : ISODate("2018-07-11T23:33:29.998Z"),
46                         "pingMs" : NumberLong(0),
47                         "lastHeartbeatMessage" : "Connection refused",
48                         "configVersion" : -1
49                 },
50                 {
51                         "_id" : 1,
52                         "name" : "192.168.70.128:27018",
53                         "health" : 1,
54                         "state" : 1,
55                         "stateStr" : "PRIMARY",
56                         "uptime" : 660,
57                         "optime" : {
58                                 "ts" : Timestamp(1531352101, 1),
59                                 "t" : NumberLong(2)
60                         },
61                         "optimeDate" : ISODate("2018-07-11T23:35:01Z"),
62                         "infoMessage" : "could not find member to sync from",
63                         "electionTime" : Timestamp(1531352020, 1),
64                         "electionDate" : ISODate("2018-07-11T23:33:40Z"),
65                         "configVersion" : 1,
66                         "self" : true
67                 },
68                 {
69                         "_id" : 2,
70                         "name" : "192.168.70.128:27019",
71                         "health" : 1,
72                         "state" : 7,
73                         "stateStr" : "ARBITER",
74                         "uptime" : 586,
75                         "lastHeartbeat" : ISODate("2018-07-11T23:35:04.877Z"),
76                         "lastHeartbeatRecv" : ISODate("2018-07-11T23:35:04.854Z"),
77                         "pingMs" : NumberLong(0),
78                         "configVersion" : 1
79                 }
80         ],
81         "ok" : 1,
82         "operationTime" : Timestamp(1531352101, 1),
83         "$clusterTime" : {
84                 "clusterTime" : Timestamp(1531352101, 1),
85                 "signature" : {
86                         "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
87                         "keyId" : NumberLong(0)
88                 }
89         }
90 }

 

可以看到27018節點已經提升為PRIMARY節點 ,自動提升主節點正常,

重新啟動27017節點,執行rs.status()可以看到節點啟動后自動成為SECONDARY節點

到此集群配置成功

后面可以各自擴展配置信息,比如身份驗證,oplog默認大小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM