Mongoose: Mongoose 4.6.2λŠ” "MongoError: no primary found in replicaset" 였λ₯˜λ₯Ό μƒμ„±ν•˜μ§€λ§Œ 4.4.19λŠ” μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 10μ›” 04일  Β·  82μ½”λ©˜νŠΈ  Β·  좜처: Automattic/mongoose

MongoDB 볡제본 μ„ΈνŠΈμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ—°κ²°. Mongoose 4.4.19μ—μ„œλŠ” 잘 μž‘λ™ν•˜μ§€λ§Œ 4.6.2μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

mongoURI = " mongodb://IP :27017,IP:27017/" + dbName + "?replicaSet=my_replica_set";

4.6.2λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μŒμ„ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

  • μ—°κ²° μ˜΅μ…˜μ—μ„œ replset μ •μ˜
  • connectWithNoPrimary: μ°Έ
  • mongoose.createConnection λŒ€ ​​mongoose.connectλ₯Ό λͺ¨λ‘ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.
  • μ—°κ²° λ¬Έμžμ—΄μ— 포함 및 μ œμ™Έλœ μ€‘μž¬μž λ…Έλ“œ

μ—°κ²° λ¬Έμžμ—΄μ΄ ν•˜λ‚˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ§Œ μ‚¬μš©ν•˜λŠ” 경우 μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. 이 였λ₯˜κ°€ λ°œμƒν•˜λŠ” μ΄μœ κ°€ 정말 κΆκΈˆν•©λ‹ˆλ‹€. μ΄κ²¬μžˆλŠ” μ‚¬λžŒ?

전체 였λ₯˜:

/Users/adeel/dev/navi/euler/node_modules/mongodb/lib/replset.js:360
process.nextTick(function() { 였λ₯˜ λ°œμƒ; })
^^
MongoError: 볡제 μ„ΈνŠΈμ—μ„œ 기본을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.
/Users/adeel/dev/navi/euler/node_modules/mongodb-core/lib/topologies/replset.js:631:32μ—μ„œ
에 .(/Users/adeel/dev/navi/euler/node_modules/mongodb-core/lib/topologies/replset.js:421:24)
gμ—μ„œ (events.js:286:16)
emitOneμ—μ„œ (events.js:96:13)
방좜 μ‹œ(events.js:188:7)
에 .(/Users/adeel/dev/navi/euler/node_modules/mongodb-core/lib/topologies/server.js:313:21)
emitOneμ—μ„œ (events.js:96:13)
방좜 μ‹œ(events.js:188:7)
에 .(/Users/adeel/dev/navi/euler/node_modules/mongodb-core/lib/connection/pool.js:260:12)
gμ—μ„œ (events.js:286:16)
EmmitTwoμ—μ„œ (events.js:106:13)
방좜 μ‹œ(events.js:191:7)
μ†ŒμΌ“μ—μ„œ.(/Users/adeel/dev/navi/euler/node_modules/mongodb-core/lib/connection/connection.js:162:49)
Socket.gμ—μ„œ (events.js:286:16)
emitOneμ—μ„œ (events.js:96:13)
Socket.emitμ—μ„œ (events.js:188:7)

needs clarification

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@wayofthefuture CosmosDB λ₯Ό λ§μ”€ν•˜μ‹œλŠ” κ±΄κ°€μš”? λ˜ν•œ 끝에 &replicaset=globaldbλ₯Ό μ‚­μ œν•˜λ©΄ CosmosDB에 μ—°κ²°ν•˜λŠ” 것이 Mongoose 4.5.10을 톡해 μž‘λ™ν•œλ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  82 λŒ“κΈ€

+1

mongo μ‰˜κ³Ό μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” mongo μ‰˜κ³Ό μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. DBκ°€ 잘 μž‘λ™ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” ν”„λ‘œλ•μ…˜μ— 있으며 λ§Žμ€ 마이크둜 μ„œλΉ„μŠ€κ°€ 볡제본 μ„ΈνŠΈ λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ DB에 μ—°κ²°λ©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μƒˆ ν”„λ‘œμ νŠΈμ˜ 경우 λ ˆν”Œλ¦¬μΉ΄ μ„ΈνŠΈ λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•˜λŠ” 것이 μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 그리고 λ§ˆμŠ€ν„° λ…Έλ“œμ˜ IP μ£Όμ†Œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ‚˜λŠ” μ²˜μŒμ— 이것이 버전 문제(4.6.2 λŒ€ 4.4.19)라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μ΅œκ·Όμ—λŠ” μƒˆ ν”„λ‘œμ νŠΈμ—μ„œλ„ 4.6.2의 볡제본 λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. μž„μ‹œ ν•΄κ²°μ±…μœΌλ‘œ λ§ˆμŠ€ν„° λ…Έλ“œμ˜ IP μ£Όμ†Œ(IP μ£Όμ†Œκ°€ ν•˜λ‚˜λ§Œ μžˆλŠ” μ—°κ²° λ¬Έμžμ—΄)λ₯Ό μ‚¬μš©ν•˜κΈ°λ‘œ ν–ˆμŠ΅λ‹ˆλ‹€.

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 더 λ§Žμ€ μ„€λͺ…을 μΆ”κ°€ν•˜κ±°λ‚˜ 쒋은 μ½”λ“œ 예제λ₯Ό μ œκ³΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ λ‚΄ μ˜μ‹¬μ€ 이것이 쒅속성 쀑 ν•˜λ‚˜μ˜ λΉ„ν˜Έν™˜μ„±κ³Ό 관련이 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
이 문제λ₯Ό 처음 κ΄€μ°°ν•œ 것은 λ‹€λ₯Έ νŒ¨ν‚€μ§€λ₯Ό μ—…λ°μ΄νŠΈν–ˆμ„ λ•Œμ˜€μŠ΅λ‹ˆλ‹€(λ‹Ήμ‹œ 4.5.8에 있던 λͺ½κ΅¬μŠ€λŠ” μ•„λ‹˜).

@zoellner 이 λ¬Έμ œκ°€ μ‹œμž‘λ˜κΈ° 직전에 μ—…λ°μ΄νŠΈν•œ νŒ¨ν‚€μ§€μ˜ 후보 λͺ©λ‘μ„ κ²Œμ‹œν•  수 μžˆλ‹€λ©΄ λ‚΄ λͺ©λ‘κ³Ό λŒ€μ‘°ν•˜μ—¬ 확인할 수 있으며 λΉ„ν˜Έν™˜μ„±μ΄ μžˆλŠ” 뢀뢄을 μ •ν™•νžˆ μ°Ύμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ μƒˆ ν”„λ‘œμ νŠΈμ—μ„œλ§Œ λ°œμƒν•œλ‹€λŠ” 점을 κ³ λ €ν•  λ•Œ Mongooseκ°€ λ‹€λ₯Έ npm νŒ¨ν‚€μ§€μ˜ μ΅œμ‹  버전과 ν˜Έν™˜λ˜μ§€ μ•ŠκΈ° λ•Œλ¬ΈμΌ κ°€λŠ₯성이 ν½λ‹ˆλ‹€.

@adeelzaman 문제λ₯Ό μΌμœΌν‚€κΈ° μ‹œμž‘ν•œ 컀밋에 λŒ€ν•΄ λ‚΄ ν”„λ‘œμ νŠΈμ˜ npm-shrinkwrap.json의 diffλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. μ’€ κΈΈμ–΄μ„œ 여기에 μ˜¬λ¦½λ‹ˆλ‹€.
https://gist.github.com/zoellner/eddd3d40291e150919bb025f452f9054

