GNU/Linux >> Belajar Linux >  >> Debian

Memasang Cluster Basis Data Web, Email &MySQL di Debian 8.4 Jessie dengan ISPConfig 3.1

Tutorial ini menjelaskan penginstalan cluster web, email, database, dan server DNS yang akan digunakan untuk redundansi, ketersediaan tinggi, dan penyeimbangan beban pada Debian 8 dengan panel kontrol ISPConfig 3. Replikasi MySQL Master/Master akan digunakan untuk mereplikasi database klien MySQL antara server, Unison akan digunakan untuk Menyinkronkan /var/www (situs web) dan Mail akan disinkronkan dengan Dovecot.

1 Catatan umum

Dalam pengaturan ini, akan ada satu server master (yang menjalankan antarmuka panel kontrol ISPConfig) dan satu server budak yang mencerminkan layanan web (apache), email (postfix dan dovecot), dns (bind) dan database (MySQL atau MariaDB). dari server utama.

Untuk menginstal penyiapan terklaster, kita memerlukan dua server dengan penginstalan minimal Debian 8.4 dan versi ISPConfig yang sama.

Dalam contoh saya, saya menggunakan nama host dan alamat IP berikut untuk dua server:

Server Utama

Hostname:server1.example.tld
IP-Address:192.168.0.105
IPv6-Address:2001:db8::1

Server budak

Hostname:server2.example.tld
IP-Address:192.168.0.106
IPv6-Address:2001:db8::2

Di mana pun nama host atau alamat IP ini muncul pada langkah penginstalan berikutnya, Anda harus mengubahnya agar sesuai dengan IP dan nama host server Anda.

Semua perintah harus dijalankan sebagai pengguna root. Jika Anda perlu membuat perubahan login MySQL ke MySQL dengan root-password untuk MySQL:

mysql -u root -p

2 Instal Server Master

Pertama kita perlu menginstal ISPConfig di Master-Server. Jika Anda telah menginstal ISPConfig di Server ini, Anda dapat melewati instalasi (pastikan bahwa instalasi yang ada adalah yang terbaru).

Instal ISPConfig di Master-Server menurut The Perfect Server - Debian 8.4 Jessie (Apache2, BIND, Dovecot, ISPConfig 3.1).

Tambahkan Server Budak ke file /etc/hosts

vi /etc/hosts

sehingga terlihat seperti:

127.0.0.1 localhost192.168.0.105 server1.example.tld server1
2001:db8::1 server1.example.tld server1192.168.0.106 server2.example.tld
2001:db8::2 server2.example.tld# Baris berikut diinginkan untuk host yang mendukung IPv6::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6- allroutersff02::3 ip6-allhosts

3 Siapkan Server Budak

Jalankan langkah 1 - 19 dari The Perfect Server - Debian 8.4 Jessie (Apache2, BIND, Dovecot, ISPConfig 3.1).

Jangan instal ISPConfig di server2.

Tambahkan Server Master ke file /etc/hosts

vi /etc/hosts

sehingga terlihat seperti:

127.0.0.1 localhost192.168.0.105 server1.example.tld
2001:db8::1 server1.example.tld192.168.0.106 server2.example.tld server2
2001:db8::2 server2.example.tld server2# Baris berikut diinginkan untuk host yang mendukung IPv6::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6- allroutersff02::3 ip6-allhosts

4 Login Tanpa Kunci dari Server1 ke Server2

Di server2:

Kami mengizinkan sementara root-login ke server2 dengan kata sandi. Buka /etc/sshd_config:

vi /etc/ssh/sshd_config

dan ubah

PermitRootLogin tanpa kata sandi

untuk

PermitRootLogin ya

setelah itu, restart ssh-daemon:

layanan ssh restart

Di server1:

Buat pasangan kunci privat/publik:

ssh-keygen
Membuat pasangan kunci rsa publik/pribadi.
Masukkan file untuk menyimpan kunci (/root/.ssh/id_rsa):<-- ENTER
Direktori yang dibuat '/root/.ssh'.
Masukkan frasa sandi (kosongkan tanpa frasa sandi):<-- ENTER
Masukkan kata sandi yang sama lagi:<-- ENTER
Identifikasi Anda telah disimpan di /root/.ssh/id_rsa.
Kunci publik Anda telah disimpan di /root/.ssh/id_rsa.pub.
Sidik jari kuncinya adalah:
f3:d0:62:a7:24:6f:f0:1e:d1:64:a9:9f:12:6c:98:5a [dilindungi email]
Gambar kunci acak adalah:
+---[RSA 2048]----+
| |
| . |
| +      |
| + *       |
| E S +      |
| o @ . |
| . B +      |
| o o       |
| . |
+-----------------+

