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

Cara Mengonfigurasi Cluster Ketersediaan Tinggi di CentOS 7 / RHEL 7

Cluster High-Availability alias Failover-cluster (cluster aktif-pasif) adalah salah satu jenis cluster yang paling banyak digunakan di lingkungan produksi. Jenis cluster ini memberi Anda ketersediaan layanan yang berkelanjutan bahkan salah satu node cluster gagal. Jika server yang menjalankan aplikasi gagal karena suatu alasan (kegagalan perangkat keras), perangkat lunak cluster (alat pacu jantung) akan memulai ulang aplikasi di node lain.

Ketersediaan Tinggi terutama digunakan untuk database, aplikasi khusus, dan juga untuk berbagi file. Fail-over tidak hanya memulai aplikasi. Ini memiliki beberapa rangkaian operasi yang terkait dengannya seperti, memasang sistem file, mengonfigurasi jaringan, dan memulai aplikasi yang bergantung.

Lingkungan

CentOS 7 / RHEL 7 mendukung Fail-over cluster menggunakan alat pacu jantung. Di sini, kita akan melihat konfigurasi server Apache (web) sebagai aplikasi yang sangat tersedia.

Seperti yang saya katakan, fail-over adalah serangkaian operasi, jadi kita perlu mengonfigurasi sistem file dan jaringan sebagai sumber daya. Untuk sistem file, kami akan menggunakan penyimpanan bersama dari penyimpanan iSCSI.

Nama Inang Alamat IP OS Tujuan
node1.itzgeek.local 192.168.1.11 CentOS 7 Simpul Kluster 1
node2.itzgeek.local 192.168.1.12 Simpul Kluster 1
server.itzgeek.local 192.168.1.20 Penyimpanan Bersama iSCSI
192.168.1.100 IP Kluster Virtual (Apache)

Semua berjalan di VMware Workstation.

Penyimpanan Bersama

Penyimpanan bersama adalah salah satu sumber daya penting dalam cluster ketersediaan tinggi karena menyimpan data aplikasi yang sedang berjalan. Semua node dalam cluster akan memiliki akses ke penyimpanan bersama untuk data terbaru. Penyimpanan SAN adalah penyimpanan bersama yang paling banyak digunakan di lingkungan produksi. Untuk demo ini, kami akan mengonfigurasi cluster dengan penyimpanan iSCSI untuk tujuan demonstrasi.

Instal Paket

Server iSCSI

[root@server ~]# yum install targetcli -y

Node Klaster

Saatnya untuk mengonfigurasi node cluster untuk menggunakan penyimpanan iSCSI, lakukan langkah-langkah di bawah ini pada semua node cluster Anda.

# yum install iscsi-initiator-utils -y

Setel Disk

Di sini, kami akan membuat disk LVM 10GB di server iSCSI untuk digunakan sebagai penyimpanan bersama untuk node cluster kami. Mari buat daftar disk yang tersedia yang terpasang ke server target menggunakan perintah.

[root@server ~]# fdisk -l | grep -i sd

Keluaran:

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 209715199 104344576 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors

Dari output di atas, Anda dapat melihat bahwa sistem saya memiliki hard disk 10GB (/dev/sdb). Buat LVM dengan /dev/sdb (ganti /dev/sdb dengan nama disk Anda)

[root@server ~]# pvcreate /dev/sdb

[root@server ~]# vgcreate vg_iscsi /dev/sdb

[root@server ~]# lvcreate -l 100%FREE -n lv_iscsi vg_iscsi

Buat Penyimpanan Bersama

Dapatkan detail inisiator node.

cat /etc/iscsi/initiatorname.iscsi

Simpul 1:

InitiatorName=iqn.1994-05.com.redhat:b11df35b6f75

Simpul 2:

InitiatorName=iqn.1994-05.com.redhat:119eaf9252a

Masukkan perintah di bawah ini untuk mendapatkan iSCSI CLI untuk prompt interaktif.

[root@server ~]# targetcli

Keluaran:

targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> cd /backstores/block
/backstores/block> create iscsi_shared_storage /dev/vg_iscsi/lv_iscsi
Created block storage object iscsi_shared_storage using /dev/vg_iscsi/lv_iscsi.
/backstores/block> cd /iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> cd iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5/tpg1/acls
/iscsi/iqn.20...ad5/tpg1/acls> create iqn.1994-05.com.redhat:b11df35b6f75   << Initiator of Node 1
Created Node ACL for iqn.1994-05.com.redhat:b11df35b6f75
/iscsi/iqn.20...ad5/tpg1/acls> create iqn.1994-05.com.redhat:119eaf9252a    << Initiator of Node 1
Created Node ACL for iqn.1994-05.com.redhat:119eaf9252a
/iscsi/iqn.20...ad5/tpg1/acls> cd /iscsi/iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5/tpg1/luns
/iscsi/iqn.20...ad5/tpg1/luns> create /backstores/block/iscsi_shared_storage
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.1994-05.com.redhat:119eaf9252a
Created LUN 0->0 mapping in node ACL iqn.1994-05.com.redhat:b11df35b6f75
/iscsi/iqn.20...ad5/tpg1/luns> cd /
/> ls
o- / ...................................................................................................... [...]
  o- backstores ........................................................................................... [...]
  | o- block ............................................................................... [Storage Objects: 1]
  | | o- iscsi_shared_storage ........................... [/dev/vg_iscsi/lv_iscsi (10.0GiB) write-thru activated]
  | |   o- alua ................................................................................ [ALUA Groups: 1]
  | |     o- default_tg_pt_gp .................................................... [ALUA state: Active/optimized]
  | o- fileio .............................................................................. [Storage Objects: 0]
  | o- pscsi ............................................................................... [Storage Objects: 0]
  | o- ramdisk ............................................................................. [Storage Objects: 0]
  o- iscsi ......................................................................................... [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5 ....................................... [TPGs: 1]
  |   o- tpg1 ............................................................................ [no-gen-acls, no-auth]
  |     o- acls ....................................................................................... [ACLs: 2]
  |     | o- iqn.1994-05.com.redhat:119eaf9252a ................................................ [Mapped LUNs: 1]
  |     | | o- mapped_lun0 ............................................... [lun0 block/iscsi_shared_storage (rw)]
  |     | o- iqn.1994-05.com.redhat:b11df35b6f75 ............................................... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ............................................... [lun0 block/iscsi_shared_storage (rw)]
  |     o- luns ....................................................................................... [LUNs: 1]
  |     | o- lun0 ...................... [block/iscsi_shared_storage (/dev/vg_iscsi/lv_iscsi) (default_tg_pt_gp)]
  |     o- portals ................................................................................. [Portals: 1]
  |       o- 0.0.0.0:3260 .................................................................................. [OK]
  o- loopback ...................................................................................... [Targets: 0]
/> saveconfig
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json
[root@server ~]#

Aktifkan dan mulai ulang layanan target.

[root@server ~]# systemctl enable target

[root@server ~]# systemctl restart target

Konfigurasikan firewall untuk mengizinkan lalu lintas iSCSI.

[root@server ~]# firewall-cmd --permanent --add-port=3260/tcp

[root@server ~]# firewall-cmd --reload

Temukan Penyimpanan Bersama

Di kedua node cluster, temukan target menggunakan perintah di bawah ini.

# iscsiadm -m discovery -t st -p 192.168.1.20

Keluaran:

192.168.1.20:3260,1 iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5

Sekarang, login ke target dengan perintah di bawah ini.

# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5 -p 192.168.1.20 -l

Keluaran:

Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portal: 192.168.1.20,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portal: 192.168.1.20,3260] successful.

Mulai ulang dan aktifkan layanan inisiator.

# systemctl restart iscsid

# systemctl enable iscsid

Setup Cluster Nodes

Masukan Tuan Rumah

Buat entri host pada setiap node untuk semua node. Cluster akan menggunakan nama host untuk berkomunikasi satu sama lain.

# vi /etc/hosts

