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

Penerapan &Konfigurasi PostgreSQL dengan Wayang

Puppet adalah perangkat lunak sumber terbuka untuk manajemen konfigurasi dan penerapan. Didirikan pada tahun 2005, multi-platform dan bahkan memiliki bahasa deklaratif sendiri untuk konfigurasi.

Tugas yang berkaitan dengan administrasi dan pemeliharaan PostgreSQL (atau perangkat lunak lain sebenarnya) terdiri dari proses harian dan berulang yang memerlukan pemantauan. Ini berlaku bahkan untuk tugas-tugas yang dioperasikan oleh skrip atau perintah melalui alat penjadwalan. Kompleksitas tugas ini meningkat secara eksponensial ketika dijalankan pada infrastruktur besar, namun, menggunakan Wayang untuk tugas semacam ini sering kali dapat memecahkan jenis masalah skala besar ini karena Wayang memusatkan dan mengotomatiskan kinerja operasi ini dengan cara yang sangat gesit.

Puppet bekerja dalam arsitektur pada tingkat klien/server tempat konfigurasi dilakukan; operasi ini kemudian disebarkan dan dieksekusi pada semua klien (juga dikenal sebagai node).

Biasanya berjalan setiap 30 menit, node agen akan mengumpulkan sekumpulan informasi (jenis prosesor, arsitektur, alamat IP, dll.), juga disebut sebagai fakta, kemudian mengirimkan informasi tersebut ke master yang sedang menunggu jawaban untuk melihat apakah ada konfigurasi baru untuk diterapkan.

Fakta-fakta ini akan memungkinkan master untuk menyesuaikan konfigurasi yang sama untuk setiap node.

Dengan cara yang sangat sederhana, Wayang adalah salah satu alat DevOps yang paling penting tersedia hari ini. Di blog ini kita akan melihat hal-hal berikut...

  • Kasus Penggunaan untuk Wayang &PostgreSQL
  • Memasang Wayang
  • Mengonfigurasi &Memprogram Wayang
  • Mengonfigurasi Wayang untuk PostgreSQL 

Penginstalan dan penyiapan Wayang (versi 5.3.10) yang dijelaskan di bawah ini dilakukan di sekumpulan host yang menggunakan CentOS 7.0 sebagai sistem operasi.

Kasus Penggunaan untuk Wayang &PostgreSQL

Misalkan ada masalah di firewall Anda pada mesin yang menghosting semua server PostgreSQL Anda, maka Anda perlu menolak semua koneksi keluar ke PostgreSQL, dan melakukannya sesegera mungkin.

Boneka adalah alat yang sempurna untuk situasi ini, terutama karena kecepatan dan efisiensi penting. Kita akan membicarakan contoh yang disajikan di bagian “Mengonfigurasi Wayang untuk PostgreSQL” dengan mengelola parameter listen_addresses.

Memasang Wayang

Ada serangkaian langkah umum yang harus dilakukan baik pada host master atau agen:

Langkah Pertama

Memperbarui file /etc/hosts dengan nama host dan alamat IP mereka

192.168.1.85 agent agent.severalnines.com

192.168.1.87 master master.severalnines.com puppet

Langkah Kedua

Menambahkan repositori Wayang di sistem

$ sudo rpm –Uvh https://yum.puppetlabs.com/puppet5/el/7/x86_64/puppet5-release-5.0.0-1-el7.noarch.rpm

Untuk sistem operasi lain atau versi CentOS, repositori yang paling sesuai dapat ditemukan di Puppet, Inc. Yum Repositories.

Langkah Ketiga

Konfigurasi server NTP (Network Time Protocol)

$ sudo yum -y install chrony

Langkah Empat

Chrony digunakan untuk menyinkronkan jam sistem dari server NTP yang berbeda dan dengan demikian menjaga sinkronisasi waktu antara server master dan agen.

Setelah chrony diinstal  harus diaktifkan dan dimulai ulang:

$ sudo systemctl enable chronyd.service

$ sudo systemctl restart chronyd.service

Langkah Kelima

Nonaktifkan parameter SELinux

Pada file /etc/sysconfig/selinux parameter SELINUX (Security-Enhanced Linux)  harus dinonaktifkan agar tidak membatasi akses pada kedua host.

SELINUX=disabled

Langkah Enam

Sebelum instalasi Wayang (baik master atau agen), firewall di host-host ini harus ditentukan dengan tepat:

$ sudo firewall-cmd -–add-service=ntp -–permanent 

