GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Memasang Cluster Sharded MongoDB di CentOS 7

Berbagi adalah proses MongoDB untuk menyimpan kumpulan data di berbagai mesin. Ini memungkinkan Anda untuk melakukan skala data horizontal, mempartisi data di seluruh instance independen, dan itu bisa berupa 'Set Replika'. Partisi kumpulan data pada 'Sharding' menggunakan kunci shard. Sharding memungkinkan Anda menambahkan lebih banyak mesin berdasarkan pertumbuhan data di tumpukan Anda.

Sharding dan Replikasi

Mari kita membuatnya sederhana. Ketika Anda memiliki koleksi musik, 'Sharding' akan menyimpan dan menyimpan koleksi musik Anda ke dalam folder yang berbeda. 'Replikasi', di sisi lain, hanya menyinkronkan koleksi musik Anda ke instance lain.

Tiga Komponen Sharding

Pecahan - Digunakan untuk menyimpan semua data, dan dalam lingkungan produksi, setiap pecahan adalah kumpulan replika. Menyediakan ketersediaan tinggi dan konsistensi data.

Server Konfigurasi - Digunakan untuk menyimpan metadata cluster, berisi pemetaan kumpulan data cluster dan pecahan. Data ini digunakan oleh server mongos/query untuk mengirimkan operasi. Disarankan untuk menggunakan lebih dari 3 instans dalam produksi.

Router Mongos/Kueri - Ini hanya instance mongo yang berjalan sebagai antarmuka aplikasi. Aplikasi akan membuat permintaan ke instance mongos, dan kemudian mongos akan mengirimkan permintaan menggunakan kunci shard ke set replika shard.

Prasyarat

  • Server 2 centOS 7 sebagai Kumpulan Replika Konfigurasi
      • 10.0.15.31      configsvr1
      • 10.0.15.32      configsvr2
  • Server 4 CentOS 7 sebagai Kumpulan Replika Shard
      • 10.0.15.21      shardsvr1
      • 10.0.15.22      shardsvr2
      • 10.0.15.23      shardsvr3
      • 10.0.15.24      shardsvr4
  • 1 server CentOS 7 sebagai mongos/Router Kueri
      • 10.0.15.11       mongo
  • Hak istimewa root
  • Setiap server terhubung ke server lain

Langkah 1 - Nonaktifkan SELinux dan Konfigurasikan Host

Untuk tutorial ini, kami akan menonaktifkan SELinux. Ubah konfigurasi SELinux dari 'enforcing' menjadi 'disabled'.

Terhubung ke semua node melalui OpenSSH.

ssh [dilindungi email]

Nonaktifkan SELinux dengan mengedit file konfigurasi.

vim /etc/sysconfig/selinux

Ubah nilai SELinux menjadi 'dinonaktifkan'.

SELINUX=dinonaktifkan

Simpan dan keluar.

Selanjutnya, edit file host di setiap server.

vim /etc/hosts

Tempel konfigurasi host berikut:

10.0.15.31 ConfigSvr1
10.0.15.32 ConfigSvr2
10.0.15.11 Mongos
10.0.15.21 Shardsvr1
10.0.15.22 Shardsvr2
10.0.15.23 Shardsvr3     10.0.15.24      shardsvr4

Simpan dan keluar.

Sekarang restart semua server:

boot ulang

Langkah 2 - Instal MongoDB di Semua Instance

Kami akan menggunakan MongoDB (MongoDB 3.4) terbaru untuk semua instance. Tambahkan repositori MongoDB baru dengan menjalankan perintah berikut:

cat <<'EOF'>> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb .org/static/pgp/server-3.4.asc
EOF

Sekarang instal mongodb 3.4 dari repositori mongodb menggunakan perintah yum di bawah ini.

sudo yum -y install mongodb-org

Setelah mongodb terinstal, gunakan 'mongo ' atau 'mongod ' dengan cara berikut untuk memeriksa detail versi.

mongod --version

Langkah 3 - Buat Kumpulan Replika Server Konfigurasi

Di bagian prasyarat, kami telah mendefinisikan server konfigurasi dengan 2 mesin 'configsvr1' dan 'configsvr2'. Dan pada langkah ini, kita akan mengonfigurasinya menjadi set replika.

Jika ada layanan mongod yang berjalan di server, hentikan dengan perintah systemctl berikut.

systemctl stop mongod

Edit konfigurasi mongodb default 'mongod.conf '.

vim /etc/mongod.conf

Ubah jalur penyimpanan DB ke direktori Anda sendiri. Kami akan menggunakan '/data/db1' untuk server pertama, dan direktori '/data/db2' untuk server konfigurasi kedua.