Penting agar Anda tidak memasukkan frasa sandi jika tidak, pencerminan tidak akan berfungsi tanpa interaksi manusia, jadi cukup tekan ENTER!

Selanjutnya, kita salin kunci publik kita ke server2.example.tld:

ssh-copy-id -i /root/.ssh/id_rsa.pub [dilindungi email]
Keaslian host '192.168.0.106 (192.168.0.106)' tidak dapat ditentukan.
Sidik jari kunci ECDSA adalah 25:d8:7a:ee:c2:4b:1d:92:a7:3d :16:26:95:56:62:4e.
Yakin ingin melanjutkan koneksi (ya/tidak)? <-- ya (Anda akan melihat ini hanya jika ini adalah pertama kalinya Anda terhubung ke server2)
/usr/bin/ssh-copy-id:INFO:mencoba masuk dengan kunci baru, untuk menyaring yang sudah diinstal
/usr/bin/ssh-copy-id:INFO:1 kunci masih harus diinstal -- jika Anda diminta sekarang, itu adalah menginstal kunci baru
sandi [email protected]:<- masukkan kata sandi root dari server2 

Sekarang coba masuk ke mesin:

ssh [dilindungi email]

Dan periksa /root/.ssh/authorized_keys untuk memastikan kami tidak menambahkan kunci tambahan yang tidak Anda harapkan.

cat /root/.ssh/authorized_keys
 ssh-DSS AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca / V + lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks + lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH + Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi + a3fTDM2 + Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk + / MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc / GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr + GKxAdWpxV5MkF + FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ + LrUs57BiwTGB / MQl9FKQEyEV4J + AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD / C2gG78lwb6CxV02Z3sbTBdc43J6y [email protected] 

Larang login root dengan kata sandi. Buka /etc/sshd_config:

vi /etc/ssh/sshd_config

dan ubah

PermitRootLogin ya

untuk

PermitRootLogin tanpa kata sandi

setelah itu, restart ssh-daemon:

layanan ssh restart

Keluar dari server2:

keluar
logout
Sambungan ke 192.168.0.106 ditutup.

Kami sekarang kembali ke server1.

5. Replikasi Master-Master MySQL

5.1 Siapkan Server1

Login ke MySQL dan buat akun khusus untuk replikasi di MySQL. Saya menggunakan pengguna terpisah untuk replikasi untuk meminimalkan kemungkinan penyusupan ke akun lain (nama pengguna dan sandi disimpan dalam teks biasa di file atau tabel repositori info master):

BUAT PENGGUNA 'slaveuser2'@'server2.example.tld' DIIDENTIFIKASI OLEH 'slave_user_password';
BUAT USER 'slaveuser2'@'192.168.0.106' DIIDENTIFIKASI DENGAN 'slave_user_password';
BUAT PENGGUNA ' slaveuser2'@'2001:db8::2' DIIDENTIFIKASI DENGAN 'slave_user_password';

dan berikan hak istimewa REPLICATION SLAVE:

GRANT REPLICATION SLAVE PADA *.* KE 'slaveuser2'@'server2.example.tld';
HIBAH REPLICATION SLAVE PADA *.* TO 'slaveuser2'@'192.168.0.106';
GRANT REPLICATION SLAVE ON *.* KE 'slaveuser2'@'2001:db8::2';
QUIT;

Buat beberapa perubahan untuk replikasi ke MySQL-Config Anda:

vi /etc/mysql/my.cnf

Telusuri bagian yang dimulai dengan [mysqld], dan masukkan opsi berikut ke dalamnya (komentari semua konflik yang ada pilihan):

[...]
[mysqld]
server-id =1
replicate-same-server-id =0
auto-increment-increment =2
auto-increment-offset =1
log_bin =mysql-bin.log
expire_logs_days =10
max_binlog_size =100M
binlog_format =campuran
sync_binlog =1
relay-log =slave-relay.log
relay-log-index =slave-relay-log.index
slave_skip_errors =1007.1008.1050, 1396
bind-address =::

dan restart MySQL setelahnya:

layanan mysql restart

Saya melewatkan beberapa kesalahan budak. Saya menjelaskan ini di blog saya:

  • 1007 =Tidak dapat membuat basis data '%s'; basis data ada
  • 1008 =Tidak dapat menghapus basis data '%s'; basis data tidak ada  
  • 1050 =Tabel '%s' sudah ada  
  • 1396 =Operasi %s gagal untuk %s  - Tidak dapat membuat pengguna

Anda dapat menemukan daftar kode kesalahan MySQL di sini:Kode dan Pesan Kesalahan Server

5.2 Siapkan Server2

Buat beberapa perubahan untuk replikasi ke MySQL-Config Anda:

vi /etc/mysql/my.cnf

Telusuri bagian yang dimulai dengan [mysqld], dan masukkan opsi berikut ke dalamnya (komentari semua konflik yang ada pilihan):

[...]
[mysqld]
server-id =2
log_bin =mysql-bin.log
expire_logs_days =10
max_binlog_size =100M
binlog_format =campuran
sync_binlog =1
slave_skip_errors =1007.1008.1050, 1396

5.3 Membuat snapshot dari database yang ada di server1

Buang database di server1 dan masukkan kata sandi root MySQL:

mysqldump -p --all-databases --allow-keywords --master-data --events --single-transaction> /root/mysqldump.sql

Salin dump ke server2:

scp /root/mysqldump.sql [dilindungi email]:/root

5.4 Impor dump di server2

mysql -u root -p  

Matikan mysql di server2 :

layanan mysql berhenti

Salin file default untuk MySQL dari server1 ke server2. Beralih ke server1 dan jalankan

scp /etc/mysql/debian.cnf [dilindungi email]:/etc/mysql/debian.cnf

Mulai MySQL di server2 :

layanan mysql mulai

dan login ke MySQL untuk mengatur master-server dengan:

UBAH MASTER KE MASTER_HOST="server1.example.tld", MASTER_USER="slaveuser2", MASTER_PASSWORD="slave_user_password";

Mulai budak:

MULAI BUDAK;

dan periksa status budak dengan

TUNJUKKAN STATUS BUDAK \G

Hasilnya akan seperti

*************************** 1. baris ***************** **********
              Slave_IO_State:Menunggu master untuk mengirim acara
                Master_Host:server1.example.tld
                      Master<  _ pengguna:slave> Connect_retry:60
master_log_file:mysql-bin.000001
read_master_log_pos:109989
relay_log_file:mysqld-relay-bin.000002
Relay_log_pos:110276

Relay_log_pos:110276 Slave_IO_Running:Ya
Slave_SQL_Running:Ya
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                Last_Errno:0
                Last_Error:
               Skip_Counter:> Master_log_pos:109989
relay_log_space:110574
Sampai_condition:tidak ada
Sampai_log_file:
Sampai_log_pos:0
Master_ssl_allowed:no
master_sl_ca_ca:magaris:no
Master_Sl_CA_CA_CA:NO
MASTER_CA_CA_CA:NO
MASTER_SL_CA_CA_CA_CA_CA:NO
MASTILE:NO
mastersl_CA_CA_CA_CA:NO
MASTILE:NO
mastersl_CA_CA_CA_CA_CA_ br /> Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master:0
Master_SSL_Verify_Server_Cert:Tidak ada
Last_IO_Errno:0
Last_IO_Error:
Last_SQL_Errno:0
last_sql_error:
Replicate_ignore_server_ids:
master_server_id:1
master_ssl_crl:
master_ssl_crlpath:
using_gtid:no
gtid_io_pos:
using_gtid:no
gtid_io_pos:
Using_gtid:no
gtid_io_pos:
Using_gtid:no
gtid_io_pos

Jika "Seconds Behind Master" tidak 0, tunggu sampai Slave membaca semua data dari master (cukup ulangi perintah untuk mendapatkan nilai saat ini). Pastikan bahwa server2 menggunakan master-log dan posisi log yang tepat.

Di server1 dijalankan di MySQL:

TAMPILKAN STATUS MASTER \G
*************************** 1. baris ***************** **********
            File:mysql-bin.000991
        Posisi:69185362
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 baris dalam kumpulan (0.00 detik)

Dan bandingkan Koordinat Log Biner Master Replikasi.

Kami menjalankan MySQL Master-Slave-Replication di mana server1 adalah master dan server2 sebagai slave.