@adeelzaman 문제의 원인이 λ˜λŠ” κ²ƒμœΌλ‘œ ν™•μΈλœ κ²ƒμœΌλ‘œ 방금 μœ„μ˜ μš”μ§€λ₯Ό μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

@zoellner κ·Έ μš”μ§€μ—μ„œ μ–΄λŠ 것이 원인인지 μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€. μ•Œλ €μ£Όμ‹€ 수 μžˆμŠ΅λ‹ˆκΉŒ?

Mongoose 4.5.8μ—μ„œλŠ” λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. μΌμ‹œμ μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 리포지토리λ₯Ό Mongoose 4.5.8에 κ³ μ •ν–ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 문제λ₯Ό κ²©λ¦¬ν•˜λ €κ³  ν•  λ•Œ ν•˜λ‚˜μ˜ λ…Έλ“œ λͺ¨λ“ˆ(mongoose)만으둜 μ™„μ „νžˆ μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“€κ³  4.6.0을 μ‚¬μš©ν•˜μ—¬ 볡제 μ„ΈνŠΈμ— μ—°κ²°ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν–ˆμŒμ„ μ–ΈκΈ‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ λΉ„ν˜Έν™˜μ„± 였λ₯˜κ°€ μ•„λ‹ˆλΌ 4.6.0의 였λ₯˜μΌκΉŒμš”? 였λ₯˜μ˜ 원인에 따라 더 이상 μ •ν™•νžˆ 지적할 수 μ—†μŠ΅λ‹ˆλ‹€. μ‹œκ°„μ΄ λ‚˜λ©΄ μ’€ 더 λ“€μ—¬λ‹€ λ³Ό μƒκ°μž…λ‹ˆλ‹€.

방금 4.6.2 및 4.6.4μ—μ„œ λ™μΌν•œ 문제라고 ν™•μ‹ ν•˜λŠ” 것을 λ§Œλ‚¬μŠ΅λ‹ˆλ‹€. μœ„μ™€ λ™μΌν•œ ꡬ성 uri μ„€μ •μ—μ„œ λ‚΄ λ ˆν”Œλ¦¬μΉ΄μ…‹ 연결에 λŒ€ν•΄ 이 좜λ ₯을 μ–»μŠ΅λ‹ˆλ‹€.

Error: Uncaught, unspecified "error" event. ([object Object])
    at NativeConnection.emit (events.js:163:17)
    at /home/projects/xxx/xxx/node_modules/mongoose/lib/connection.js:466:17
    at NativeConnection.Connection.error (/home/projects/xxx/xxx/node_modules/mongoose/lib/connection.js:489:12)
    at /home/projects/xxx/xxx/node_modules/mongoose/lib/connection.js:520:15
    at /home/projects/xxx/xxx/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js:216:21
    at /home/projects/xxx/xxx/node_modules/mongodb/lib/db.js:229:14
    at .<anonymous> (/home/projects/xxx/xxx/node_modules/mongodb/lib/replset.js:357:9)
    at g (events.js:286:16)
    at emitOne (events.js:96:13)
    at emit (events.js:188:7)
    at Timeout.<anonymous> (/home/projects/xxx/xxx/node_modules/mongodb-core/lib/topologies/replset.js:507:14)
    at tryOnTimeout (timers.js:232:11)
    at Timer.listOnTimeout (timers.js:202:5)

흠 μ΄μƒν•˜λ‹€. mongooseλŠ” 자체적으둜 볡제본 μ„ΈνŠΈλ‘œ 아무 μž‘μ—…λ„ ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 이것은 κΈ°λ³Έ mongodb λ“œλΌμ΄λ²„μ˜ 문제인 것이 거의 ν™•μ‹€ν•©λ‹ˆλ‹€. mongodb λ“œλΌμ΄λ²„ 2.2.11μ—μ„œ μˆ˜μ •λœ 볡제 μ„ΈνŠΈμ— λͺ‡ 가지 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. mongoose 4.6.5둜 μ—…κ·Έλ ˆμ΄λ“œν•˜κ³  λ¬Έμ œκ°€ ν•΄κ²°λ˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

+1

@mo4islona λŠ” 4.6.5μ—μ„œ 계속 λ°œμƒν•©λ‹ˆκΉŒ?

+1 λ™μΌν•œ 문제(4.6.5μ—μ„œλ„).
이 버전 4.6.0 μ΄ν›„μ˜ μ΅œμ‹  μž‘μ—… 버전 4.5.9μ—μ„œ "볡제 μ„ΈνŠΈμ—μ„œ 기본을 찾을 수 μ—†μŒ" 였λ₯˜κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

@ vkarpov15 예 4.6.5κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 4.5.9λŠ” μ‹œλ„ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ 4.4.19λŠ” μž‘λ™ν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 uriλ₯Ό μ‚¬μš©ν•˜λŠ” λ™μΌν•œ 문제

mongodb://user:password<strong i="6">@server1</strong>,server2,server3/database?replicaSet=repname

4.5.9μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ μ΅œμ‹  λ²„μ „μ—μ„œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

였늘 λ‚˜λŠ” mongoose 4.5.9둜 μš°λΆ„νˆ¬ 14에 μ„€μΉ˜ν–ˆλŠ”λ° 같은 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€
/node_modules/mongodb/lib/mongo_client.js:225 throw err ^ MongoError: no primary found in replicaset at /node_modules/mongodb-core/lib/topologies/replset.js:628:32 at Server.<anonymous> (test/node_modules/mongodb-core/lib/topologies/replset.js:420:24)

λ™μΌν•œ μ½”λ“œκ°€ Mac OSXμ—μ„œ 문제 없이 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ uriλŠ” dottodotκ³Ό λ™μΌν•©λ‹ˆλ‹€.

기이 ν•œ. λ™μΌν•œ μ‹œμŠ€ν…œμ—μ„œ ν•΄λ‹Ή URIλ₯Ό μ‚¬μš©ν•˜μ—¬ mongodb μ‰˜μ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•  수 μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

@vkarpov15 mongodb 셸을 μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•  수 있으며 ν‘œμ€€ URI 방식을 μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@stampsrule ν‘œμ€€ URI 방식은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@ vkarpov15

mongodb://user:password<strong i="7">@server</strong>:port/database

자, 그럼 μ‹€νŒ¨ν•œ μ—°κ²° μ½”λ“œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λͺ½κ΅¬μŠ€ >= 4.6.0μ—μ„œ μ—°κ²°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 4.5.10 되돌리면 μž‘λ™ν•©λ‹ˆλ‹€. λ‚΄ μ—°κ²° λ¬Έμžμ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

mongodb://username:password<strong i="7">@ip1</strong>:port1,ip2:port2/database?authSource=blah&replicaSet=rs0&ssl=true

λ‹€μŒ μ—°κ²° μ˜΅μ…˜μ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

{
   replSet: {
      sslValidate: false,
      sslCert: fs.readFileSync(`...`),
      sslKey: fs.readFileSync(`...`),
      sslCA: fs.readFileSync(`...`)
   }
}

λ‹€μŒκ³Ό 같이 연결에 λŒ€ν•œ 였λ₯˜ 처리기λ₯Ό μ •μ˜ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 mongoose.connection.on('error', (err) => {
    console.log(err instanceof Error, err)
})

