Cara: Replikasi MongoDB Docker pada Layanan Container Elastis


10

Saya memiliki aplikasi Node.js bersama dengan database MongoDB yang berjalan pada AWS ECS. Pengaturan yang saya dapatkan saat ini terdiri dari 2 ELB dan 2 Instans yang menjalankan masing-masing wadah Docker dengan layanan yang ditugaskan (node ​​/ mongo):

Elastic Load Balancer -> Dockerized Node -> Elastic Load Balancer -> Dockerized MongoDB

Saya menjalankan gambar Docker Resmi untuk MongoDB tersedia di sini: https://registry.hub.docker.com/_/mongo/

Adakah petunjuk bagaimana saya bisa menggunakan replikaSet untuk MongoDB menggunakan Docker dan ECS, masing-masing replika berjalan pada instance yang berbeda?

Jawaban:


2

Jangan galangkan database. Kontainer Docker dimaksudkan untuk sementara dan tidak menyimpan data. Itu tidak sesuai untuk basis data.

Secara khusus, jangan mencoba untuk mengurangi galat MongoDB . Pengaturan untuk set replika sangat stateful dan kompleks. Anda harus menjalankan banyak perintah secara berurutan dan hanya sekali . Jika Anda melewatkan perintah apa pun atau jika sebuah node mati, seluruh kluster mungkin mati kunci dan Anda akan dipaksa untuk memulai dari awal.

Docker memiliki ide sendiri tentang bagaimana aplikasi seharusnya berperilaku. Akan sangat sulit untuk membuatnya bekerja di dalam Docker.

Jika Anda ingin sebuah cluster dengan 3 replika, Anda harus mendapatkan 3 instance AWS dan mengatur MongoDB pada instance. Cari mongodb setting up a replica set on <OS>di Google, yang akan memberi Anda tutorial terbaru.


2

FireCamp melakukannya. FireCamp bisa menggunakan Replika MongoDB di AWS ECS dengan sangat mudah. 1) menyebarkan ECS cluster dengan template cloudformation, 2) menyebarkan MongoDB ReplicaSet dengan satu perintah. Periksa wiki Instalasi FireCamp untuk detailnya.

Untuk keamanan, lebih baik menjalankan aplikasi Node.js di kluster ECS lain. Contoh EC2 yang menjalankan MongoDB tidak boleh diekspos ke dunia eksternal.

Elastic Load Balancer tidak diperlukan untuk aplikasi Node.js untuk mengakses Replika MongoDB. Setiap replika mendapat nama dns unik. Aplikasi Node.js bisa dengan mudah mengakses MongoDB dengan nama dns.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.