рд╢реБрдн рджрд┐рди, рд╣рдмреНрд░реЛрд╡реНрд╕реНрдХред рдПрдХ рдХрд╛рд░реНрдп рдерд╛ - pacamaker + drbd (рдбреБрдЕрд▓ рдкреНрд░рд╛рдЗрдорд░реА рдореЛрдб рдореЗрдВ) + clvmd + ctdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлреЙрд▓реНрдЯ-рдЯреЙрд▓рд░реЗрдВрдЯ рд╣рд╛рдИ рдЕрд╡реЗрд▓реЗрдмрд▓ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрди рд╕рднреА рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдпрд╛ рд╣реВрдБ рдФрд░ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди / рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреБрд░рд╛рдиреА рд╣реИред рдпрд╣ рдлрд┐рд▓рд╣рд╛рд▓ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди, рдореБрдЭреЗ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдорд┐рд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдпрдерд╛ рд╕рдВрдХреЗрдд рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CentOS 7 рдкрд░ рджреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рд╣реИрдВред
1) рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ / рдЖрджрд┐ / рдореЗрдЬрдмрд╛рдиреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛рдПрдВ
192.168.0.1 node1 192.168.0.2 node2
2) рдорд╛рдирдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреЛрдИ DRBD рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
3) рдбреНрд░рдм рд╕рдВрд╕реНрдХрд░рдг 8.4 рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдореБрдЭреЗ рджреЛрд╣рд░реА рдкреНрд░рд╛рдердорд┐рдХ рдореЛрдб рдореЗрдВ 9.0 рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛)
yum install -y kmod-drbd84 drbd84-utils
4) рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдбреНрд░рдм рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдФрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf
5) рд╕рдВрд╕рд╛рдзрди drbd /etc/drbd.d/r0.res рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ
resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; }
6) рдбреНрд░рдм рдпреВрдирд┐рдЯ (рдмрд╛рдж рдореЗрдВ рдкреЗрд╕рдореЗрдХрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ, рдбреНрд░рдм рдбрд┐рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрдирд╛рдПрдВ, рд╕рдВрд╕рд╛рдзрди рдмрдврд╝рд╛рдПрдВ
systemctl disable drbd drbdadm create-md r0 drbdadm up r0
7) рдкрд╣рд▓реЗ рдиреЛрдб рдкрд░, рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдмрдирд╛рдПрдВ
drbdadm primary --force r0
8) рдкреЗрд╕рдореЗрдХрд░ рд▓рдЧрд╛рдПрдВ
yum install -y pacemaker pcs resource-agents
9) рдиреЛрдбреНрд╕ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдХреНрд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ
echo CHANGEME | passwd --stdin hacluster
10) рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдкреЗрд╕рдореЗрдХрд░ рдЪрд▓рд╛рдПрдВ
systemctl enable pcsd systemctl start pcsd
11) рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред рдЗрд╕ рдЪрд░рдг рд╕реЗ рд╣рдо рд╕рдм рдХреБрдЫ рдПрдХ рдиреЛрдб рдкрд░ рдХрд░рддреЗ рд╣реИрдВ
pcs cluster auth node1 node2 -u hacluster
12) samba_cluster рдирд╛рдо рдХрд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВ
pcs cluster setup --force --name samba_cluster node1 node2
13) рдиреЛрдбреНрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
pcs cluster enable --all pcs cluster start --all
14) рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо STONITH рддрдВрддреНрд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ
pcs property set stonith-enabled=false pcs property set no-quorum-policy=ignore
15) рдПрдХ рд╡реАрдЖрдИрдкреА рдмрдирд╛рдПрдБ
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s
16) рдПрдХ drbd рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПрдВ
pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg
17) clvm рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдХреБрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ clvm рддреИрдпрд╛рд░ рдХрд░реЗрдВ
yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster
18) рдкреЗрд╕рдореЗрдХрд░ рдореЗрдВ dlm рдФрд░ clvd рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝реЗрдВ
pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone
19) рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, clvmd рдФрд░ dlm рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдкреЗрд╕рдореЗрдХрд░
192.168.0.1 : 2224 рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреНрд▓рд╕реНрдЯрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ "рдПрдб рдореМрдЬреВрджрд╛" рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрд╕рд╛рдзрди - dlm - рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХреЛрдВ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ allow_stonith_disabled = true рдорд╛рди рд╕реЗрдЯ рдХрд░реЗрдВ
20) рд╣рдо рд╕рдВрд╕рд╛рдзрди рд▓реЛрдбрд┐рдВрдЧ рдХрддрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone
21) LVM рдХреЛ рдХреИрд╢ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЙрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдХрд░реЗрдВред рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░
sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/*
22) рд╣рдо /etc/lvm/lvm.conf рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ lvm / dev / sdb рди рджрд┐рдЦреЗред рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░
23) рдПрдХ CLVM рдкрд╛рд░реНрдЯреАрд╢рди рдмрдирд╛рдПрдВред рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдиреЛрдЯ рдкрд░ рдмрдирд╛рддреЗ рд╣реИрдВ
$ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created.
24) рд╣рдо gfs2 рдореЗрдВ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ
mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0
25) рдЕрдЧрд▓рд╛, рдкреЗрд╕рдореЗрдХрд░ рдореЗрдВ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдорд╛рдЙрдВрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ clvmd рдХреЗ рдмрд╛рдж рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ
pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone
26) рдЕрдм рдпрд╣ ctdb рдХреА рдмрд╛рд░реА рд╣реИ рдЬреЛ рд╕рд╛рдВрдмрд╛ рдЪрд▓рд╛рдПрдЧрд╛
yum install -y samba ctdb cifs-utils
27) рдХреЙрдиреНрдлрд┐рдЧрд░ /etc/ctdb/ctdbd.conf рдХреЛ рдПрдбрд┐рдЯ рдХрд░реЗрдВ
CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE
28) рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдЪреЗрддрд╛рд╡рдиреА! рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдИрдкреА рдХреЗ рдмрд╛рдж, рдПрдХ рд▓рд╛рдЗрди рдлреАрдб рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рдиреЛрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2
29) config /etc/samba/smb.conf рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
[global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes
30) рдЕрдВрдд рдореЗрдВ, ctdb рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдПрдВ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
pcs constraint order start fs-clone then samba
рдФрд░ рдЕрдм рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдиреЛрдб рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдЧреБрдЪреНрдЫрд╛ рдврд╣ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ drbd рдХреЛ рд╕рдХреНрд░рд┐рдп / dev / drbd0 рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдбреАрдПрд▓рдПрдо рд╡рд┐рднрд╛рдЬрди рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИ рдФрд░ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЖрджрд┐ред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рдФрд░ рдкреЗрд╕рдореЗрдХрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ
vgchage -ay pcs resource refresh