Entri host akan seperti di bawah ini.

192.168.1.11 node1.itzgeek.local  node1
192.168.1.12 node2.itzgeek.local  node2

Penyimpanan Bersama

Pergi ke semua node Anda dan periksa apakah disk baru terlihat atau tidak. Di node saya, /dev/sdb adalah disk yang berasal dari penyimpanan iSCSI kami.

# fdisk -l | grep -i sd

Keluaran:

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors 
/dev/sda1 * 2048 1026047 512000 83 Linux 
/dev/sda2 1026048 209715199 104344576 8e Linux LVM
Disk /dev/sdb: 10.7 GB, 10733223936 bytes, 20963328 sectors

Di salah satu node Anda (Misalnya, node1), buat sistem file untuk server web Apache untuk menyimpan file situs web. Kami akan membuat sistem file dengan LVM.

[root@node1 ~]# pvcreate /dev/sdb

[root@node1 ~]# vgcreate vg_apache /dev/sdb

[root@node1 ~]# lvcreate -n lv_apache -l 100%FREE vg_apache

[root@node1 ~]# mkfs.ext4 /dev/vg_apache/lv_apache

Sekarang, pergi ke node lain dan jalankan perintah di bawah ini untuk mendeteksi sistem file baru.

[root@node2 ~]# pvscan

[root@node2 ~]# vgscan

[root@node2 ~]# lvscan

Terakhir, verifikasi LVM yang kita buat di node1 tersedia untuk Anda di node lain (Mis. node2) menggunakan perintah di bawah ini.

[root@node2 ~]# lvdisplay /dev/vg_apache/lv_apache

Keluaran: Anda akan melihat /dev/vg_apache/lv_apache di node2.itzgeek.local

 --- Logical volume ---
  LV Path                /dev/vg_apache/lv_apache
  LV Name                lv_apache
  VG Name                vg_apache
  LV UUID                mFUyuk-xTtK-r7PV-PLPq-yoVC-Ktto-TcaYpS
  LV Write Access        read/write
  LV Creation host, time node1.itzgeek.local, 2019-07-05 08:57:33 +0530
  LV Status              available
  # open                 0
  LV Size                9.96 GiB
  Current LE             2551
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:3
Jika sistem tidak menampilkan volume logis, pertimbangkan untuk me-reboot node kedua.

Instal Paket

Instal paket cluster (alat pacu jantung) di semua node menggunakan perintah di bawah ini.

# yum install pcs fence-agents-all -y

Izinkan semua aplikasi ketersediaan tinggi di firewall memiliki komunikasi yang tepat antar node. Anda dapat melewati langkah ini jika sistem tidak memiliki firewall yang terpasang.

# firewall-cmd --permanent --add-service=high-availability

# firewall-cmd --add-service=high-availability

Gunakan perintah di bawah ini untuk membuat daftar aplikasi yang diizinkan di firewall.

# firewall-cmd --list-service

Keluaran:

ssh dhcpv6-client high-availability

Tetapkan kata sandi untuk pengguna hacluster. Akun pengguna ini adalah akun administrasi cluster. Kami menyarankan Anda menyetel sandi yang sama untuk semua node.

# passwd hacluster

Mulai layanan klaster. Juga, aktifkan untuk memulai secara otomatis pada startup sistem.

# systemctl start pcsd

# systemctl enable pcsd

Ingatlah untuk menjalankan perintah di atas pada semua node cluster Anda.

Buat Cluster Ketersediaan Tinggi

Otorisasi node menggunakan perintah di bawah ini. Jalankan perintah di bawah ini di salah satu node untuk mengotorisasi node.

[root@node1 ~]# pcs cluster auth node1.itzgeek.local node2.itzgeek.local

Keluaran:

Username: hacluster
Password:      << Enter Password
node1.itzgeek.local: Authorized
node2.itzgeek.local: Authorized

Buat kluster.

[root@node1 ~]# pcs cluster setup --start --name itzgeek_cluster node1.itzgeek.local node2.itzgeek.local