5.5 Replikasi Master-Master MySQL

Buat Pengguna MySQL untuk replikasi dan berikan hak istimewa di MySQL:

BUAT PENGGUNA 'slaveuser1'@'server1.example.tld' DIIDENTIFIKASI DENGAN 'slave_user_password';
BUAT USER 'slaveuser1'@'192.168.0.105' DIIDENTIFIKASI OLEH 'slave_user_password';
BUAT PENGGUNA ' slaveuser1'@'2001:db8::1' DIIDENTIFIKASI DENGAN 'slave_user_password';
GRANT REPLICATION SLAVE ON *.* TO 'slaveuser1'@'server1.example.tld';
HIBAH REPLICATION SLAVE PADA *.* KE 'slaveuser1'@'192.168.0.105';
HIBAH REPLICATION SLAVE PADA *.* KE 'slaveuser1'@'2001:db8::1';
BERHENTI;

Buat beberapa perubahan untuk replikasi ke MySQL-Config Anda di server2 :

vi /etc/mysql/my.cnf

Telusuri bagian yang dimulai dengan [mysqld], dan masukkan opsi berikut ke dalamnya (komentari semua konflik yang ada pilihan):

[...]
[mysqld]
[...]
replicate-same-server-id =0
auto-increment-increment =2
auto-increment-offset =2
relay-log =slave-relay.log
relay-log-index =slave-relay-log.inde

dan mulai ulang MySQL:

layanan mysql restart

Login ke MySQL dan dapatkan Master Binary Log Coordinates:

TAMPILKAN STATUS MASTER \G
*************************** 1. baris ***************** **********
            File:mysql-bin.000002
        Posisi:326
    Binlog_Do_DB:
Binlog_Ignore_DB:
1 baris dalam kumpulan (0,00 detik)

Masuk ke MySQL di server1 dan atur server master dengan

UBAH MASTER KE MASTER_HOST="server2.example.tld", MASTER_USER="slaveuser1", MASTER_PASSWORD="slave_user_password", MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=326;

Mulai budak:

MULAI BUDAK;

dan periksa status budak dengan

TUNJUKKAN STATUS BUDAK \G

Periksa, apakah slave sedang berjalan:

            Slave_IO_Running:Ya
           Slave_SQL_Running:Ya

Jika replikasi Anda berhenti berfungsi, Anda mungkin menemukan informasi tambahan di sini:

  • Cara Melewati Kesalahan Tertentu Dalam Replikasi MySQL
  • mulai ulang replikasi master-master mysql
  • mysql-replication – Tidak dapat mengurai entri peristiwa log relai

6 Instal ISPConfig di Server Slave

Masuk ke MySQL dan buat pengguna root untuk server2:

BUAT PENGGUNA 'root'@'192.168.0.106' DIIDENTIFIKASI DENGAN 'myrootpassword';
BERIKAN SEMUA HAK ISTIMEWA DI * . * UNTUK 'root'@'192.168.0.106' DENGAN GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
BUAT USER 'root'@'server2.example.tld' HIBAH SEMUA HAK ISTIMEWA PADA * . * ATAS 'root'@'server2.example.tld' DENGAN GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
BUAT USER 'root'@'2arootpassword':dddd::br />BERIKAN SEMUA HAK ISTIMEWA PADA * . * UNTUK 'root'@'2001:db8::2' DENGAN GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
QUIT;

Replikasi mencakup semua database. Salin db-configs untuk PHPMyAdmin dan roundcube dari server1 ke server2.

Di server1 :

scp /etc/dbconfig-common/phpmyadmin.conf [dilindungi email]:/etc/dbconfig-common/phpmyadmin.conf
scp /etc/phpmyadmin/config-db.php [dilindungi email]:/ etc/phpmyadmin/config-db.php
scp /etc/dbconfig-common/roundcube.conf [dilindungi email]:/etc/dbconfig-common/roundcube.conf
scp /etc/roundcube/debian -db.php [dilindungi email]:/etc/roundcube/debian-db.php

Di server2 :

Unduh ISPConfig 3.1:

cd /tmp
wget -O ISPConfig-3.1-beta.tar.gz  https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
tar xfvz xfz ISPConfig-3.1-beta.tar.gz
cd ispconfig3-stable-3.1*
cd install

dan mulai penginstal dengan

php -q install.php
------------------------------------------------ ----------------------------------
 _____ ___________   _____            __ _        ____