$ sudo firewall-cmd –-reload 

Memasang Wayang  Master

Setelah repositori paket dalang5-release-5.0.0-1-el7.noarch.rpm ditambahkan ke sistem, instalasi dalang dapat dilakukan:

$ sudo yum install -y puppetserver

Parameter alokasi memori maksimum adalah pengaturan penting untuk memperbarui file /etc/sysconfig/puppetserver menjadi 2GB (atau 1GB jika layanan tidak dimulai):

JAVA_ARGS="-Xms2g –Xmx2g "

Dalam file konfigurasi /etc/puppetlabs/puppet/puppet.conf perlu menambahkan parameterisasi berikut:

[master]

dns_alt_names=master.severalnines.com,puppet



[main]

certname = master.severalnines.com

server = master.severalnines.com

environment = production

runinterval = 1h

Layanan dollserver menggunakan  port 8140 untuk mendengarkan permintaan node, oleh karena itu perlu dipastikan bahwa port ini akan diaktifkan:

$ sudo firewall-cmd --add-port=8140/tcp --permanent

$ sudo firewall-cmd --reload

Setelah semua pengaturan dibuat di dalang, saatnya untuk memulai layanan ini:

$ sudo systemctl start puppetserver

$ sudo systemctl enable puppetserver

Menginstal Wayang Agen

Agen Wayang dalam repositori paket dalang5-release-5.0.0-1-el7.noarch.rpm juga ditambahkan ke sistem, instalasi dalang-agen dapat dilakukan segera:

$ sudo yum install -y puppet-agent

File konfigurasi boneka-agen /etc/puppetlabs/puppet/puppet.conf juga perlu diperbarui dengan menambahkan parameter berikut:

[main]

certname = agent.severalnines.com

server = master.severalnines.com

environment = production

runinterval = 1h

Langkah selanjutnya terdiri dari mendaftarkan node agen pada host master dengan menjalankan perintah berikut:

$ sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

service { ‘puppet’:

ensure => ‘running’,

enable => ‘true’

  }

Saat ini, pada master host, ada permintaan tertunda dari agen boneka untuk menandatangani sertifikat:

Itu harus ditandatangani dengan menjalankan salah satu perintah berikut:

$ sudo /opt/puppetlabs/bin/puppet cert sign agent.severalnines.com

atau

$ sudo /opt/puppetlabs/bin/puppet cert sign --all

Akhirnya (dan setelah dalang menandatangani sertifikat) saatnya menerapkan konfigurasi ke agen dengan mengambil katalog dari dalang:

$ sudo /opt/puppetlabs/bin/puppet agent --test

Dalam perintah ini, parameter --test tidak berarti pengujian, pengaturan yang diambil dari master akan diterapkan ke agen lokal. Untuk menguji/memeriksa konfigurasi dari master, perintah berikut harus  dijalankan:

$ sudo /opt/puppetlabs/bin/puppet agent --noop

Konfigurasi &Pemrograman Wayang

Puppet menggunakan pendekatan pemrograman deklaratif yang tujuannya adalah untuk menentukan apa yang harus dilakukan dan tidak masalah cara untuk mencapainya!

Bagian kode paling dasar pada Wayang adalah sumber daya yang menentukan properti sistem seperti perintah, layanan, file, direktori, pengguna, atau paket.

Di bawah ini disajikan sintaks sumber daya untuk membuat pengguna:

user { 'admin_postgresql':

  ensure     => present,

  uid        => '1000',

  gid        => '1000',

  home       => '/home/admin/postresql'

}

Sumber daya yang berbeda dapat digabungkan ke kelas sebelumnya (juga dikenal sebagai manifes) file dengan ekstensi “pp” (singkatan dari Puppet Program), namun, beberapa manifes dan data (seperti fakta, file, dan template) akan membuat modul. Semua hierarki dan aturan logis direpresentasikan dalam diagram di bawah ini:

Tujuan setiap modul adalah memuat semua manifes yang diperlukan untuk mengeksekusi satu tugas secara modular. Di sisi lain, konsep kelas tidak sama dengan bahasa pemrograman berorientasi objek, di Wayang berfungsi sebagai agregator sumber daya.

Organisasi file ini memiliki struktur direktori khusus untuk diikuti:

Di mana tujuan setiap folder adalah sebagai berikut:

Folder

Deskripsi

manifes

Kode wayang

file

File statis untuk disalin ke node

templat