Keluaran:

Destroying cluster on nodes: node1.itzgeek.local, node2.itzgeek.local...
node1.itzgeek.local: Stopping Cluster (pacemaker)...
node2.itzgeek.local: Stopping Cluster (pacemaker)...
node2.itzgeek.local: Successfully destroyed cluster
node1.itzgeek.local: Successfully destroyed cluster

Sending 'pacemaker_remote authkey' to 'node1.itzgeek.local', 'node2.itzgeek.local'
node1.itzgeek.local: successful distribution of the file 'pacemaker_remote authkey'
node2.itzgeek.local: successful distribution of the file 'pacemaker_remote authkey'
Sending cluster config files to the nodes...
node1.itzgeek.local: Succeeded
node2.itzgeek.local: Succeeded

Starting cluster on nodes: node1.itzgeek.local, node2.itzgeek.local...
node1.itzgeek.local: Starting Cluster (corosync)...
node2.itzgeek.local: Starting Cluster (corosync)...
node1.itzgeek.local: Starting Cluster (pacemaker)...
node2.itzgeek.local: Starting Cluster (pacemaker)...

Synchronizing pcsd certificates on nodes node1.itzgeek.local, node2.itzgeek.local...
node1.itzgeek.local: Success
node2.itzgeek.local: Success
Restarting pcsd on the nodes in order to reload the certificates...
node1.itzgeek.local: Success
node2.itzgeek.local: Success

Aktifkan cluster untuk memulai saat startup sistem.

[root@node1 ~]# pcs cluster enable --all

Keluaran:

node1.itzgeek.local: Cluster Enabled
node2.itzgeek.local: Cluster Enabled

Gunakan perintah di bawah ini untuk mendapatkan status cluster.

[root@node1 ~]# pcs cluster status

Keluaran:

Cluster Status:
 Stack: corosync
 Current DC: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
 Last updated: Fri Jul  5 09:14:57 2019
 Last change: Fri Jul  5 09:13:12 2019 by hacluster via crmd on node2.itzgeek.local
 2 nodes configured
 0 resources configured

PCSD Status:
  node1.itzgeek.local: Online
  node2.itzgeek.local: Online

Jalankan perintah di bawah ini untuk mendapatkan informasi mendetail tentang cluster, termasuk resource, status alat pacu jantung, dan detail node.

[root@node1 ~]# pcs status

Keluaran:

Cluster name: itzgeek_cluster

WARNINGS:
No stonith devices and stonith-enabled is not false

Stack: corosync
Current DC: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Fri Jul  5 09:15:37 2019
Last change: Fri Jul  5 09:13:12 2019 by hacluster via crmd on node2.itzgeek.local

2 nodes configured
0 resources configured

Online: [ node1.itzgeek.local node2.itzgeek.local ]

No resources


Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Perangkat Pagar

Perangkat pagar adalah perangkat keras/lunak yang membantu untuk memutuskan simpul masalah dengan mengatur ulang simpul / memutuskan penyimpanan bersama dari mengaksesnya. Cluster demo saya berjalan di atas mesin Virtual VMware, jadi saya tidak menunjukkan kepada Anda pengaturan perangkat pagar, tetapi Anda dapat mengikuti panduan ini untuk menyiapkan perangkat pagar.

Sumber Daya Klaster

Siapkan sumber daya

Server Web Apache

Instal server web Apache di kedua node.

# yum install -y httpd wget

Edit file konfigurasi.

# vi /etc/httpd/conf/httpd.conf

Tambahkan konten di bawah ini di akhir file di kedua node cluster.

<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

Sekarang kita perlu menggunakan penyimpanan bersama untuk menyimpan file konten web (HTML). Lakukan operasi di bawah ini di salah satu node.

[root@node2 ~]# mount /dev/vg_apache/lv_apache /var/www/

[root@node2 ~]# mkdir /var/www/html

[root@node2 ~]# mkdir /var/www/cgi-bin

[root@node2 ~]# mkdir /var/www/error

[root@node2 ~]# restorecon -R /var/www