|_   _ /  ___| ___ \ /  __ \           / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | | `--. \  __/  | | / _ \| '_ \| _| |/ _` | |_ |
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                       /       |
                                      |___/
-------------------------------------- --------------------------------------------------


>> Konfigurasi awal

Sistem Operasi:Debian 8.0 (Jessie) atau yang kompatibel

    Berikut ini adalah beberapa pertanyaan untuk konfigurasi utama, jadi berhati-hatilah.
    Nilai default ada di [tanda kurung] dan dapat diterima dengan .
    Ketuk "keluar" (tanpa tanda kutip) untuk menghentikan penginstal.


Pilih bahasa (en,de) [en]:<-- Tekan Enter

Mode penginstalan (standar,pakar) [standar]:pakar <-- pakar

Nama host yang memenuhi syarat penuh (FQDN) dari server, misalnya server1.domain.tld  [server2.example.tld]:<-- Tekan Enter

Nama host server MySQL [localhost]:<-- Tekan Enter

Port server MySQL [3306]:<-- Tekan Enter

Nama pengguna root MySQL [root]:<-- Tekan Enter

Kata sandi root MySQL []:<-- Masukkan kata sandi root MySQL Anda

Database MySQL untuk membuat [dbispconfig]:<-- dbispconfig2 (nama database ispconfig lokal master dan slave harus berbeda, karena kedua server berbagi database yang sama)

MySQL charset [utf8]:<-- Tekan Enter

Dua pertanyaan berikutnya adalah tentang user dan password database ISPConfig internal.
Direkomendasikan untuk menerima default 'ispconfig' sebagai username dan password acak.
Jika Anda menggunakan sandi yang berbeda, gunakan hanya angka dan karakter untuk sandi.

ISPConfig mysql database username [ispconfig]:<-- ispconfig2

ISPConfig kata sandi database mysql [06d434604a3371a706a100f9786aec9b]:<-- Tekan Enter

Apakah server ini akan bergabung dengan pengaturan multiserver ISPConfig yang ada (y,n) [n]:<-- y

Nama host server master MySQL []:<-- server1.example.tld

Port server master MySQL []:<-- Tekan Enter

Nama pengguna root server master MySQL [root]:<-- Tekan Enter

Kata sandi root server master MySQL []:<-- Masukkan kata sandi root server master di sini

Nama database server master MySQL [dbispconfig]:<-- Tekan Enter

Menambahkan catatan server ISPConfig ke database.

Konfigurasi Email (y,n) [y]:<-- Tekan Enter

Mengonfigurasi Postgrey
Mengonfigurasi Postfix
Membuat kunci privat RSA 4096 bit
............... ........................................................ ...++
....................++
menulis kunci pribadi baru ke 'smtpd.key'
- ----
Anda akan diminta untuk memasukkan informasi yang akan dimasukkan
ke dalam permintaan sertifikat Anda.
Yang akan Anda masukkan adalah apa yang disebut Distinguished Name atau DN .
Ada beberapa bidang tetapi Anda dapat mengosongkannya
Untuk beberapa bidang akan ada nilai default,
Jika Anda memasukkan '.', bidang tersebut akan dikosongkan.
-----
Nama Negara (kode 2 huruf) [AU]:<-- Masukkan kode negara 2 huruf
Nama Negara Bagian atau Provinsi (nama lengkap) [Some-State]:<-- Masukkan nama  negara bagian
Nama Lokalitas (mis., kota) []:<-- Masukkan kota Anda
Nama Organisasi (mis., perusahaan) [Internet Widgits Pty Ltd]:<-- Masukkan nama perusahaan atau tekan enter
Nama Unit Organisasi (misalnya, bagian) []:<-- Tekan Enter
Nama Umum (mis. server FQDN atau nama ANDA) []:<-- Masukkan nama host server, dalam kasus saya:server2.example.com
Alamat Email []:<-- Tekan Enter
Mengonfigurasi Mailman
Mengonfigurasi Dovecot
Mengonfigurasi Spamassassin
Mengonfigurasi Amavisd
Mengonfigurasi Getmail
Mengonfigurasi Jailkit
Mengonfigurasi Pureftpd
Mengonfigurasi Server DNS ( y,n) [y]:<-- Tekan Enter

Mengonfigurasi BIND
Mengonfigurasi Server Web (y,n) [y]:<-- Tekan Enter