penyimpanan:
  dbPath:/data/db1

Ubah nilai baris 'bindIP' ke alamat jaringan internal Anda. 'configsvr1' dengan alamat IP 10.0.15.31, dan server kedua dengan 10.0.15.32.

bindIP:10.0.15.31

Di bagian replikasi, tetapkan nama replikasi.

replikasi:
  replSetName:"replconfig01"

Dan di bawah bagian sharding, tentukan peran instance. Kami akan menggunakan dua contoh ini sebagai 'configsvr'.

sharding:
  clusterRole:configsvr

Simpan dan keluar.

Selanjutnya, kita harus membuat direktori baru untuk data MongoDB, lalu mengubah hak kepemilikan direktori tersebut menjadi pengguna 'mongod'.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Selanjutnya, jalankan layanan mongod dengan perintah berikut.

mongod --config /etc/mongod.conf

Anda dapat memeriksa apakah layanan mongod berjalan pada port 27017 dengan perintah netstat.

netstat -plntu

Configsvr1 dan Configsvr2 siap untuk set replika. Hubungkan ke server 'configsvr1' dan akses mongo shell.

ssh [dilindungi email]
mongo --host configsvr1 --port 27017

Mulai nama set replika dengan semua anggota configsvr menggunakan kueri di bawah.

rs.initiate(
  {
    _id:"replconfig01",
    configsvr:true,
    anggota:[
      { _id :0, host :"configsvr1 :27017" },
      { _id :1, host :"configsvr2:27017" }
    ]
  }
)

Jika Anda mendapatkan hasil '{ "ok" :1 } ', itu berarti configsvr sudah dikonfigurasi dengan set replika.

dan Anda akan dapat melihat simpul mana yang master dan simpul mana yang sekunder.

rs.isMaster()
rs.status()

Konfigurasi Config Server Replica Set telah selesai.

Langkah 4 - Buat Kumpulan Replika Shard

Pada langkah ini, kita akan mengkonfigurasi server 4 centos 7 sebagai server 'Shard' dengan 2 'Replica Set'.

  • 2 server - 'shardsvr1 ' dan 'shardsvr2 ' dengan nama kumpulan replika:'shardreplica01 '
  • 2 server - 'shardsvr3 ' dan 'shardsvr4 ' dengan nama kumpulan replika:'shardreplica02 '

Hubungkan ke setiap server dan hentikan layanan mongod (Jika layanan sedang berjalan), dan edit file konfigurasi MongoDB.

systemctl stop mongod
vim /etc/mongod.conf

Ubah penyimpanan default ke direktori khusus Anda.

penyimpanan:
  dbPath:/data/db1

Di baris 'bindIP', ubah nilainya menjadi alamat jaringan internal Anda.

bindIP:10.0.15.21

Di bagian replikasi, Anda dapat menggunakan 'shardreplica01 ' untuk contoh pertama dan kedua. Dan gunakan 'shardreplica02 ' untuk server pecahan ketiga dan keempat.

replication:
  replSetName:"shardreplica01"

Selanjutnya, tentukan peran server. Kami akan menggunakan semua ini sebagai instance shardsvr.

sharding:
  clusterRole:shardsvr

Simpan dan keluar.

Sekarang buat direktori baru untuk data MongoDB.

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

Mulai layanan mongod.

mongod --config /etc/mongod.conf

Periksa apakah MongoDB berjalan dengan perintah di bawah ini:

netstat -plntu

Anda akan melihat MongoDB berjalan di alamat jaringan lokal.

Selanjutnya, buat set replika baru untuk 2 instance pecahan ini. Hubungkan ke 'shardsvr1' dan akses mongo shell.

ssh [dilindungi email]
mongo --host shardsvr1 --port 27017

Mulai set replika dengan nama 'shardreplica01 ', dan anggotanya adalah 'shardsvr1 ' dan 'shardsvr2 '.

rs.initiate(
  {
    _id :"shardreplica01",
    anggota:[
      { _id :0, host :"shardsvr1:27017" },
      { _id :1, host :"shardsvr2:27017" }
    ]
  }
)

Jika tidak ada kesalahan, Anda akan melihat hasil seperti gambar di bawah ini.

Hasil dari shardsvr3 dan shardsvr4 dengan nama kumpulan replika 'shardreplica02 '.

Ulangi langkah ini di shardsvr3 dan shardsvr4 server dengan nama kumpulan replika yang berbeda 'shardreplica02 '.

Sekarang kami telah membuat 2 set replika sebagai pecahan - 'shardreplica01 ' dan 'shardreplica02 '.

Langkah 5 - Konfigurasikan mongos/Router Kueri

