PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menerapkan Pengaturan Multi-Pusat Data untuk PostgreSQL - Bagian Satu

Memiliki pengaturan multi-pusat data adalah topologi umum untuk Disaster Recovery Plan(DRP), tetapi ada beberapa batasan dalam menerapkan lingkungan semacam ini.

Pertama-tama Anda harus menyelesaikan komunikasi antara pusat data dengan menggunakan akses SSH atau mengonfigurasi VPN. Kemudian, Anda memiliki latensi yang (bergantung pada konfigurasi) dapat memengaruhi cluster database Anda. Terakhir, Anda harus memikirkan cara melakukan failover. Bisakah aplikasi mengakses node jarak jauh jika terjadi kegagalan master?

Di blog ini, kami akan menunjukkan cara menerapkan pengaturan multi-pusat data untuk PostgreSQL yang mencakup semua poin yang disebutkan sebelumnya, beberapa di antaranya menggunakan ClusterControl. Agar tidak terlalu membosankan, kami akan membaginya menjadi dua bagian. Pada bagian pertama, kita akan membahas konektivitas antar pusat data. Yang kedua adalah tentang penerapan dan konfigurasi itu sendiri, jadi mari kita mulai!

Tujuan

Misalnya Anda ingin memiliki topologi berikut:

Di mana aplikasi Anda terhubung ke penyeimbang beban, node basis data utama , dan satu node siaga di satu pusat data, dan satu node siaga lainnya di pusat data sekunder untuk tujuan DR. Ini bisa menjadi pengaturan minimal untuk memiliki lingkungan multi-pusat data. Anda dapat menghindari penggunaan penyeimbang beban, tetapi jika terjadi kegagalan, Anda harus mengkonfigurasi ulang aplikasi Anda untuk terhubung ke master baru, jadi untuk menghindarinya kami sarankan untuk menggunakannya, atau bahkan gunakan dua di antaranya (satu di setiap DC) untuk menghindari satu titik kegagalan.

Untuk membuatnya lebih jelas, mari kita berikan beberapa alamat IP publik ke pusat data 1 dan 2 sebagai contoh.

Di pusat data 1, jaringan publik adalah 35.166.37.0/24, jadi mari kita tetapkan alamat IP berikut dengan cara ini:

APP: 35.166.37.10

Load Balancer + ClusterControl: 35.166.37.11

Primary Node: 35.166.37.12

Standby 1 Node: 35.166.37.13

Di pusat data 2, jaringan publik adalah 18.197.23.0/24, jadi:

Standby 2 Node: 18.197.23.14

Konektivitas Pusat Data

Masalah pertama bisa jadi yang ini. Anda dapat mengonfigurasi VPN di antara keduanya, dan itu pasti cara yang paling aman, tetapi karena kami telah membahas konfigurasi VPN di blog sebelumnya, dan untuk membuatnya sesingkat mungkin, kami akan menghubungkannya melalui akses SSH menggunakan kunci pribadi/publik .

Mari kita buat pengguna bernama 'remote' di semua node (untuk menghindari penggunaan root):

$ useradd remote

$ passwd remote

Changing password for user remote.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

Dan Anda dapat menambahkannya ke file sudoers untuk menetapkan hak istimewa:

$ visudo

remote    ALL=(ALL)       ALL

Sekarang, di server penyeimbang beban (yang juga akan menjadi server ClusterControl), buat pasangan kunci untuk pengguna baru:

$ su remote

$ ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/home/remote/.ssh/id_rsa):

Created directory '/home/remote/.ssh'.

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/remote/.ssh/id_rsa.

Your public key has been saved in /home/remote/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:hgVe/unld9+r/Ynk1HM+t089A41bwxFlPYt5/q+ZyL8 [email protected]

The key's randomart image is:

+---[RSA 3072]----+

|      . .   .=|

|     . +     oo|

|      . o o.o|

|       o . . o+o.|

|      . S o .oo= |

|       . . o =.o|

|          . .+.=*|

|           [email protected]|

|            o=EB/|

+----[SHA256]-----+

Now you will have a new directory in the home

Salin kunci publik ke setiap node menggunakan Alamat IP publik jarak jauh:

$ ssh-copy-id 35.166.37.12

/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/remote/.ssh/id_rsa.pub"

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '35.166.37.12'"

and check to make sure that only the key(s) you wanted were added.

Perintah ini akan menyalin kunci publik Anda ke simpul jarak jauh di file otor_keys, jadi Anda akan mengaksesnya menggunakan kunci pribadi.

Lalu, coba akses:

$ ssh 35.166.37.12

Pastikan lalu lintas SSH diizinkan di firewall Anda, dan untuk membuatnya lebih aman, Anda harus mengizinkannya hanya dari sumber yang dikenal (mis. dari 35.166.37.0/24).

Misalnya, jika Anda menggunakan AWS, Anda harus mengizinkan lalu lintas dari 35.166.37.0/24 ke port SSH dengan cara ini:

Atau jika Anda menggunakan IPTABLES, Anda harus menjalankan sesuatu seperti ini:

$ iptables -A INPUT -p tcp -s 35.166.37.0/24 --destination-port 22 -j ACCEPT

Atau perintah serupa jika Anda menggunakan solusi firewall yang berbeda.

Untuk membuatnya sedikit lebih aman, kami sarankan menggunakan port SSH yang berbeda dari port default, dan juga dapat berguna menggunakan beberapa alat untuk melarang beberapa upaya yang gagal untuk mengaksesnya, seperti fail2ban.

Kesimpulan

Pada titik ini, jika semuanya berjalan dengan baik, Anda akan memiliki komunikasi SSH antara pusat data Anda, jadi langkah selanjutnya adalah menerapkan cluster PostgreSQL Anda dan mengelola failover jika terjadi kegagalan, seperti yang akan kita lihat di bagian kedua blog ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi Tanggal &Waktu PostgreSQL

  2. Driver QPSQL tidak dimuat Qt

  3. PostgreSQL:bagaimana cara mengonversi dari zaman Unix hingga saat ini?

  4. Kumpulkan Kunci JSON Rekursif Di Postgres

  5. Bagaimana saya bisa mengekspor skema database di PostgreSQL?