Mengonfigurasi Apache
Mengonfigurasi vlogger
[PERINGATAN] deteksi otomatis untuk OpenVZ gagal
Mengonfigurasi paksa OpenVZ (y,n) [n]:<-- Hit Masuk

Melewatkan OpenVZ

Mengonfigurasi Server Firewall (y,n) [y]:<-- Tekan Enter

Mengonfigurasi Firewall Ubuntu
Mengonfigurasi Server Metronome XMPP
menulis kunci pribadi baru ke 'localhost.key'
-----
Nama Negara (2 kode huruf) [AU]: <-- Masukkan 2 huruf kode negara
Nama Lokalitas (mis., kota) []: <-- Masukkan kota Anda
Nama Organisasi (mis., perusahaan) [Internet Widgits Pty Ltd]: <-- Masukkan nama perusahaan atau tekan enter
Nama Unit Organisasi (misalnya, bagian) []: <-- Tekan Enter
Nama Umum (mis. server FQDN atau nama ANDA) [server2.example.tld]: <-- Masukkan nama host server, dalam kasus saya:server2.example.tld
Alamat Email []: <-- Tekan Enter

Instal Antarmuka Web ISPConfig (y,n) [n]:<-- Tekan Enter



Mengonfigurasi DBServer
Memasang ISPConfig crontab
Mendeteksi alamat IP
Pemasangan selesai.

Masuk ke ISPConfig di server1 dan buka Sistem / Layanan Server dan pilih server2.example.tld dan atur Is mirror of Server ke server1.example.tld:

Buka Konfigurasi Server , pilih Tab Web dan atur izin untuk kedua server:

 

Jika Anda sudah memiliki data (Situs Web, Email....) yang berjalan di server1, buka Alat / Sinkronkan ulang dan mulai sinkronisasi ulang penuh (aktifkan semua kotak centang).

7 Instal Unison

Selanjutnya kita instal Unison. Unison digunakan untuk menyinkronkan direktori /var/www antara server1 dan server2.

Instal serentak di server1 dan server2 dengan

apt-get install serempak

Sekarang kita menginstal file konfigurasi serentak di server1 :

Buat file baru /root/.unison/web:

mkdir /root/.unison
vi /root/.unison/web.prf

... dan tambahkan konten berikut:

# Akar dari sinkronisasiroot =/var/wwwroot =ssh://192.168.0.106//var/www # Jalur untuk disinkronkan#path =www#path =vmail # Beberapa regexps menentukan nama dan jalur untuk diabaikan#ignore =Statistik jalur ## mengabaikan /var/www/stats#ignore =Statistik jalur/* ## mengabaikan /var/www/stats/*#ignore =Jalur */stats ## mengabaikan /var/www/somedir/stats, tetapi tidak /var/www/a/b/c/stats#ignore =Nama *stats ## mengabaikan semua file/direktori yang diakhiri dengan "stats"#ignore =Nama stats* ## mengabaikan semua file/direktori yang dimulai dengan "stats" #ignore =Nama *.tmp ## mengabaikan semua file dengan ekstensi .tmpignore =Nama sess_*
ignore =Nama *access.log*
ignore =Nama error.log
ignore =Nama webalizer.conf
# Ketika disetel ke true, tanda ini menyebabkan antarmuka pengguna melewati# meminta konfirmasi tentang perubahan yang tidak bertentangan. (Lebih tepatnya, ketika antarmuka pengguna selesai menyetel# arah propagasi untuk satu entri dan akan pindah ke# berikutnya, itu akan melewati semua entri yang tidak bertentangan dan langsung menuju# ke konflik berikutnya.)auto=true # Jika ini disetel ke true, antarmuka pengguna tidak akan # bertanya sama sekali. Perubahan yang tidak bertentangan akan disebarkan;# konflik akan dilewati.batch=true # !Jika ini disetel ke true, Unison akan meminta konfirmasi# ekstra jika tampaknya seluruh replika telah# dihapus, sebelum menyebarkan perubahan. Jika flag batch# juga disetel, sinkronisasi akan dibatalkan. Ketika preferensi jalur# digunakan, konfirmasi yang sama akan diminta untuk# jalur tingkat atas. (Saat ini, flag ini hanya memengaruhi antarmuka pengguna teks#.) Lihat juga preferensi titik mount.confirmbigdel=true # Saat preferensi ini disetel ke true, Unison akan menggunakan# waktu dan panjang modifikasi file sebagai `pseudo inode# number' saat memindai replika untuk pembaruan, alih-alih membaca# konten lengkap setiap file. Di bawah Windows, ini dapat menyebabkan# Unison melewatkan penyebaran pembaruan jika waktu modifikasi# dan panjang file keduanya tidak berubah oleh pembaruan.# Namun, Unison tidak akan pernah menimpa pembaruan semacam itu dengan# perubahan dari replika lainnya, karena itu selalu melakukan pemeriksaan # aman untuk pembaruan tepat sebelum menyebarkan perubahan. Oleh karena itu,# masuk akal untuk menggunakan sakelar ini di bawah Windows hampir sepanjang waktu# dan kadang-kadang menjalankan Unison sekali dengan fastcheck disetel ke false,# jika Anda khawatir bahwa Unison mungkin mengabaikan pembaruan.# Nilai default dari preferensi adalah otomatis , yang menyebabkan# Unison menggunakan pemeriksaan cepat pada replika Unix (di tempat yang aman)# dan pemeriksaan lambat pada replika Windows. Untuk kompatibilitas mundur#, ya, tidak, dan default dapat digunakan sebagai pengganti# true, false, dan auto. Lihat bagian "Pemeriksaan Cepat" untuk informasi lebih lanjut#.fastcheck=true# Jika tanda ini disetel ke true, atribut grup dari# file akan disinkronkan. Apakah nama grup atau pengidentifikasi grup# disinkronkan tergantung pada preferensi numerids.group=true # Ketika tanda ini disetel ke true, atribut pemilik file# akan disinkronkan. Apakah nama pemilik atau pemilik# pengenal disinkronkan tergantung pada preferensi# extttnumerids.owner=true # Termasuk preferensi -pilih akar penyebab Unison selalu# menyelesaikan konflik demi root, daripada meminta# panduan dari pengguna. (Sintaks root sama dengan untuk# preferensi root, ditambah nilai khusus yang lebih baru dan lebih lama.)# Preferensi ini ditimpa oleh preferensi preferpartial.# Preferensi ini harus digunakan hanya jika Anda yakin tahu# apa yang Anda sedang melakukan!prefer=newer # Ketika preferensi ini disetel ke true, antarmuka pengguna tekstual# tidak akan mencetak apa pun, kecuali jika terjadi kesalahan.# Menyetel silent ke true secara otomatis menyetel preferensi batch# ke true.silent=true # Jika tanda ini disetel ke true, waktu modifikasi file (tetapi tidak# direktori modtimes) akan disebarkan.times=false

#         Saat tanda ini disetel, Unison akan mencatat semua perubahan ke sistem file di a file.
log=false

#          Jika tanda ini disetel ke true, grup dan pengguna akan disinkronkan secara numerik, bukan berdasarkan nama.
#         Uid khusus 0 dan khusus grup 0 tidak pernah dipetakan melalui penggunaan r/nama grup meskipun ini
#         preferensi tidak disetel.
numericids=true

Kami ingin mengotomatiskan sinkronisasi, jadi kami membuat skrip kecil dan membuat cronjob di server1 :

mkdir /root/scripts
vi /root/scripts/unison.sh

dan tambahkan konten berikut:

#!/bin/sh
lockdir=/tmp
UNISON=/usr/bin/unison
LOGGER=/usr/bin/logger

jika [ ! -f /$lockdir/unison ]; lalu
        sentuh $lockdir/unison

       $UNISON -testserver web
       rc=$?
       if [[ $rc !=0 ]]; lalu
              echo "error"
             $LOGGER -d -t unison "web - error connect remote"
       else
              $    
UNISON web />        rm $lockdir/unison
else
       $LOGGER -d -t unison "unison sudah berjalan"
fi

membuat skrip dapat dieksekusi:

chmod 700 /root/scripts/unison.sh

Dan jalankan sinkronisasi pertama. Untuk mendapatkan beberapa keluaran selama sinkronisasi, setel silent =false di /root/.unsion/web.prf. Setelah itu, mulai serentak:

/root/scripts/unison.sh

Finally, we create the cronjob:

crontab -e
# unison
*  * * * *  /root/scripts/unison.sh> /dev/null

8 Sync Emails with Dovecot