'Query Router' atau mongos hanyalah contoh yang menjalankan 'mongos'. Anda dapat menjalankan mongos dengan file konfigurasi, atau menjalankannya hanya dengan baris perintah.

Masuk ke server mongos dan hentikan layanan MongoDB.

ssh [email protected]  
systemctl stop mongod

Jalankan mongos dengan perintah di bawah ini.

mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

gunakan opsi '--configdb' untuk menentukan server konfigurasi. Jika Anda sedang dalam produksi, gunakan setidaknya 3 server konfigurasi.

Anda akan melihat hasilnya di bawah.

Berhasil terhubung ke configsvr1:27017
Berhasil terhubung ke configsvr2:27017

instance mongos sedang berjalan.

Langkah 6 - Tambahkan pecahan ke mongos/Perute Kueri

Buka shell lain dari langkah 5, sambungkan ke server mongo lagi dan akses shell mongo.

ssh [dilindungi email]
mongo --host mongos --port 27017

Tambahkan server pecahan dengan kueri sh mongodb.

Untuk 'shardreplica01 ' contoh.

sh.addShard( "shardreplica01/shardsvr1:27017")
sh.addShard( "shardreplica01/shardsvr2:27017")

Untuk 'shardreplica02 ' contoh.

sh.addShard( "shardreplica02/shardsvr3:27017")
sh.addShard( "shardreplica02/shardsvr4:27017")

Pastikan tidak ada kesalahan dan periksa status pecahan.

sh.status()

Anda akan membagi status seperti yang ditunjukkan pada tangkapan layar di bawah ini.

Kami memiliki 2 set replika pecahan dan 1 instance mongos yang berjalan di tumpukan kami.

Langkah 7 - Pengujian

Sekarang kita akan menguji server MongoDB dengan mengaktifkan sharding dan kemudian menambahkan dokumen.

Akses server mongo shell mongo.

ssh [dilindungi email]
mongo --host mongos --port 27017

Aktifkan Sharding untuk Database

Buat database baru dan aktifkan sharding untuk database baru.

gunakan lemp
sh.enableSharding("lemp")
sh.status()

Sekarang lihat status database - telah dipartisi ke set replika 'shardreplica01'.

Aktifkan Sharding untuk Koleksi

Selanjutnya, tambahkan koleksi baru ke database dengan dukungan sharding. Kami akan menambahkan koleksi baru bernama 'tumpukan' dengan 'nama' koleksi pecahan, dan kemudian melihat database dan status koleksi.

sh.shardCollection("lemp.stack", {"name":1})
sh.status()

Koleksi baru 'tumpukan' dengan 'nama' koleksi pecahan telah ditambahkan.

Menambahkan dokumen ke 'tumpukan' koleksi.

Sekarang masukkan dokumen ke koleksi. Saat kita menambahkan dokumen ke koleksi di sharded cluster, kita harus menyertakan 'shard key'.

Anda dapat menggunakan contoh di bawah ini. Kami menggunakan kunci pecahan 'nama ', seperti yang kami tambahkan saat mengaktifkan sharding untuk koleksi.

db.stack.save({
    "name":"LEMP Stack",
    "apps":["Linux", "Nginx", "MySQL", "PHP"],
})

Dokumen di berhasil ditambahkan ke koleksi, seperti yang ditunjukkan pada tangkapan layar berikut.

Jika Anda ingin menguji database, Anda dapat menghubungkan ke kumpulan replika 'shardreplica01 ' Server UTAMA dan buka shell mongo. Saya masuk ke server PRIMARY 'shardsvr2'.

ssh [dilindungi email]
mongo --host shardsvr2 --port 27017

Periksa database yang tersedia di set replika.

tampilkan dbs
gunakan lemp
db.stack.find()

Anda akan melihat database, koleksi, dan dokumen yang tersedia di replika set.

Cluster sharded MongoDB pada CentOS 7 berhasil diinstal dan diterapkan.


Cent OS
  1. Cara Menginstal MongoDB Pada CentOS 8 / RHEL 8

  2. Cara Menginstal MongoDB 4.2 / 4.0 di CentOS 6 / RHEL 6

  3. Cara Menginstal MongoDB 4.4 / 4.2 di CentOS 7 / RHEL 7

  1. Cara Menginstal MongoDB di CentOS 8

  2. Cara menginstal mongodb di RHEL 8 / CentOS 8

  3. Cara Menginstal FlintCMS di CentOS 7

  1. Cara Menginstal MongoDB di CentOS 7

  2. Cara Menginstal R di CentOS 7

  3. Cara Menginstal MongoDB di CentOS 8