[LINUX] DRBD + CryptSetup + PaceMaker unter CentOS7 ACT / SBY

Einführung

Erstellen Sie den Server mit ACT / SBY

Umgebung

version Bemerkungen
CentOS 7.4
DRBD 9.0
cryptSetup 2.0.3
paceMaker 1.1.20-5.el7_7.2
corosync 2.4.3

Festplatte hinzufügen

Diesmal verwenden wir KVM. Es wird davon ausgegangen, dass Sie Instanzen von SERVER-1 und SERVER-2 haben. Festplatten hinzufügen.

Instanzbestätigung

[root@kvm ~]# virsh list
ID-Status
----------------------------------------------------
 126   SERVER-1 läuft
 127   SERVER-2 läuft

Erstellen einer XML-Datei mit der Definition des Hinzufügens einer Festplatte

/tmp/server-1-adddisk.xml


[root@kvm ~]# vi /tmp/server-1-adddisk.xml
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none' />
  <source file='/var/lib/libvirt/images/SERVER-1-vdb.qcow2' />
  <target dev='vdb' bus='virtio' />
</disk>

/tmp/server-2-adddisk.xml


[root@kvm ~]# vi /tmp/server-2-adddisk.xml
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none' />
  <source file='/var/lib/libvirt/images/SERVER-2-vdb.qcow2' />
  <target dev='vdb' bus='virtio' />
</disk>

Erstellt in 16G auf vdb für beide