Since Dovecot 2 it`s possible to use Dovect's dsync to keep the main base in sync. If you have already mail's on server1, they will be replicated to server2 without any further interaction.

You must use the same port (4711 ) and the same password (replication_password ) on both servers.

server1:

Open /etc/dovecot/dovecot-sql.conf

vi /etc/dovecot/dovecot-sql.conf

and enable the iterate_query:

old:

#iterate_query =SELECT email as user FROM mail_user

new:

iterate_query =SELECT email as user FROM mail_user

Open /etc/dovecot/dovecot.conf

vi /etc/dovecot/dovecot.conf

and add the following content:

# Enable the replication plugin globally
mail_plugins =$mail_plugins notify replication quota

# Both the client and the server need to have a shared secret
doveadm_password =replication_password

# configure how many dsyncs can be run in parallel (10 by default)
replication_max_conns =10

service aggregator {
        fifo_listener replication-notify-fifo {
                user =vmail
                mode =0666
        }

        unix_listener replication-notify {
                user =vmail
                mode =0666
        }
}

service replicator {
        unix_listener replicator-doveadm {
                mode =0666
        }
}

service doveadm {
        user =vmail
        inet_listener {
                port =4711
        }
}

service config {
        unix_listener config {
                user =vmail
        }
}

# use tcp:ip as the dsync target
plugin {
        replication_full_sync_interval =1 hours
        mail_replica =tcp:192.168.0.106:4711
}

protocol imap {
mail_plugins =quota imap_quota notify replication
}

restart Dovecot:

service dovecot restart

server2:

Open /etc/dovecot/dovecot-sql.conf

vi /etc/dovecot/dovecot-sql.conf

and enable the iterate_query:

old:

#iterate_query =SELECT email as user FROM mail_user

new:

iterate_query =SELECT email as user FROM mail_user

Open /etc/dovecot/dovecot.conf

vi /etc/dovecot/dovecot.conf

and add the following content:

# Enable the replication plugin globally
mail_plugins =$mail_plugins notify replication quota

# Both the client and the server need to have a shared secret
doveadm_password =replication_password

# configure how many dsyncs can be run in parallel (10 by default)
replication_max_conns =10

service aggregator {
        fifo_listener replication-notify-fifo {
                user =vmail
                mode =0666
        }

        unix_listener replication-notify {
                user =vmail
                mode =0666
        }
}

service replicator {
        unix_listener replicator-doveadm {
                mode =0666
        }
}

service doveadm {
        user =vmail
        inet_listener {
                port =4711
        }
}

service config {
        unix_listener config {
                user =vmail
        }
}

# use tcp:ip as the dsync target
plugin {
        replication_full_sync_interval =1 hours
        mail_replica =tcp:192.168.0.105:4711
}

protocol imap {
mail_plugins =quota imap_quota notify replication
}

restart Dovecot:

service dovecot restart

You can check the replication on each server:

doveadm replicator status '*'
username                                                                                priority fast sync full sync failed
[email protected]                                                                     none     00:16:34  00:16:40  -

9 Additional Notes

When you want to activate a firewall on the master or slave server, ensure that you open port 3306 for MySQL, 22 for SSH and 4711 for Dovecot on both servers.

  • ISPConfig Website:http://www.ispconfig.org/
  • ISPConfig Forum:https://www.howtoforge.com/forums/
  • ISPConfig Bugtracker:http://bugtracker.ispconfig.org/

Debian
  1. Menyiapkan Replikasi Master-Master dengan MySQL di Debian 8 (Jessie)

  2. Instal WordPress dengan database jarak jauh di Debian

  3. Mudah vsFTPD – Server FTP dengan pengguna virtual di Debian 8 Jessie

  1. Menginstal Server Web di FreeBSD 6.0 dengan Apache 2.2, MySQL 5.0 dan PHP 5 – Bagian 5

  2. Menginstal Server Web di FreeBSD 6.0 dengan Apache 2.2, MySQL 5.0 dan PHP 5 – Bagian 4

  3. Menginstal Server Web di FreeBSD 6.0 dengan Apache 2.2, MySQL 5.0 dan PHP 5 – Bagian 3

  1. Cara Menginstal Server Email dengan ISPConfig di Debian 10

  2. Menginstal Lighttpd Dengan PHP5 Dan Dukungan MySQL Pada Debian Etch

  3. Menginstal Server Web di FreeBSD 6.0 dengan Apache 2.2, MySQL 5.0 dan PHP 5 – Bagian 2