ν₯λ―Έλ‘­κ²Œλ„ err instanceof Error λŠ” 거짓이고 err λ‘œκΉ…μ˜ 좜λ ₯은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 ReplSet {
  domain: null,
  _events: 
   { reconnect: [Function],
     timeout: { [Function: g] listener: [Function] },
     error: { [Function: g] listener: [Function] },
     connect: { [Function: g] listener: [Function: connectHandler] } },
  _eventsCount: 4,
  _maxListeners: undefined,
  id: 1,
  s: 
   { options: 
      { disconnectHandler: [Object],
        cursorFactory: [Object],
        reconnect: false,
        emitError: true,
        size: 5,
        rejectUnauthorized: false,
        cert: <Buffer  ... >,
        key: <Buffer  ... >,
        ca: <Buffer  ... >,
        socketOptions: {},
        setName: 'rs0',
        ssl: true,
        clientInfo: [Object] },
     bson: BSON {},
     Cursor: 
      { [Function: Cursor]
        super_: [Object],
        define: [Object],
        INIT: 0,
        OPEN: 1,
        CLOSED: 2,
        GET_MORE: 3 },
     logger: Logger { className: 'ReplSet' },
     seedlist: [ [Object], [Object] ],
     replicaSetState: 
      ReplSetState {
        domain: null,
        _events: [Object],
        _eventsCount: 3,
        _maxListeners: undefined,
        topologyType: 'ReplicaSetNoPrimary',
        setName: 'rs0',
        set: {},
        id: 1,
        logger: [Object],
        index: 0,
        acceptableLatency: 15,
        heartbeatFrequencyMS: 10000,
        primary: null,
        secondaries: [],
        arbiters: [],
        passives: [],
        ghosts: [],
        unknownServers: [],
        maxElectionId: null,
        maxSetVersion: 0,
        replicasetDescription: [Object] },
     connectingServers: [],
     haInterval: 10000,
     minHeartbeatFrequencyMS: 500,
     disconnectHandler: Store { s: [Object], length: [Getter] },
     index: 0,
     connectOptions: { forceServerObjectId: false, w: 1, promiseLibrary: [Object] },
     debug: false,
     clientInfo: 
      { driver: [Object],
        os: [Object],
        platform: 'Node.js v6.7.0, LE, mongodb-core: 2.0.13' } },
  authProviders: 
   { mongocr: MongoCR { bson: BSON {}, authStore: [] },
     x509: X509 { bson: BSON {}, authStore: [] },
     plain: Plain { bson: BSON {}, authStore: [] },
     gssapi: GSSAPI { bson: BSON {}, authStore: [] },
     sspi: SSPI { bson: BSON {}, authStore: [] },
     'scram-sha-1': ScramSHA1 { bson: BSON {}, authStore: [], id: 0 } },
  initialConnectState: { connect: false, fullsetup: false, all: false },
  state: 'destroyed',
  haTimeoutId: 
   Timeout {
     '0': null,
     _called: true,
     _idleTimeout: -1,
     _idlePrev: null,
     _idleNext: null,
     _idleStart: 1969,
     _onTimeout: null,
     _repeat: null },
  authenticating: false,
  ismaster: null }

기타 세뢀정보:

  • mongoose 4.6.8 ν•˜μ§€λ§Œ λ¬Έμ œλŠ” 4.6.2 에 μ μš©λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
  • mongoose.connection.readyState λŠ” 연결을 μ‹œλ„ν•˜λŠ” λ™μ•ˆ 2 이고 연결이 μ‹€νŒ¨ν•˜λ©΄ 0
  • 디버깅을 μΌ°λŠ”λ°λ„ 좜λ ₯이 μ•ˆλ¨
  • λ…Έλ“œ 6.7.0 μ‚¬μš©

[email protected]λ₯Ό μ‚¬μš©ν•˜λ©΄ λ§ˆμ§€λ§‰ 버전이 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ™μΌν•œ 문제(repset)κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

@adeelzaman 은 λ‚΄λΆ€ 및 외뢀와 같이 각 볡제본 μ„ΈνŠΈ ꡬ성원에 μ•‘μ„ΈμŠ€ν•˜κΈ° μœ„ν•΄ λ‘˜ μ΄μƒμ˜ μ£Όμ†Œλ₯Ό κ°€μ§ˆ 수 μžˆλŠ” ν™˜κ²½μ—μ„œ ν˜ΈμŠ€νŒ…λ˜λŠ” 볡제본 μ„ΈνŠΈμž…λ‹ˆλ‹€.

@dustywusty μ•„λ‹ˆμš”. 볡제 μ„ΈνŠΈ ꡬ성원당 ν•˜λ‚˜μ˜ IP μ£Όμ†Œ.

4.6.0 μ΄μƒμ—μ„œ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 4.5.10이 λ§ˆμ§€λ§‰μœΌλ‘œ μž‘λ™ν•˜λŠ” λ²„μ „μž…λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ https://github.com/Automattic/mongoose/issues/4834 와 μœ μ‚¬ν•œμ§€ κ²€ν† 

μ΅œμ‹  버전을 μ‚¬μš© 쀑이고 였λ₯˜ λ°œμƒ μ‹œ self.s.replicaSetState λ₯Ό κΈ°λ‘ν–ˆκ³  λ‹€μŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
topologyType: 'ReplicaSetNoPrimary', setName: 'rs0', set: { 'mongo1:27017': { type: 'Unknown', electionId: null, setName: null, setVersion: null }, 'mongo2:27017': { type: 'PossiblePrimary', setVersion: null, electionId: null, setName: null }, 'mongo3:27017': { type: 'Unknown', electionId: null, setName: null, setVersion: null }, 'database4ca:27017': { type: 'RSSecondary', electionId: undefined, setName: 'rs0', setVersion: 5 }, 'mongoarb:27017': { type: 'Unknown', electionId: null, setName: null, setVersion: null } },

null 값이 였λ₯˜μ˜ μ›μΈμž…λ‹ˆκΉŒ?

mongo1.example을 λ„£μ—ˆμ„ λ•Œ 100% λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. com:27017 IPκ°€ μž‘λ™ν•˜λ”λΌλ„ μ—°κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. URL 문제λ₯Ό ν•΄κ²°ν•˜κ³  mongodb:// URIλ₯Ό URL둜 λ°”κΎΈλ©΄ λͺ¨λ‘ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

@wparsons-360insights 의 λŒ“κΈ€μ„ 보고 μ‹œλ„ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 볡제본 μ„ΈνŠΈμ— λŒ€ν•΄ μ •ν™•νžˆ λ™μΌν•œ db 연결이 4.5.10μ—μ„œλŠ” μž‘λ™ν•˜μ§€λ§Œ 4.7.1 μ—μ„œλŠ” μž‘λ™

μ•ˆλ…•ν•˜μ„Έμš”,

λ‚˜λŠ” 같은 λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λͺ½κ΅¬μŠ€": "^4.7.6"

ꡬ성:
config.mongoose = {
URI: " mongodb://Appinv-db :27017,Appinv-db1:27017,Appinv-db2:27017,Appinv-db3:27017/nexgtv_16?replicaSet=rs0",
//우리: " mongodb://localhost/nexgtv_16 ",
μ˜΅μ…˜: {
db: { native_parser: true },
replset: {
//μžλ™ μž¬μ—°κ²°: 거짓,
ν’€ 크기: 10,
μ†ŒμΌ“ μ˜΅μ…˜: {
ν‚΅μ–ΌλΌμ΄λΈŒ: 1000,
μ—°κ²°μ‹œκ°„ 초과MS: 30000
},
reconnectInterval: 2000, //기본값은 1000msμž…λ‹ˆλ‹€.
reconnectTries: 60 //기본값은 30μž…λ‹ˆλ‹€.
},
μ„œλ²„: {
풀크기: 5,
μ†ŒμΌ“ μ˜΅μ…˜: {
ν‚΅μ–ΌλΌμ΄λΈŒ: 1000,
μ—°κ²°μ‹œκ°„ 초과MS: 30000
},
reconnectInterval: 2000, //기본값은 1000msμž…λ‹ˆλ‹€.
reconnectTries: 60 //기본값은 30μž…λ‹ˆλ‹€.
}
}
}

