MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Lỗi lựa chọn máy chủ docker và mongo-go-driver

Điều này là do hostname chưa được giải quyết từ máy chủ Docker. Trong Docker, các trường hợp mongo1 , mongo2mongo3 có thể truy cập được bằng những tên đó. Tuy nhiên, không thể truy cập những tên này từ máy chủ Docker. Điều này được thể hiện rõ qua dòng này:

Addr: mongo2:27017, Type: Unknown, State: Connected, Average RTT: 0, Last error: dial tcp: lookup mongo2: no such host

Trình điều khiển MongoDB sẽ cố gắng server discovery từ (các) thành viên tập hợp bản sao đã cho; nó sẽ tìm thấy tất cả các nút khác trong tập hợp bản sao (thông qua rs.conf ). Vấn đề ở đây là tập hợp bản sao được đặt với tên mongo<N> , trình điều khiển (chạy trong máy chủ Docker) sẽ không thể phân giải những tên này. Bạn có thể xác nhận điều này bằng cách thử ping mongo1 từ máy chủ Docker.

Bạn có thể thử chạy ứng dụng từ một phiên bản Docker khác chia sẻ cùng một mạng Docker với tập hợp bản sao. Hoặc, sửa đổi mạng Docker như vậy để cho phép các tên máy chủ có thể phân giải.

CẬP NHẬT:

Về nhận xét của bạn về lý do tại sao sử dụng mongo shell hoặc PyMongo làm.

Điều này là do sự khác biệt trong chế độ kết nối. Khi chỉ định một nút duy nhất, tức là mongodb://node1:27017 trong shell hoặc PyMongo, việc khám phá máy chủ sẽ không được thực hiện. Thay vào đó, nó sẽ cố gắng kết nối với nút đơn đó (không phải là một phần như một tập hợp bản sao). Điểm bắt buộc là bạn cần kết nối với nút chính của tập hợp bản sao để ghi (bạn phải biết nút nào). Nếu bạn muốn kết nối như một tập hợp bản sao, bạn phải xác định tên tập hợp bản sao.

Ngược lại với mongo-go-driver , theo mặc định, nó sẽ thực hiện khám phá máy chủ và cố gắng kết nối như một tập hợp bản sao. Nếu bạn muốn kết nối dưới dạng một nút duy nhất, thì bạn cần chỉ định connect=direct trong URI kết nối. Xem thêm Ví dụ về Kết nối Trực tiếp




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đặt thời gian chờ Mongo trong Spring Boot

  2. Làm cách nào để lấy một tài liệu nhúng cụ thể bên trong bộ sưu tập MongoDB?

  3. Chuyển đổi kiểu dữ liệu trong MongoDB

  4. Làm thế nào để truy vấn tài liệu trong mongodb (pymongo) nơi tất cả các từ khóa tồn tại trong một trường?

  5. Bản đồ PHP MongoDB giảm lỗi xác nhận db