File template untuk disalin ke node yang dikelola (dapat disesuaikan dengan variabel)

contoh

Manifes untuk menunjukkan cara menggunakan modul

Kelas(manifest) dapat digunakan oleh kelas lain seperti yang ditunjukkan pada contoh di bawah ini:manifes init.pp di dev_accounts menggunakan grup manifes dari modul akun.
class dev_accounts {

  $rootgroup = $osfamily ? {

    'Debian'  => 'sudo',

    'RedHat'  => 'wheel',

    default   => warning('This distribution is not supported by the Accounts module'),

  }



  include accounts::groups



  user { 'username':

    ensure      => present,

    home        => '/home/admin/postresql',

    shell       => '/bin/bash',

    managehome  => true,

    gid         => 'admin_db',

    groups      => "$rootgroup",

    password    => '$1$7URTNNqb$65ca6wPFDvixURc/MMg7O1'

  }

}

Di bagian berikutnya, kami akan menunjukkan cara membuat konten folder contoh serta perintah untuk menguji dan memublikasikan setiap modul.

Mengonfigurasi Wayang untuk PostgreSQL

Sebelum menyajikan beberapa contoh konfigurasi untuk menerapkan dan memelihara database PostgreSQL, Anda perlu menginstal modul boneka PostgreSQL (di host server) untuk menggunakan semua fungsinya:

$ sudo /opt/puppetlabs/bin/puppet module install puppetlabs-postgresql

Saat ini, ribuan modul yang siap digunakan di Puppet tersedia di repositori modul publik Puppet Forge.

Langkah Pertama

Konfigurasikan dan terapkan instance PostgreSQL baru. Berikut adalah semua pemrograman dan konfigurasi yang diperlukan untuk menginstal instance PostgreSQL baru di semua node.

Langkah pertama adalah membuat direktori struktur modul baru seperti yang dibagikan sebelumnya:

$ cd /etc/puppetlabs/code/environments/production/modules

$ mkdir db_postgresql_admin

$ cd db_postgresql_admin; mkdir{examples,files,manifests,templates}

Kemudian, dalam file manifes manifests/init.pp, Anda perlu menyertakan kelas postgresql::server yang disediakan oleh modul yang diinstal :

class db_postgresql_admin{

  include postgresql::server

}

Untuk memeriksa sintaks manifes, sebaiknya jalankan perintah berikut:

$ sudo /opt/puppetlabs/bin/puppet parser validate init.pp

Jika tidak ada yang dikembalikan, berarti sintaksnya benar

Untuk menunjukkan cara menggunakan modul ini di folder contoh, Anda perlu membuat file manifes init.pp baru dengan konten berikut:

include db_postgresql_admin

Contoh lokasi dalam modul harus diuji dan diterapkan ke katalog master:

$ sudo /opt/puppetlabs/bin/puppet apply --modulepath=/etc/puppetlabs/code/environments/production/modules --noop init.pp

Terakhir, perlu untuk menentukan modul mana yang dapat diakses oleh setiap node dalam file “/etc/puppetlabs/code/environments/production/manifests/site.pp” :

node ’agent.severalnines.com’,’agent2.severalnines.com’{

 include db_postgresql_admin

}

Atau konfigurasi default untuk semua node:

node default {

 include db_postgresql_admin

}

Biasanya setiap 30 menit node memeriksa katalog master, namun kueri ini dapat dipaksakan di sisi node dengan perintah berikut:

$ /opt/puppetlabs/bin/puppet agent -t

Atau jika tujuannya adalah untuk mensimulasikan perbedaan antara konfigurasi master dan pengaturan node saat ini, dapat digunakan parameter nopp (tidak ada operasi):

$ /opt/puppetlabs/bin/puppet agent -t --noop

Langkah Kedua

Perbarui instance PostgreSQL untuk mendengarkan semua antarmuka. Instalasi sebelumnya mendefinisikan pengaturan instans dalam mode yang sangat ketat:hanya mengizinkan koneksi di localhost seperti yang dapat dikonfirmasi oleh host yang terkait dengan port 5432 (ditentukan untuk PostgreSQL):

$ sudo netstat -ntlp|grep 5432

tcp        0 0 127.0.0.1:5432          0.0.0.0:* LISTEN   3237/postgres       

tcp6       0 0 ::1:5432                :::* LISTEN   3237/postgres       

Untuk mengizinkan mendengarkan semua antarmuka, konten berikut harus ada di file /etc/puppetlabs/code/environments/production/modules/db_postgresql_admin/manifests/init.pp