[root@node2 ~]# cat <<-END >/var/www/html/index.html
<html>
<body>Hello, Welcome!. This Page Is Served By Red Hat Hight Availability Cluster</body>
</html>
END

[root@node2 ~]# umount /var/www

Izinkan layanan Apache di firewall di kedua node.

# firewall-cmd --permanent --add-service=http

# firewall-cmd --reload

Buat Sumber Daya

Buat sumber daya sistem file untuk server Apache. Gunakan penyimpanan yang berasal dari server iSCSI.

# pcs resource create httpd_fs Filesystem device="/dev/mapper/vg_apache-lv_apache" directory="/var/www" fstype="ext4" --group apache

Keluaran:

Assumed agent name 'ocf:heartbeat:Filesystem' (deduced from 'Filesystem')

Buat sumber daya alamat IP. Alamat IP ini akan bertindak sebagai alamat IP virtual untuk Apache dan klien akan menggunakan alamat ip ini untuk mengakses konten web alih-alih ip node individu.

# pcs resource create httpd_vip IPaddr2 ip=192.168.1.100 cidr_netmask=24 --group apache

Keluaran:

Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPaddr2')

Buat sumber daya Apache yang akan memantau status server Apache dan memindahkan sumber daya ke node lain jika terjadi kegagalan.

# pcs resource create httpd_ser apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group apache

Keluaran:

Assumed agent name 'ocf:heartbeat:apache' (deduced from 'apache')

Karena kami tidak menggunakan anggar, nonaktifkan (STONITH). Anda harus menonaktifkan untuk memulai sumber daya cluster, tetapi menonaktifkan STONITH di lingkungan produksi tidak disarankan.

# pcs property set stonith-enabled=false

Periksa status cluster.

[root@node1 ~]# pcs status

Keluaran:

Cluster name: itzgeek_cluster
Stack: corosync
Current DC: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Fri Jul  5 09:26:04 2019
Last change: Fri Jul  5 09:25:58 2019 by root via cibadmin on node1.itzgeek.local

2 nodes configured
3 resources configured

Online: [ node1.itzgeek.local node2.itzgeek.local ]

Full list of resources:

 Resource Group: apache
     httpd_fs   (ocf::heartbeat:Filesystem):    Started node1.itzgeek.local
     httpd_vip  (ocf::heartbeat:IPaddr2):       Started node1.itzgeek.local
     httpd_ser  (ocf::heartbeat:apache):        Started node1.itzgeek.local

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

Verifikasi Cluster Ketersediaan Tinggi

Setelah cluster aktif dan berjalan, arahkan browser web ke alamat IP virtual Apache. Anda akan mendapatkan halaman web seperti di bawah ini.

Uji Cluster Ketersediaan Tinggi

Mari kita periksa failover resource node dengan menghentikan cluster pada node yang aktif.

[root@node1 ~]# pcs cluster stop node1.itzgeek.local

Kesimpulan

Itu saja. Dalam posting ini, Anda telah mempelajari cara menyiapkan cluster Ketersediaan Tinggi di CentOS 7. Beri tahu kami pendapat Anda di bagian komentar.


Cent OS
  1. CentOS / RHEL 7 :Cara mengonfigurasi server nama khusus cache

  2. CentOS / RHEL 6,7 :Cara mengonfigurasi halaman besar

  3. Cara Mengonfigurasi Proksi di CentOS/RHEL/Fedora

  1. Cara Mengonfigurasi Antarmuka Jaringan Virtual di RHEL 8 / CentOS 8

  2. Cara menginstal dan mengkonfigurasi samba di RHEL 8 / CentOS 8

  3. Cara Mengkonfigurasi Firewalld Logging di CentOS/RHEL 8

  1. Cara Mengatur Penyimpanan GlusterFS di CentOS 7 / RHEL 7

  2. Cara Mengkonfigurasi Server Rsyslog di CentOS 8 / RHEL 8

  3. Cara Mengkonfigurasi Alamat IP Statis di RHEL 8 / CentOS 8