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

introduction

Construisez le serveur avec ACT / SBY

environnement

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

Ajouter un disque

Cette fois, nous utilisons KVM. On suppose que vous disposez d'instances de SERVER-1 et SERVER-2. Ajoutez des disques.

Confirmation d'instance

[root@kvm ~]# virsh list
Statut du nom de l'identifiant
----------------------------------------------------
 126   SERVER-1 course
 127   SERVER-2 en cours d'exécution

Création d'un xml de la définition de l'ajout d'un disque

/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>

Créé en 16G sur vdb pour les deux

[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

Devinez les paramètres

[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

Refléter les paramètres de manière permanente

[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

Paramètre SERVER

Choisissez une adresse IP, un nom d'hôte et un domaine.

Unité hostname IP
Unité 1 SERVER-1 192.168.200.10
Unité 2 SERVER-2 192.168.200.11

Écrivons l'adresse IP de chacun dans les hôtes.

[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

Installation matérielle

Tout d'abord, installez les éléments nécessaires pour les deux systèmes.

[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

Initialisation du disque d'extension

Initialiser avec les deux

[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%

Paramètres DRBD

Modification de /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;
  }
}

Distribution sur SERVER-2

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

Création et lancement de DRBD

Je vais créer-md.

[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 //Emplacement d'entrée

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 //Emplacement d'entrée

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

Vérifiez l'état avant le démarrage avec lsblk Unité 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

Unité 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

Démarrez DRBD Si vous n'en démarrez qu'un, il ne s'arrêtera pas. Il semble que nous nous réunissions, donc au même moment.
[root@server-1 ~]# systemctl start drbd
[root@server-2 ~]# systemctl start drbd

Vérifier après le démarrage avec lsblk Unité 1 drbd0 augmente

[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

Unité confirmée 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

Faire de SERVER-1 le système principal
[root@server-1 ~]# drbdadm primary --force drbd0

Rendre le système de fichiers ext4

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

Je vais le monter ici pour confirmation. Créez un répertoire à monter sur les deux systèmes.

[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

Essayez de créer un fichier approprié en vérifiant s'il est synchronisé davantage

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

Démonter de l'unité 1

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

Monté sur l'unité 2 et 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

Il est correctement synchronisé. Supprimons hoge.txt.

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

Chiffrement du disque

Cette fois, cela n'a peut-être pas beaucoup de sens car il s'agit de KVM, mais il y a des cas où quelqu'un peut se sentir soulagé parce qu'il est crypté.

Tout d'abord, si drbd est monté, démontez-le.

[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 //Seule la capitale OUI a été reconnue
Enter passphrase for /dev/drbd0:
Verify passphrase: //【Saisie du mot de passe
encrypt success //【Retaper le mot de passe
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

Créez un répertoire chiffré avec le nom cryptdir

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

Puis

[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         //Je peux faire quelque chose

Puisque le cryptdir mentionné précédemment est créé sous / dev / mapper /, créez un système de fichiers avec ext4.
[root@server-1 ~]# mkfs.ext4 /dev/mapper/cryptdir

Vérifiez si vous souhaitez synchroniser avec DRBD. confirmer. /dev/mapper/cryptdir Utilisez-le comme point de montage.

mount /dev/mapper/cryptdir /opt/mntpoint

Il était monté.

[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

Comme auparavant, essayez de créer un fichier approprié

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

Démonter de l'unité 1

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

Décrypter

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

Monter après le cryptage avec l'unité 2

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

Il y a.

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

Démonter et décrypter de l'unité 2

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

Afin de laisser le pacemaker gérer les ressources plus tard Créez /usr/lib/systemd/system/encrypt.service en tant que service systemd.

/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

script de démarrage systemctl exécuté lors du chiffrement

/opt/bin/encryptstart.sh


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

script d'arrêt systemctl exécuté lors du chiffrement

/opt/bin/encryptstop.sh


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

Envoyons-le également à l'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

réflexion de réglage systemd Unité 1

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

Unité 2

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

paramètres du stimulateur cardiaque et corosync

Tout d'abord, arrêtez DRBD.

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

Modifiez /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
}

Transférer à l'unité 2

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

Modification de / etc / sysconfig / pacemaker

/etc/sysconfig/pacemaker


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

Transférer à l'unité 2

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

Je n'ai pas changé le contenu, mais pour le moment, copiez le service dans / 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

Refléter à nouveau les paramètres systemd Unité 1

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

Unité 2

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

Démarrer le stimulateur cardiaque

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

Aussi, donnez un mot de passe à un utilisateur nommé hacluster Unité 1

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

Unité 2

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

S'authentifier à l'aide de l'utilisateur hacluster
[root@server-1 ~]# pcs cluster auth SERVER-1 SERVER-2 -u hacluster -p [ha mot de passe]

paramètres de cluster

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

Démarrez le cluster

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

Enregistrement des ressources

Enregistrement DRBD

[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

Cryptage du disque

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

Montage du système de fichiers

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

Quelque chose de différent

[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

Des ressources propres

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

J'ai fait ce genre de réglage, mais j'ai oublié ce que c'était ...

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

VIP est également ajouté à la ressource

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

Vérification

[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 sur CentOS7 ACT / SBY
Installez Faiss sur CentOS 7
Installez numba sur CentOS 7.2
Installez Python3.4 sur CentOS 6.6
Installez mecab-python sur CentOS
Installez Python 2.7.3 sur CentOS 5.4
Installez awscli sur centos7
Installer Chainer sur CentOS 6.7
Configuration du couple sur CentOS 6