class db_postgresql_admin{

  class{‘postgresql:server’:

        listen_addresses=>’*’ #listening all interfaces

       }

}

Pada contoh di atas dideklarasikan class postgresql::server dan setting parameter listen_addresses menjadi “*” yang artinya semua interface.

Sekarang port 5432 dikaitkan dengan semua antarmuka, dapat dikonfirmasi dengan alamat IP/port berikut:“0.0.0.0:5432”

$ sudo netstat -ntlp|grep 5432

tcp        0 0 0.0.0.0:5432            0.0.0.0:* LISTEN   1232/postgres       

tcp6       0 0 :::5432                 :::* LISTEN   1232/postgres  

Untuk mengembalikan pengaturan awal:hanya izinkan koneksi database dari localhost, parameter listen_addresses harus disetel ke “localhost” atau menentukan daftar host, jika diinginkan:

listen_addresses = 'agent2.severalnines.com,agent3.severalnines.com,localhost'

Untuk mengambil konfigurasi baru dari master host, hanya perlu memintanya di node:

$ /opt/puppetlabs/bin/puppet agent -t

Langkah Ketiga

Buat Basis Data PostgreSQL. Instance PostgreSQL dapat dibuat dengan database baru serta pengguna baru (dengan kata sandi) untuk menggunakan database ini dan aturan pada file pg_hab.conf untuk mengizinkan koneksi database untuk pengguna baru ini:

class db_postgresql_admin{

  class{‘postgresql:server’:

        listen_addresses=>’*’ #listening all interfaces

  }



   postgresql::server::db{‘nines_blog_db’:

     user => ‘severalnines’,          password=> postgresql_password(‘severalnines’,’passwd12’)

   }



   postgresql::server::pg_hba_rule{‘Authentication for severalnines’:

     Description =>’Open access to severalnines’,

     type => ‘local’,

database => ‘nines_blog_db’,

     user => ‘severalnines’,

address => ‘127.0.0.1/32’

         auth_method => ‘md5’

   }

}

Sumber daya terakhir ini memiliki nama "Otentikasi untuk beberapa sembilan" dan file pg_hba.conf akan memiliki satu aturan tambahan lagi:

# Rule Name: Authentication for severalnines

# Description: Open access for severalnines

# Order: 150

local   nines_blog_db   severalnines 127.0.0.1/32    md5

Untuk mengambil konfigurasi baru dari host master, yang diperlukan hanyalah memintanya di node:

$ /opt/puppetlabs/bin/puppet agent -t

Langkah Empat

Buat Pengguna Hanya-Baca. Untuk membuat pengguna baru, dengan hak istimewa hanya baca, sumber daya berikut perlu ditambahkan ke manifes sebelumnya:

postgresql::server::role{‘Creation of a new role nines_reader’:

createdb   => false,

createrole => false,

superuser => false,     password_hash=> postgresql_password(‘nines_reader’,’passwd13’)

}

postgresql::server::pg_hba_rule{‘Authentication for nines_reader’:

     description =>’Open access to nines_reader’,

     type => ‘host’,

database => ‘nines_blog_db’,

     user => ‘nines_reader’,

address => ‘192.168.1.10/32’,

         auth_method => ‘md5’

   }

Untuk mengambil konfigurasi baru dari host master, yang diperlukan hanyalah memintanya di node:

$ /opt/puppetlabs/bin/puppet agent -t

Kesimpulan 

Dalam posting blog ini, kami menunjukkan kepada Anda langkah-langkah dasar untuk menerapkan dan mulai mengonfigurasi database PostgreSQL Anda melalui cara otomatis dan disesuaikan pada beberapa node (yang bahkan bisa berupa mesin virtual).

Jenis otomatisasi ini dapat membantu Anda menjadi lebih efektif daripada melakukannya secara manual dan konfigurasi PostgreSQL dapat dengan mudah dilakukan dengan menggunakan beberapa kelas yang tersedia di repositori puppetforge


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbaiki “ERROR:  setiap kueri UNION harus memiliki jumlah kolom yang sama” di PostgreSQL

  2. Kueri SQL untuk mendapatkan semua nilai yang dapat dimiliki enum

  3. Salin struktur tabel ke tabel baru

  4. Pencocokan partisi tingkat lanjut untuk penggabungan partisi

  5. Dengan sqlalchemy cara mengikat secara dinamis ke mesin database berdasarkan permintaan