[root@kvm ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/SERVER-1-vdb.qcow2 16G
[root@kvm ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/SERVER-2-vdb.qcow2 16G

Errate die Einstellungen

[root@kvm ~]# virsh attach-device SERVER-1 --file /tmp/server-1-adddisk.xml
[root@kvm ~]# virsh attach-device SERVER-2 --file /tmp/server-2-adddisk.xml

Einstellungen dauerhaft widerspiegeln

[root@kvm ~]# virsh attach-device SERVER-1 --file /tmp/server-1-adddisk.xml --config
[root@kvm ~]# virsh attach-device SERVER-2 --file /tmp/server-2-adddisk.xml --config

SERVER-Einstellung

Legen Sie eine IP, einen Hostnamen und eine Domain fest.

Einheit hostname IP
Einheit 1 SERVER-1 192.168.200.10
Einheit 2 SERVER-2 192.168.200.11

Schreiben wir die IP des anderen in Hosts.

[root@server-1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.10 SERVER-1
192.168.200.11 SERVER-2
[root@server-2 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.200.10 SERVER-1
192.168.200.11 SERVER-2

Materialinstallation

Installieren Sie zunächst die erforderlichen Elemente für beide Systeme.

[root@server-1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
[root@server-1 ~]# yum --enablerepo=extras -y install kmod-drbd90
[root@server-1 ~]# yum -y install cryptsetup cryptsetup-libs
[root@server-1 ~]# yum -y install pacemaker
[root@server-1 ~]# yum -y install pcs fence-agents-all

[root@server-2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
[root@server-2 ~]# yum --enablerepo=extras -y install kmod-drbd90
[root@server-2 ~]# yum -y install cryptsetup cryptsetup-libs
[root@server-2 ~]# yum -y install pacemaker
[root@server-2 ~]# yum -y install pcs fence-agents-all

Initialisierung der Erweiterungsfestplatte

Mit beiden initialisieren

[root@server-1 ~]# parted /dev/vdb -s mklabel msdos -s mkpart primary 0% 100%
[root@server-2 ~]# parted /dev/vdb -s mklabel msdos -s mkpart primary 0% 100%

DRBD-Einstellungen

Bearbeiten von /etc/drbd.d/drbd0.res

:/etc/drbd.d/drbd0.res


[root@server-1 ~]# vi /etc/drbd.d/drbd0.res
resource drbd0 {
  protocol  C;
  volume 0 {
    device /dev/drbd0;
    disk /dev/vdb;
    meta-disk internal;
  }
  on SERVER-1 {	
    node-id 0;
    address 192.168.200.10:7789;
  }
  on SERVER-2 {	
    node-id   1;
    address   192.168.200.11:7789;
  }
}

Verteilung an SERVER-2

[root@server-1 ~]# scp -p /etc/drbd.d/drbd0.res root@server-2:/etc/drbd.d/drbd0.res

DRBD-Erstellung und -Start

Ich werde-md erstellen.

[root@server-1 ~]# drbdadm create-md drbd0
md_offset 17179865088
al_offset 17179832320
bm_offset 17179308032

Found some data

 ==> This might destroy existing data! <==

Do you want to proceed?
[need to type 'yes' to confirm] yes //Eingabeort

initializing activity log
initializing bitmap (512 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
[root@server-2 ~]# drbdadm create-md drbd0
md_offset 17179865088
al_offset 17179832320
bm_offset 17179308032

Found some data

 ==> This might destroy existing data! <==

Do you want to proceed?
[need to type 'yes' to confirm] yes //Eingabeort

initializing activity log
initializing bitmap (512 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.

Überprüfen Sie den Status vor dem Start mit lsblk Einheit 1
[root@server-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk

Einheit 2

[root@server-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk

Starten Sie DRBD Wenn Sie nur eine starten, wird sie nicht enden. Es scheint, dass wir uns treffen, also zum gleichen Zeitpunkt.
[root@server-1 ~]# systemctl start drbd
[root@server-2 ~]# systemctl start drbd

Überprüfen Sie nach dem Start mit lsblk Einheit 1 drbd0 nimmt zu

[root@server-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk

Bestätigte Einheit 2

[root@server-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk

Machen Sie SERVER-1 zum Hauptsystem
[root@server-1 ~]# drbdadm primary --force drbd0

Machen Sie das Dateisystem ext4

[root@server-1 ~]# mkfs.ext4 /dev/drbd0

Ich werde es hier zur Bestätigung montieren. Erstellen Sie ein Verzeichnis, das auf beiden Systemen bereitgestellt werden soll.

[root@server-1 ~]# mkdir /opt/mntpoint
[root@server-1 ~]# mount /dev/drbd0 /opt/mntpoint
[root@server-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk /opt/mntpoint

Versuchen Sie, eine geeignete Datei zu erstellen, indem Sie prüfen, ob sie weiter synchronisiert ist

[root@server-1 ~]# touch /opt/mntpoint/hoge.txt

Von Einheit 1 aushängen

[root@server-1 ~]# umount /opt/mntpoint

Montiert auf Einheit 2 und lsblk

[root@server-2 ~]# mkdir /opt/mntpoint
[root@server-2 ~]# mount /dev/drbd0 /opt/mntpoint
[root@server-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm  /
  └─centos-swap 253:1    0  1.6G  0 lvm  [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk /opt/mntpoint

Es ist richtig synchronisiert. Löschen wir hoge.txt.

[root@server-2 ~]# ll /opt/mntpoint/
-rw-r--r--1 Wurzel Wurzel 0 11. September 13:07 hoge.txt

Festplattenverschlüsselung

Diesmal macht es vielleicht nicht viel Sinn, weil es KVM ist, aber es gibt Fälle, in denen sich jemand erleichtert fühlen kann, weil es verschlüsselt ist.

Wenn drbd gemountet ist, entfernen Sie es zuerst.

[root@server-2 ~]# umount /opt/mntpoint

Format

[root@server-1 ~]# cryptsetup luksFormat -c aes-cbc-essiv:sha256 -s 256 /dev/drbd0
WARNING!
========
This will overwrite data on /dev/drbd0 irrevocably.

Are you sure? (Type uppercase yes): YES //Nur das Kapital JA wurde anerkannt
Enter passphrase for /dev/drbd0:
Verify passphrase: //【Passworteingabe
encrypt success //【Kennwort erneut eingeben
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1048576 inodes, 4193655 blocks
209682 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
128 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Erstellen Sie ein verschlüsseltes Verzeichnis mit dem Namen cryptdir

[root@server-1 ~]#echo [Passwort]| cryptsetup luksOpen /dev/drbd0 cryptdir

Dann

[root@server-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part  /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm   /
  └─centos-swap 253:1    0  1.6G  0 lvm   [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk
  └─cryptdir    253:2    0   16G  0 crypt         //Ich kann etwas tun

Da das zuvor erwähnte Kryptoverzeichnis unter / dev / mapper / erstellt wird, erstellen Sie mit ext4 ein Dateisystem.
[root@server-1 ~]# mkfs.ext4 /dev/mapper/cryptdir

Überprüfen Sie, ob Sie mit DRBD synchronisieren möchten. bestätigen. /dev/mapper/cryptdir Verwenden Sie dies als Einhängepunkt.

mount /dev/mapper/cryptdir /opt/mntpoint

Es wurde montiert.

[root@server-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sr0              11:0    1 1024M  0 rom
vda             252:0    0   16G  0 disk
├─vda1          252:1    0    1G  0 part  /boot
└─vda2          252:2    0   15G  0 part
  ├─centos-root 253:0    0 13.4G  0 lvm   /
  └─centos-swap 253:1    0  1.6G  0 lvm   [SWAP]
vdb             252:16   0   16G  0 disk
└─drbd0         147:0    0   16G  0 disk
  └─cryptdir    253:2    0   16G  0 crypt /opt/mntpoint

Versuchen Sie nach wie vor, eine entsprechende Datei zu erstellen

[root@server-1 ~]# touch /opt/mntpoint/hoge.txt

Von Einheit 1 aushängen

[root@server-1 ~]# umount /opt/mntpoint

Entschlüsseln

[root@server-1 ~]# cryptsetup luksClose cryptdir

Mount nach der Verschlüsselung mit Unit 2

[root@server-2 ~]#echo [Passwort]| cryptsetup luksOpen /dev/drbd0 cryptdir
[root@server-2 ~]# mount /dev/mapper/cryptdir /opt/mntpoint

Es gibt.

[root@server-2 ~]# ll /opt/mntpoint/
-rw-r--r--1 Wurzel Wurzel 0 11. September 13:51 hoge.txt

Hängen Sie die Bereitstellung von Einheit 2 aus und entschlüsseln Sie sie

[root@server-1 ~]# umount /opt/mntpoint
[root@server-1 ~]# cryptsetup luksClose cryptdir

Damit der Schrittmacher später Ressourcen verwalten kann Erstellen Sie /usr/lib/systemd/system/encrypt.service als systemd-Dienst.

/usr/lib/systemd/system/encrypt.service


[root@server-1 ~]# vi /usr/lib/systemd/system/encrypt.service
[Unit]
Description=encrypt
[Service]
ExecStart=/opt/bin/encryptstart.sh
ExecStop=/opt/bin/encryptstop.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

systemctl Startskript wird beim Verschlüsseln ausgeführt

/opt/bin/encryptstart.sh


[root@server-1 ~]# mkdir /opt/bin
[root@server-1 ~]# vi /opt/bin/encryptstart.sh
#!/usr/bin/sh
/usr/bin/echo [Passwort]| /usr/sbin/cryptsetup luksOpen /dev/drbd0 cryptdir

systemctl stop script wird beim verschlüsseln ausgeführt

/opt/bin/encryptstop.sh


[root@server-1 ~]# vi /opt/bin/encryptstop.sh
#!/usr/bin/sh
/usr/sbin/cryptsetup luksClose cryptdir

Senden wir es auch an Unit 2.

[root@server-1 ~]# scp -p /usr/lib/systemd/system/encrypt.service root@server-2:/usr/lib/systemd/system/encrypt.service
[root@server-1 ~]# scp -rp /opt/bin root@server-2:/opt/bin

Systemd Einstellung Reflexion Einheit 1

[root@server-1 ~]# systemctl daemon-reload

Einheit 2

[root@server-2 ~]# systemctl daemon-reload

Schrittmacher- und Corosync-Einstellungen

Stoppen Sie zunächst DRBD.

[root@server-1 ~]# systemctl stop drbd
[root@server-2 ~]# systemctl stop drbd

Bearbeiten Sie /etc/corosync/corosync.conf

/etc/corosync/corosync.conf


[root@server-1 ~]# vi /etc/corosync/corosync.conf
totem {
	version: 2
	cluster_name: XXX_cluster
	secauth: off
	transport: udpu
}

nodelist {
	node {
		ring0_addr: SERVER-1
		nodeid: 1
	}

	node {
		ring0_addr: SERVER-2
		nodeid: 2
	}
}

quorum {
	provider: corosync_votequorum
	two_node: 1
}

logging {
	to_logfile: yes
	logfile: /var/log/cluster/corosync.log
	to_syslog: yes
}

Transfer zu Einheit 2

[root@server-1 ~]# scp -p /etc/corosync/corosync.conf 192.168.200.11:/etc/corosync/corosync.conf

Bearbeiten von / etc / sysconfig / pacemaker

/etc/sysconfig/pacemaker


[root@server-1 ~]# vi /etc/sysconfig/pacemaker
# PCMK_fail_fast=no
↓
PCMK_fail_fast=yes

Transfer zu Einheit 2

[root@server-1 ~]# scp -p /etc/sysconfig/pacemaker 192.168.200.11:/etc/sysconfig/pacemaker

Ich habe den Inhalt nicht geändert, aber kopiere den Dienst vorerst nach / etc / systemd / system /

[root@server-1 ~]# cp -p /usr/lib/systemd/system/corosync.service /etc/systemd/system/
[root@server-1 ~]# cp -p /usr/lib/systemd/system/pacemaker.service /etc/systemd/system/
[root@server-1 ~]# scp -p /usr/lib/systemd/system/corosync.service [email protected]:/usr/lib/systemd/system/corosync.service
[root@server-1 ~]# scp -p /usr/lib/systemd/system/pacemaker.service [email protected]:/usr/lib/systemd/system/pacemaker.service

Reflektieren Sie die Systemeinstellungen erneut Einheit 1

[root@server-1 ~]# systemctl daemon-reload

Einheit 2

[root@server-2 ~]# systemctl daemon-reload

Starten Sie den Schrittmacher

[root@server-1 ~]# systemctl start pacemaker
[root@server-1 ~]# systemctl start pcsd
[root@server-1 ~]# systemctl enable pcsd

Geben Sie außerdem einem Benutzer mit dem Namen hacluster ein Kennwort Einheit 1

[root@server-1 ~]#echo [ha Passwort]| passwd -f hacluster --stdin

Einheit 2

[root@server-2 ~]#echo [ha Passwort]| passwd -f hacluster --stdin

Authentifizieren Sie sich mit dem Benutzer hacluster
[root@server-1 ~]# pcs cluster auth SERVER-1 SERVER-2 -u hacluster -p [ha Passwort]

Cluster-Einstellungen

[root@server-1 ~]# pcs cluster setup --name HA_cluster SERVER-1 SERVER-2 --force

Starten Sie den Cluster

[root@server-1 ~]# pcs cluster start --all
[root@server-1 ~]# pcs cluster enable --all

Ressourcenregistrierung

DRBD-Registrierung

[root@server-1 ~]# pcs resource create DRBD ocf:linbit:drbd drbd_resource=drbd0 op monitor interval=10s role=Master monitor interval=30s role=Slave
[root@server-1 ~]# pcs resource master MS_DRBD DRBD master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true

Festplattenverschlüsselung

[root@server-1 ~]# pcs resource create ENCRYPT systemd:encrypt --group HA

Dateisystem-Mount

[root@server-1 ~]# pcs resource create FS ocf:heartbeat:Filesystem device=/dev/mapper/criptdir directory=/opt/mntpoint fstype=ext4 --group HA

Etwas anderes

[root@server-1 ~]# pcs constraint colocation add HA MS_DRBD INFINITY with-rsc-role=Master
[root@server-1 ~]# pcs constraint order promote MS_DRBD then start HA

Ressourcen reinigen

[root@server-1 ~]# pcs resource cleanup

Ich habe diese Art von Einstellung gemacht, aber ich habe vergessen, was es war ...

[root@server-1 ~]# pcs property set stonith-enabled=false
[root@server-1 ~]# pcs property set no-quorum-policy=ignore

Auch VIP wird der Ressource hinzugefügt

[root@server-1 ~]# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.200.12 cidr_netmask=24 --group HA

Bestätigung

[root@server-1 ~]# pcs status
Cluster name: HA_cluster
Stack: corosync
Current DC: SERVER-2 (version 1.1.20-5.el7_7.2-3c4c782f70) - partition with quorum
Last updated: Sun Sep 13 06:57:08 2020
Last change: Thu Sep 10 14:31:58 2020 by root via cibadmin on SERVER-1

2 nodes configured
7 resources configured

Online: [ SERVER-1 SERVER-2 ]

Full list of resources:

 Master/Slave Set: MS_DRBD [DRBD]
     Masters: [ SERVER-1 ]
     Slaves: [ SERVER-2 ]
 Resource Group: HA
     ENCRYPT (systemd:encrypt):              Started SERVER-1
     FS      (ocf::heartbeat:Filesystem):    Started SERVER-1
     VIP     (ocf::heartbeat:IPaddr2):       Started SERVER-1

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

Recommended Posts

DRBD + CryptSetup + PaceMaker unter CentOS7 ACT / SBY
Installieren Sie Faiss unter CentOS 7
Installieren Sie numba unter CentOS 7.2
Installieren Sie Python3.4 unter CentOS 6.6
Installieren Sie mecab-python unter CentOS
Installieren Sie Python 2.7.3 unter CentOS 5.4
Installieren Sie awscli auf centos7
Installieren Sie Chainer unter CentOS 6.7
Einrichten des Drehmoments unter CentOS 6