μ—°κ²°:
mongoose.connect(config.mongoose.uri, config.mongoose.options);

였λ₯˜:
MongoError: Appinv-db3:27017에 λŒ€ν•œ μ—°κ²° 3이 λ‹«ν˜”μŠ΅λ‹ˆλ‹€.
Function.MongoError.createμ—μ„œ (/etc/scripts/push-notifications/node_modules/mongodb-core/lib/error.js:29:11)
μ†ŒμΌ“μ—μ„œ.(/etc/scripts/push-notifications/node_modules/mongodb-core/lib/connection/connection.js:198:22)
Socket.gμ—μ„œ (events.js:291:16)
emitOneμ—μ„œ (events.js:96:13)
Socket.emitμ—μ„œ (events.js:188:7)
TCP._handle.closeμ—μ„œ [_onclose둜] (net.js:498:12)
μ—°κ²° 였λ₯˜: { MongoError: 볡제 μ„ΈνŠΈμ—μ„œ 기본을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.
/etc/scripts/push-notifications/node_modules/mongodb-core/lib/topologies/replset.js:659:32
μ„œλ²„μ—μ„œ.(/etc/scripts/push-notifications/node_modules/mongodb-core/lib/topologies/replset.js:442:24)
Server.gμ—μ„œ (events.js:291:16)
emitOneμ—μ„œ (events.js:96:13)
Server.emitμ—μ„œ (events.js:188:7)
Object.cbμ—μ„œ (/etc/scripts/push-notifications/node_modules/mongodb-core/lib/topologies/server.js:259:55)
μ—°κ²°μ—μ„œ.(/etc/scripts/push-notifications/node_modules/mongodb-core/lib/connection/pool.js:243:32)
Connection.gμ—μ„œ (events.js:291:16)
EmmitTwoμ—μ„œ (events.js:106:13)
Connection.emitμ—μ„œ (events.js:191:7)
μ†ŒμΌ“μ—μ„œ.(/etc/scripts/push-notifications/node_modules/mongodb-core/lib/connection/connection.js:197:12)
Socket.gμ—μ„œ (events.js:291:16)
emitOneμ—μ„œ (events.js:96:13)
Socket.emitμ—μ„œ (events.js:188:7)
TCP._handle.closeμ—μ„œ [_onclose둜] (net.js:498:12)
이름: 'λͺ½κ³  였λ₯˜',
λ©”μ‹œμ§€: '볡제 μ„ΈνŠΈμ—μ„œ 기본을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.' }

μ–΄λ–€ 해결책을 μ œμ•ˆν•˜μ‹­μ‹œμ˜€

4.5.10 버전을 μ‚¬μš©ν•˜μ—¬ μˆ˜μ •λœ uri의 볡제본이 μžˆλŠ” heroku의 mLab에 μœ μ‚¬ν•œ λ¬Έμ œκ°€ 있음

μš°λ¦¬λ„ 이 λ¬Έμ œμ— μ§λ©΄ν•˜κ³  μžˆμ§€λ§Œ MongoDB 3.0 -> 3.4μ—μ„œ 졜근 μ—…κ·Έλ ˆμ΄λ“œν•˜λ©΄ μ΅œμ‹  λ²„μ „μ˜ mongooseλ₯Ό μ•ˆμ •μ μœΌλ‘œ μ‹€ν–‰ν•  수 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

(4.7.8 λ˜λŠ” 3.4 λ˜λŠ” λ‘˜μ˜ μ‘°ν•© λ•Œλ¬ΈμΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŒ)

λ‚˜λŠ” 같은 λ¬Έμ œκ°€ μžˆμ—ˆλ‹€.
replset 호슀트 νŒŒμΌμ— μžˆλŠ” κ²ƒμ²˜λŸΌ 볡제 μ„ΈνŠΈ ꡬ성원 호슀트 이름을 μ›Ή μ„œλ²„ 호슀트 νŒŒμΌμ— μΆ”κ°€ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

rs.conf();
{
    "_id" : "cwreplset0",
    "version" : 348189,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "cwmongo1:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 2,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "cwmongoArbiter:27017",
            "arbiterOnly" : true,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "cwmongo2:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {

            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
...
cwmongo1 /etc/hosts:
127.0.0.1   cwmongo1
XXX cwmongo2
XXX cwmongoArbiter

cwmongo2 /etc/hosts:
127.0.0.1   cwmongo2
XXX cwmongo1
XXX cwmongoArbiter

cwmongoArbiter /etc/hosts:
127.0.0.1   cwmongoArbiter
XXX cwmongo2
XXX cwmongo1
webservers /etc/hosts:

XXX cwmongo1
XXX cwmongo2

μ΅œμ‹  버전 4.8.1 μ—…λ°μ΄νŠΈν•œ ν›„ mLab MONGODB_URI replicaSet param으둜 λ†€λžκ²Œλ„ λ¬Έμ œκ°€ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@dazwiafl 의 의견이 μ£Όμ–΄
이전 λŒ“κΈ€μ„ μ‚΄νŽ΄λ³΄λ©΄ 호슀트 이름을 μ–ΈκΈ‰ν•œ λͺ¨λ“  μ‚¬λžŒμ—κ²Œ ν•΄λ‹Ήλ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
이 경우 #4834λŠ” μ‹€μ œλ‘œ @flipflopappμ—μ„œ μ œμ•ˆν•œ 것과 λ™μΌν•œ λ¬Έμ œμž…λ‹ˆλ‹€.
νŽΈμ§‘: #3634도 관련될 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—°κ²° λ¬Έμžμ—΄μ—μ„œ 전체(μ™ΈλΆ€) dns 이름을 μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λ§Œ mongoose 4.8.1이 mongodb 3.4.2와 ν•¨κ»˜ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

이전에 λ‚΄λΆ€ dns 이름(VPC λ‚΄μ˜ 프라이빗 EC2 IP μ£Όμ†Œλ‘œ 확인됨)을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. rs.conf()의 호슀트 이름이 μ™ΈλΆ€ DNS μ΄λ¦„μœΌλ‘œ μ„€μ •λœ κ²½μš°μ—λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λͺ¨λ“  ꡬ성을 ν…ŒμŠ€νŠΈν•˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ 이 μ‹œμ μ—μ„œ λ‚΄ 직관은 mongoose/mongodb 버전이 μ‹€μ œλ‘œ μ€‘μš”ν•˜μ§€ μ•Šλ‹€κ³  λ§ν•©λ‹ˆλ‹€.
이 λ¬Έμ œλŠ” 전체 DNS 이름을 μ‚¬μš©ν•  λ•Œ ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

@zoellner 개인 λ„€νŠΈμ›Œν¬λ₯Ό 톡해

"μ™ΈλΆ€ μ•‘μ„ΈμŠ€"(ν•„μš”ν•œ μ„œλ²„λ‘œ μ œν•œλ¨)λ₯Ό ν—ˆμš©ν•˜κΈ° μœ„ν•΄ 일뢀 인프라λ₯Ό λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. 이상적인 μ†”λ£¨μ…˜μ€ μ•„λ‹ˆμ§€λ§Œ 더 λ‚˜μ€ 방법이 μžˆμ„ λ•ŒκΉŒμ§€ μž μ‹œ λ™μ•ˆ μž‘λ™ν•©λ‹ˆλ‹€. 이 일반적인 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό 더 잘 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ mongodb의 μ‚¬λžŒλ“€κ³Ό ν•¨κ»˜ μ œκΈ°ν•˜λŠ” 것이 정말 문제라고 μƒκ°ν•©λ‹ˆλ‹€.

@dottodot ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ sslAllowInvalidCertificates 및 sslAllowInvalidHostnamesλ₯Ό μ„€μ •ν•˜κ³  FQDN에 λŒ€ν•΄ localhost λ˜λŠ” 127.0.0.1을 μ‚¬μš©ν•˜λ„λ‘ 자체 μ„œλͺ…λœ μΈμ¦μ„œλ₯Ό μ„€μ •ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 이것은 볡제 μ„ΈνŠΈμ˜ 호슀트 ν•„λ“œλ‘œ IPλ₯Ό μ‚¬μš©ν•˜μ—¬ μ €μ—κ²Œ 효과적이며 μ—¬μ „νžˆ μΈμ¦μ„œμ— μ„€μ •λœ 호슀트의 호슀트 이름 λ˜λŠ” FQDNκ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 호슀트 이름을 톡해 ν˜ΈμŠ€νŠΈμ— μ•‘μ„ΈμŠ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν΄λŸ¬μŠ€ν„°μ— μ•‘μ„ΈμŠ€ν•˜κΈ° μœ„ν•΄ mongo uriμ—μ„œ IPλ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그것이 λ‹Ήμ‹ μ—κ²Œ λ„μ›€μ΄λœλ‹€λ©΄, λ‚˜λŠ” 이것을 ν…ŒμŠ€νŠΈ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ ...

mongoose v4.8.4μ—μ„œ 이 λ¬Έμ œμ— λŒ€ν•œ μˆ˜μ • 사항이 μžˆμŠ΅λ‹ˆκΉŒ?

4.5.10 및 4.4.12둜 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 볡제본 μ„ΈνŠΈ 이름이 rs0인 Google μ»΄ν“¨νŒ… 볡제본 μ„ΈνŠΈλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

v4.6.5λ₯Ό μ‚¬μš©ν•˜μ—¬ v4.8.5둜 μ—…κ·Έλ ˆμ΄λ“œν•˜λŠ” 것과 λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ—ˆλŠ”λ° ꡬ성을 λ³€κ²½ν•˜μ§€ μ•Šκ³  문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

방금 4.8.5λ₯Ό μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€ 운이 μ—†μŠ΅λ‹ˆλ‹€ :(

λ ˆν”Œλ¦¬μΉ΄ μ„ΈνŠΈμ— μ–΄λ–»κ²Œ μ—°κ²°ν•©λ‹ˆκΉŒ?

μš°λ¦¬λŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€:

mongodb://root:[email protected]:27017,mongo1.dev.domain.com:27017,mongo2.dev.domain.com:27017/main?replicaSet=rs0&authSource=admin

λ‚˜λŠ” κΈ°λ³Έ μ£Όμ†Œλ₯Ό μ „λ‹¬ν•˜λŠ” 데만 ν•„μš”ν•˜κ³  2개의 보쑰가 ν•„μš”ν•˜μ§€ μ•Šλ‹€λŠ” 것을 μ–΄λ”˜κ°€μ—μ„œ μ½μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬μ‹€μΈκ°€μš”? 감사 ν•΄μš”.

이 μ‹œλ„. Arbiter mongo에 μ—°κ²°ν•  ν•„μš”κ°€ μ—†μœΌλ©° 볡제본 2개만 있으면 λ©λ‹ˆλ‹€.

mongoose.connect("mongodb://mongo1.dev.domain.com,mongo2.dev.domain.com/main?replicaSet=rs0&authSource=admin", {
μ‚¬μš©μž: 'MONGO_USERNAME',
패슀: 'MONGO_PASSWORD'
});

이것이 μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©΄ 일뢀 볡제 ꡬ성 λ¬Έμ œκ°€ μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ—°κ²°ν•˜λ €λŠ” mongo ν¬νŠΈκ°€ λ‹«ν˜€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

Kubernetes StatefulSetμ—μ„œ mongo RS에 μ—°κ²°ν•˜λŠ” λ™μ•ˆ 이 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ—°κ²° λ¬Έμžμ—΄μ˜ DNS 이름을 SS μ΄λ¦„μœΌλ‘œ ν•œμ •ν•˜μ§€ μ•Šμ•„ "κΈ°λ³Έ 였λ₯˜ μ—†μŒ"이 ν‘œμ‹œλ©λ‹ˆλ‹€.

λ”°λΌμ„œ mongoλΌλŠ” SS의 경우 "mongo-0"은 "mongo-0.mongo"μ—¬μ•Ό ν•©λ‹ˆλ‹€. 였λ₯˜κ°€ μ‚¬λΌμ‘ŒμŠ΅λ‹ˆλ‹€.

@edgarmarkosov μš°λ¦¬λŠ” μ€‘μž¬μžλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 3개의 전체 μΈμŠ€ν„΄μŠ€λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. Mongo λ¬Έμ„œμ—μ„œλŠ” 3개의 전체 μΈμŠ€ν„΄μŠ€κ°€ μ€‘μž¬μžκ°€ μžˆλŠ” 2κ°œλ³΄λ‹€ λ‚«λ‹€κ³  ꢌμž₯ν–ˆμŠ΅λ‹ˆλ‹€. ν‘œμ€€ Google Cloud bitnami 볡제본 배포λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 클릭 λͺ‡ 번이면 λ°”λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€.

μœ„μ˜ 방법을 μ‚¬μš©ν•˜μ—¬ 연결을 μ‹œλ„ν–ˆμ§€λ§Œ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 μΌμ’…μ˜ μ΄μƒν•œ 문제라고 ν™•μ‹ ν•©λ‹ˆλ‹€. λ‚˜λŠ” 기본이 λ‹€λ₯Έ 2개의 보쑰의 μ£Όμ†Œλ₯Ό 보낼 것이라고 μ–΄λ”˜κ°€μ—μ„œ μ½μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κ²Œ 되기λ₯Ό λ°”λžλ‹ˆλ‹€. 그러면 μ—°κ²° λ¬Έμžμ—΄μ—μ„œ κΈ°λ³Έ μ£Όμ†Œλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@wayoffuture "μ–΄λ”˜κ°€μ—μ„œ 기본이 λ‹€λ₯Έ 2개의 보쑰 μ£Όμ†Œλ₯Ό 보낼 것이라고 μ½μ—ˆμŠ΅λ‹ˆλ‹€."
μ†ŒμŠ€κ°€ μžˆμŠ΅λ‹ˆκΉŒ? Bcos 이것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•Šμ•˜μœΌλ©° 여기에 μ œμ•ˆλœ ν•΄κ²° 방법도 μ—†μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” op와 같은 상황에 κ°‡ν˜€μžˆλ‹€. :/

λ•Œλ•Œλ‘œ λ‚˜λŠ” λ°”λ‘œ Mongo APIλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 더 λ‚˜μ€μ§€ κΆκΈˆν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ 더 μ‰½κ²Œ μž‘μ—…ν•  수 μžˆλŠ” 것을 μ›ν–ˆκΈ° λ•Œλ¬Έμ— 이와 같은 λ¬Έμ œμ— μ–½λ§€μ΄λŠ” 것이 정말 더 μœ μ΅ν•œκ°€μš”? λ•Œλ‘œλŠ” λΆˆν•„μš”ν•œ 좔상화 κ³„μΈ΅μ²˜λŸΌ λŠκ»΄μ§‘λ‹ˆλ‹€.

@wayoffutureκ°€ λ™μ˜ν–ˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” 그것을 κ³„νšν•˜κ³  μžˆμ§€λ§Œ 아직 ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

4.9.0μ—μ„œ 이 문제λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

볡제 μ»¨νŠΈλ‘€λŸ¬μ—μ„œ 3개의 λ…Έλ“œλ‘œ Kubernetesμ—μ„œ mongoλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. mongooooseλ₯Ό μ‚¬μš©ν•˜λŠ” λ‚΄ λ…Έλ“œ μ„œλ²„κ°€ λ‹€λ₯Έ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ˜ λ‚΄ mongo ν΄λŸ¬μŠ€ν„°μ— μ—°κ²°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄ nodeserver와 mongo ν΄λŸ¬μŠ€ν„°κ°€ λ™μΌν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ— 있으면(dns 확인이 ν•„μš”ν•˜μ§€ μ•ŠμŒ) μž‘λ™ν•©λ‹ˆλ‹€.

μ΅œμ‹  λ“œλΌμ΄λ²„ μ—…κ·Έλ ˆμ΄λ“œ(ν˜„μž¬ mongoose 4.9.2 μ‚¬μš©)에 λŒ€ν•œ 보닀 ꡬ체적인 였λ₯˜ λ©”μ‹œμ§€ 덕뢄에 문제λ₯Ό νŒŒμ•…ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œλŠ” mongooseκ°€ λ‚΄ mongoose μ—°κ²° λ¬Έμžμ—΄μ— μ§€μ •λœ 호슀트λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  mongo 볡제 μ„ΈνŠΈ ꡬ성에 μ§€μ •λœ 각 ν˜ΈμŠ€νŠΈμ— μ—°κ²°ν•˜λ €κ³  ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 그리고 λ‚΄ λ…Έλ“œ μ„œλ²„μ™€ mongo ν΄λŸ¬μŠ€ν„°κ°€ λ³„λ„μ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—μ„œ μ‹€ν–‰λ˜κ³  있기 λ•Œλ¬Έμ— λ‚΄ λ…Έλ“œ μ„œλ²„κ°€ μ΄λŸ¬ν•œ ν˜ΈμŠ€νŠΈμ— λŒ€ν•œ DNSλ₯Ό 확인할 수 μ—†μŠ΅λ‹ˆλ‹€.

문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 무엇을 ν–ˆλŠ”μ§€ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? λ‚΄ Mongo ν΄λŸ¬μŠ€ν„°λ„ λ³„λ„μ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. 감사 ν•΄μš”.

@wayoffuture μ΅œμ„ μ˜ λ°©λ²•μœΌλ‘œ ν–ˆλŠ”μ§€ λͺ¨λ₯΄κ² μ§€λ§Œ λ…Έλ“œ μ„œλ²„κ°€ μ‹€ν–‰ 쀑인 ν˜ΈμŠ€νŠΈμ—μ„œ /etc/hosts νŒŒμΌμ„ 방금 νŽΈμ§‘ν–ˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 볡제본 μ„ΈνŠΈ ꡬ성에 μ§€μ •λœ ν˜ΈμŠ€νŠΈκ°€ db1.example.com 및 db2.example.com 라고 κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ–΄λ–€ 이유둜(λ°©ν™”λ²½ ꡬ성과 같은) λ…Έλ“œ μ„œλ²„κ°€ μ‹€ν–‰ 쀑인 ν˜ΈμŠ€νŠΈλŠ” 이 두 호슀트 이름을 확인할 수 μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λͺ½κ΅¬μŠ€ μ—°κ²° ꡬ성 λ¬Έμžμ—΄μ—μ„œ λ‹€λ₯Έ 호슀트 이름 λ˜λŠ” IP μ£Όμ†Œλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(예 10.0.0.1 및 10.0.0.2 ). 이 경우 /etc/hosts 파일(λ…Έλ“œ μ„œλ²„κ°€ μ‹€ν–‰ 쀑인 것과 λ™μΌν•œ ν˜ΈμŠ€νŠΈμ—μ„œ)을 νŽΈμ§‘ν•˜μ—¬ λ‹€μŒ 행을 포함할 수 μžˆμŠ΅λ‹ˆλ‹€.

10.0.0.1 db1.example.com
10.0.0.2 db2.example.com

적어도 그것이 제 λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. 이것이 κ·€ν•˜μ˜ 상황에도 μ μš©λ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ λ²„μ „μ˜ mongo λ“œλΌμ΄λ²„κ°€ 이와 같은 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆλ‹€λŠ” 것이 μ΄μƒν•©λ‹ˆλ‹€. μ–΄μ¨Œλ“  도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€.

λ™μΌν•œ 였λ₯˜ 확인:
Mongoose κΈ°λ³Έ μ—°κ²° 였λ₯˜: MongoError: 볡제 μ§‘ν•©μ—μ„œ 기본을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

λͺ½κ΅¬μŠ€ μ‚¬μš© 4.9.3. 그리고 도컀 μž‘μ„±. docker와 관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 4.5.10으둜 되돌리면 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

4.5.10으둜 λ˜λŒλ¦¬λŠ” 것 외에 λ‹€λ₯Έ 해결책이 없이 7κ°œμ›” 전에 제기된 이 λ¬Έμ œμ— λŒ€ν•΄ λˆ„κ΅°κ°€ μ§„μ§€ν•˜κ²Œ κ²€ν† ν•΄ μ£Όμ‹€ 수 μžˆμŠ΅λ‹ˆκΉŒ?

@asabhaney λ§žμŠ΅λ‹ˆλ‹€... 이제 각 ν΄λŸ¬μŠ€ν„° λ…Έλ“œμ˜ λ‚΄λΆ€ IP μ£Όμ†Œμ— μ—°κ²°ν•˜λ €κ³  ν•©λ‹ˆλ‹€. κ³ μ • IP둜 도메인 이름을 μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή κ³ μ • IPλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜κ³  λ‹€λ₯Έ μ„œλΈŒλ„·μ˜ λ‚΄λΆ€ IPλ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•΄μ„œλŠ” μ•ˆ 되기 λ•Œλ¬Έμ— 이것은 μ—¬μ „νžˆ β€‹β€‹λ²„κ·Έμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. /etc/hosts μˆ˜μ •μ΄ ν•΄κ²°μ±…μ΄μ§€λ§Œ 더 큰 λ¬Έμ œμ— λŒ€ν•œ μž„μ‹œ μˆ˜μ •μ²˜λŸΌ 보이죠? 감사 ν•΄μš”.

이것이 κΈ°λ³Έ mongodb λ“œλΌμ΄λ²„μ˜ 근본적인 λ¬Έμ œμΈμ§€ κΆκΈˆν•©λ‹ˆλ‹€. Herokuλ₯Ό 톡해 볡제 μ„ΈνŠΈμ— μ—°κ²°ν•˜λŠ” 데 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 프라이머리λ₯Ό 찾지 λͺ»ν•΄ 폭격을 κ°€ν•˜λŠ” κ²ƒλΏμž…λ‹ˆλ‹€.

λ‚˜λŠ” 보지 μ•Šμ•˜μ§€λ§Œ μ•Œλ €μ§„ μž‘λ™ν•˜λŠ” 버전과 μž‘λ™ν•˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ μ•Œλ €μ§„ λ²„μ „μ˜ mongoose μ‚¬μ΄μ—μ„œ μ‚¬μš©λ˜λŠ” κΈ°λ³Έ mongodb λ“œλΌμ΄λ²„κ°€ λ³€κ²½λ˜μ§€ μ•ŠλŠ” ν•œ 였λ₯˜κ°€ μžˆλŠ” κΈ°λ³Έ λ“œλΌμ΄λ²„μΌ 수 μ—†μŠ΅λ‹ˆλ‹€.

+1 v4.5.10으둜 λ˜λŒλ¦¬λŠ” 것이 μž‘λ™ν•©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈν•œ λ…Έλ“œ 버전

v7.7.3
v7.10.0
LTS/λΆ•μ†Œ

Mongoose 버전이 ν…ŒμŠ€νŠΈλ˜μ—ˆκ³  "기본을 찾을 수 μ—†μŒ"으둜 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

5.6.2
5.7.0
5.8.5

λͺ½κ³  버전

3.2
2.6

μž¬ν˜„μ„±

μΌκ΄€λœ

이 버그λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•΄ μ‹œμž‘ν•΄μ•Ό ν•  λ‹¨μ„œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

이 λ¬Έμ œλŠ” https://github.com/Automattic/mongoose/issues/4517 κ³Ό 관련이

4.9.10 λ²„μ „μ˜ λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ Azure CosmosDB에 λŒ€ν•΄ 이 였λ₯˜κ°€ μ‘΄μž¬ν•¨μ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. μ—°κ²° λ¬Έμžμ—΄ 끝에 &readPreference=secondary λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠλŠ” ν•œ CosmosDBκ°€ μžˆλŠ” 4.5.10 λ“œλΌμ΄λ²„μ—λ„ μ‘΄μž¬ν•©λ‹ˆλ‹€. 그러면 μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

@dtzar κ³΅μ •ν•œ κ²½κ³ , CosmosDB/DocumentDB 지원은 ν˜„μž¬ λͺ½κ΅¬μŠ€μ˜ λͺ©ν‘œκ°€ μ•„λ‹™λ‹ˆλ‹€. ν•΄λ‹Ή db와 ν•¨κ»˜ mongooseλ₯Ό μ‚¬μš©ν•˜κΈ°λ‘œ μ„ νƒν•œ κ²½μš°μ—λŠ” ν˜Όμžμž…λ‹ˆλ‹€.

λ¬Έμ œλŠ” μ—¬μ „νžˆ Mongoose 4.10.2에 μ‘΄μž¬ν•©λ‹ˆλ‹€.

mongo κΈ°λ³Έ λ“œλΌμ΄λ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν–ˆλŠ”λ° λ¬Έμ œκ°€ 계속 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. λͺ½κ΅¬μŠ€κ°€ μ•„λ‹ˆλΌ ν΄λŸ¬μŠ€ν„°μ— μžˆλŠ” 각 μ»΄ν“¨ν„°μ˜ ꡬ성 파일 μ„€μ • IP μ£Όμ†Œμž…λ‹ˆλ‹€. IP μ£Όμ†Œλ₯Ό λ‚΄λΆ€ IPκ°€ μ•„λ‹Œ 곡용 μ™ΈλΆ€ IP μ£Όμ†Œλ‘œ λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€. Mongo Atlas 곡식 μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ IP에 κ΄€ν•œ ν•œ μˆ˜μ •μ΄ ν•„μš”ν•˜μ§€ μ•Šμ€ μƒνƒœλ‘œ 이미 μ„€μ •λ˜μ–΄ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

@wayofthefuture CosmosDB λ₯Ό λ§μ”€ν•˜μ‹œλŠ” κ±΄κ°€μš”? λ˜ν•œ 끝에 &replicaset=globaldbλ₯Ό μ‚­μ œν•˜λ©΄ CosmosDB에 μ—°κ²°ν•˜λŠ” 것이 Mongoose 4.5.10을 톡해 μž‘λ™ν•œλ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” μ—¬μ „νžˆ Mongoose 4.10.2에 μ‘΄μž¬ν•©λ‹ˆλ‹€.
λͺ¨λ“  μ—…λ°μ΄νŠΈ?

λ‹€μŒ ν˜•μ‹μœΌλ‘œ μ—°κ²° λ¬Έμžμ—΄μ„ μ§€μ •ν•˜λŠ” ν•œ MongoDB APIλ₯Ό μ‚¬μš©ν•˜μ—¬ CosmosDB에 μ—°κ²°ν•˜λŠ” 것을 λ³Ό 수 μžˆλŠ” ν•œ 이 λ¬Έμ œλŠ” μ΅œμ‹  Mongoose λ²„μ „μ—μ„œ 더 이상 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

mongodb://myservername:[email protected]:10255/mydbname?ssl=true&replicaSet=globaldb

그것은 사싀 λΆˆλŸ¬ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€ mydbname μ• μ € ν¬ν„Έμ—μ„œ 기본적으둜 μ œκ³΅ν•˜μ§€ μ•Šκ³  μ‚½μž…ν•΄μ•Όν•©λ‹ˆλ‹€ 그렇지 μ•ŠμœΌλ©΄ 연결이 μœ„μ˜ μ–ΈκΈ‰ ν•œ λ¬Έμ œμ™€ ν•¨κ»˜ μ‹€νŒ¨ ν•  κ²ƒμž…λ‹ˆλ‹€. mydbname에 μ œκ³΅ν•˜λŠ” 값은 μ€‘μš”ν•˜μ§€ μ•Šμ§€λ§Œ λ°˜λ“œμ‹œ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

/etc/hosts μ—μ„œ mongodb μ„œλ²„μ˜ 호슀트 이름을 μˆ˜μ •ν•˜μ‹­μ‹œμ˜€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

1.2.3.4 mdb01 mdb01.example.com
1.2.3.5 mdb02 mdb02.example.com
1.2.3.6 mdb03 mdb03.example.com

이 도움을 λ°”λžλ‹ˆλ‹€!

Herokuμ—μ„œ V. 4.11.5 . - μ²˜μŒμ—λŠ” 같은 λ¬Έμ œκ°€ μžˆμ—ˆμ§€λ§Œ μ—°κ²° λ¬Έμžμ—΄μ— replicaSet λ₯Ό μΆ”κ°€ν•˜μ—¬ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

mongodb://user:[email protected],mongolayer.com/database?replicaSet=database

replicaSet 둜 μ „λ‹¬λœ 값은 λ°μ΄ν„°λ² μ΄μŠ€ 이름과 λ™μΌν•©λ‹ˆλ‹€. λ‹€λ₯Έ 이름을 μ‚¬μš©ν•΄ λ³Έ 적이 μ—†μŠ΅λ‹ˆλ‹€.

이게 도움이 되길 λ°”λž€λ‹€.

ν•΄κ²°μ±…:

    options.replset = {
      socketOptions: {
        connectTimeoutMS: 60000, 
        keepAlive: 120
      }
    };

/etc/hosts 섀정이 μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

μ›Ή νƒ­μ—μ„œ λ‚˜μΉ¨λ°˜ 및 ν΄λŸ¬μŠ€ν„° 연결을 μ—΄κ³  λ‚˜μΉ¨λ°˜μ— 연결을 μ„ νƒν•˜λ©΄ λ‚˜μΉ¨λ°˜ 앱이 μžλ™μœΌλ‘œ 연결을 감지할 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. :)

λ…Έλ“œ 8μ—μ„œ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λ…Έλ“œ 6은 μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€. μ–΄λ–€ 아이디어?

였λ₯˜: μ„œλ²„ μƒνƒœλ₯Ό 확인할 수 μ—†μŠ΅λ‹ˆλ‹€.
canCheckoutReaderμ—μ„œ (PATH_TO/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:779:12)
Server.checkoutReaderμ—μ„œ (PATH_TO/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/connection/server.js:793:16)
Cursor.nextObjectμ—μ„œ (PATH_TO/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/cursor.js:748:48)
Collection.findOneμ—μ„œ (PATH_TO/node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/collection/query.js:162:10)
PATH_TO/node_modules/connect-mongo/lib/connect-mongo.js:223:18
MongoStore._get_collectionμ—μ„œ (PATH_TO/node_modules/connect-mongo/lib/connect-mongo.js:156:21)
MongoStore.getμ—μ„œ (PATH_TO/node_modules/connect-mongo/lib/connect-mongo.js:222:10)
μ„Έμ…˜μ—μ„œ(PATH_TO/node_modules/express-session/index.js:367:11)
Layer.handleμ—μ„œ [handle_request둜] (PATH_TO/node_modules/express/lib/router/layer.js:82:5)
trim_prefixμ—μ„œ(PATH_TO/node_modules/express/lib/router/index.js:269:13)
PATH_TO/node_modules/express/lib/router/index.js:236:9μ—μ„œ
Function.proto.process_paramsμ—μ„œ (PATH_TO/node_modules/express/lib/router/index.js:311:12)
PATH_TO/node_modules/express/lib/router/index.js:227:12μ—μ„œ
Function.match_layerμ—μ„œ (PATH_TO/node_modules/express/lib/router/index.js:294:3)
λ‹€μŒμ— (PATH_TO/node_modules/express/lib/router/index.js:188:10)
cookieParserμ—μ„œ (PATH_TO/node_modules/cookie-parser/index.js:48:5)

λ…Έλ“œ 버전
v6.13.0 -> μž‘λ™
v8.10.0 -> ν•΄λ‹Ή 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. λͺ½κ΅¬μŠ€λŠ” Node8을 μ§€μ›ν•©λ‹ˆκΉŒ?

npm λͺ©λ‘ | κ·Έλ ™ λͺ½κ΅¬μŠ€
β”œβ”€β”¬ λͺ½κ΅¬μŠ€ @5.0.11
β”‚ β”œβ”€β”€ λͺ½κ΅¬μŠ€- λ ˆκ±°μ‹œ[email protected]

npm λͺ©λ‘ | κ·Έλ ™ λͺ½κ³ DB
β”‚ └── [email protected] κ΄€λ ¨ μ—†λŠ”
β”œβ”€β”¬ [email protected] μœ νš¨ν•˜μ§€
β”‚ └── [email protected] μ™ΈλΆ€
β”‚ β”œβ”€β”¬ [email protected]
β”‚ β”‚ └─┬ [email protected]

MongooseλŠ” 포트 26000μ—μ„œ Mongos에 μ—°κ²°ν•©λ‹ˆλ‹€. Robomongo둜 Mongodb에 μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

@sravzpublic μŠ€νƒ 좔적을 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄μ‹­μ‹œμ˜€. 였λ₯˜κ°€ connect-mongo에 있고 mongoose와 아무 관련이 μ—†μŒμ„ λ³΄μ—¬μ€λ‹ˆλ‹€. FWIW, mongooseλŠ” λ…Έλ“œ 8을 μ§€μ›ν•©λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이것을 NodeJS 6.x의 Mongoose 5.2.12( μ—¬κΈ° 에

"mongoose": "^5.4.19"μ—μ„œ 이 λ¬Έμ œκ°€ λ°œμƒν•˜κ³  μ—¬κΈ°μ—μ„œ κ°œλ°©ν˜• stackoverflow에 λŒ€ν•œ 예λ₯Ό μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€. https://stackoverflow.com/questions/55637808/mongoerror-no-mongos-proxy-available-when -볡제본 μ„ΈνŠΈμ— μ—°κ²°. 이것이 λ„ˆλ¬΄ μ˜€λž«λ™μ•ˆ 그리고 버전 μ—…κ·Έλ ˆμ΄λ“œλ₯Ό ν†΅ν•΄μ„œλ„ 곡개된 문제인 것 κ°™μ•„ μš°λ €λ©λ‹ˆλ‹€. 흠....

μΆ”μ‹ : λˆ„κ΅¬λ“ μ§€ 이것을 μ•Œμ•„λ‚΄λ©΄ 전체 μž‘μ—… 예제λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? 이 μŠ€λ ˆλ“œμ—λŠ” μ–΄λ–€ 버전을 μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€μ‘°μ°¨ λͺ¨λ₯΄λŠ” μ†”λ£¨μ…˜μ— λŒ€ν•œ ꢌμž₯ 사항이 μžˆμŠ΅λ‹ˆλ‹€...

λ…Έλ“œ 8μ—μ„œ 이 λ¬Έμ œμ— μ§λ©΄ν–ˆμŠ΅λ‹ˆλ‹€. λ…Έλ“œ 10으둜 μ—…κ·Έλ ˆμ΄λ“œν•˜κ³  μ΄λŸ¬ν•œ νŒ¨ν‚€μ§€λ₯Ό κ°–κ³  mongodb μ—°κ²° 논리λ₯Ό μ•„λž˜λ‘œ μž¬κ΅¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€. 그것은 νš¨κ³Όκ°€ μžˆμ—ˆλ‹€.

고양이 νŒ¨ν‚€μ§€.json | κ·Έλ ™ λͺ½κ³ 
"μ—°κ²° λͺ½κ³ ": "^2.0.1",
"mongodb": ">=3.0.4",
"λͺ½κ΅¬μŠ€": ">=5.0.11",

λ…Έλ“œ -v
v10.4.1

db.version()
3.4.15

config.db = mongodb://user:pass<strong i="14">@host</strong>:26000/dbname?ssl=true

// Get Mongoose to use the global promise library
mongoose.Promise = global.Promise;
var db = mongoose.connect(config.db, {
    auto_reconnect: true,
    socketTimeoutMS: 0,
    connectTimeoutMS: 0
  },
  function (err) {
    if (err) {
      console.error(chalk.red('Could not connect to MongoDB!' + err));
      console.log(chalk.red(err));
    }
  });

// When successfully connected
mongoose.connection.on('connected', function () {
 };

// If the connection throws an error
mongoose.connection.on('error', function (err) {
  console.log('Mongoose default connection error: ' + err);
});

// When the connection is disconnected
mongoose.connection.on('disconnected', function () {
  console.log('Mongoose default connection disconnected');
});

process.on('SIGINT', function () {
  mongoose.connection.close(function () {
    console.log('Mongoose default connection disconnected through app termination');
    process.exit(0);
  });
});

λ‚˜λŠ” λ¬Έμ œκ°€ ν˜ΈμŠ€νŠΈμ— μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. (cluster0-shard-00-00-vmyny.mongodb.net) κΈ°λ³Έ 것을 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

λ‚˜λŠ” 이것을 닫을 κ²ƒμž…λ‹ˆλ‹€. λ¬Έμ œλŠ” mongooseκ°€ μ•„λ‹ˆλΌ connect-mongo에 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