BRLink рд╕рд░реНрд╡рд┐рдбреЛрд░ рд▓рд┐рдирдХреНрд╕ рдЯреАрдо рд╕реЗ рд░рд╛рдлреЗрд▓ рдорд╛рд░рдВрдЧреЛрдиреА рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛
1. рдЯрд┐рдкреНрдкрдгреА:
рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг:
Centos 5.5 рд╡рд┐рддрд░рдг рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдк Red Hat Linux рдпрд╛ Fedore Core рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рдо рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ PostgreSQL рдбреЗрдЯрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП DRBD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ DRBD рдбрд┐рд╕реНрдХ рдпрд╛ рд╡рд┐рднрд╛рдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдпрд╛рдж рд░рдЦреЗрдВ: рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдиреЗрдЯрд╡рд░реНрдХ рдЙрдкрдХрд░рдг / рдЯреЛрдкреЛрд▓реЙрдЬреА:
рд╣рдо рджреЛ рдЧрд┐рдЧрд╛рдмрд┐рдЯ рдПрдирдЖрдИрд╕реА рдХреЗ рдкреНрд░рддрд┐ рдиреЛрдб, рдПрдХ (eth0) рдиреЗрдЯрд╡рд░реНрдХ (LAN) рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░рд╛ (eth1) рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕ рдХрдиреЗрдХреНрдЯ рдХреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреНрд░реЙрд╕рдУрд╡рд░ рдХреЗрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдо рджреЛ рднреМрддрд┐рдХ рдиреЛрдбреНрд╕ рдиреЛрдб 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ редclusterbr.int рдФрд░ node2.clusterbr.int:
рдиреЛрдб1.clusterbr.int: рдкрд╣рд▓реЗ рдиреЛрдб рдХрд╛ рдЖрдИрдкреА 10.0.0.191 (LAN) рдФрд░ рдЖрдИрдкреА 172.16.0.1 (рдХреНрд░реЙрд╕-рдХрдиреЗрдХреНрдЯ)
node2.clusterbr.int: рдЖрдИрдкреА 10.0.0.192 (LAN) рдФрд░ IP 172.16.0.2 (рдХреНрд░реЙрд╕ рдХрдиреЗрдХреНрдЯ)
dbip.clusterbr.int: рдХреНрд▓рд╕реНрдЯрд░ IP, 10.0.0.190 (рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ PostgreSQL рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ IP рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)
* рдХреНрд░реЙрд╕ рдХрдиреЗрдХреНрдЯ рдореИрдВ рдХреНрд░реЙрд╕-рдУрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛
рдбрд┐рд╕реНрдХ:
рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЗ рджреЛ рдЦрдВрдб рд╣реИрдВ:
/ dev / sda: OSes рдХреЗ рд▓рд┐рдП;
/ рджреЗрд╡ / sdb: DRBD рдХреЗ рд▓рд┐рдПред
PostgreSQL:
PostgreSQL рд╕рдВрд╕реНрдХрд░рдг 8.5, DRBD рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
2. рдиреЛрдб рдХреА рддреИрдпрд╛рд░реА:
рдЪрдпрди рдЕрдХреНрд╖рдо рдХрд░реЗрдВ:
vi /etc/selinux/config
(рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдХреА рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ)
SELINUX=disabled
рд╣реЛрд╕реНрдЯрдирд╛рдо рдФрд░ рд╣реЛрд╕реНрдЯ рдЧреЗрдЯрд╡реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
vi /etc/sysconfig/network
node1:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clusterbr.int
GATEWAY=10.0.0.9
node2:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clusterbr.int
GATEWAY=10.0.0.9
рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
node1:
LAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.191
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=a6:1e:3d:67:66:78
рдХреНрд░реЙрд╕-рдУрд╡рд░ / DRBD рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57
node2:
LAN рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.192
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=52:52:a1:1a:62:32
рдХреНрд░реЙрд╕-рдУрд╡рд░ / DRBD рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1e
DNS рд╕реЗрдЯрдЕрдк:
vi /etc/resolv.conf
search clusterbr.int
nameserver 10.0.0.9
рд╣реЛрд╕реНрдЯрдирд╛рдо рд╕реЗрдЯрд┐рдВрдЧ:
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╕рдорд╛рди рд╣реИ:
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.0.0.191 node1.clusterbr.int node1
10.0.0.192 node2.clusterbr.int node2
10.0.0.190 dbip.clusterbr.int node2
рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
node1:
рд╣рдо рдиреЛрдб 2 (рд▓реИрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЛ рдкрд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ:
ping -c 2 node2
[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.192) 56(84) bytes of data.
64 bytes from node2 (10.0.0.192): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from node2 (10.0.0.192): icmp_seq=2 ttl=64 time=0.082 ms
--- node2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms
рд╣рдо рдиреЛрдб 2 (рдХреНрд░реЙрд╕-рдУрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ):
ping -c 2 172.16.0.2
[root@node1 ~]# ping -c 2 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.083 ms
--- 172.16.0.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms
node2:
рд╣рдо рдиреЛрдб 1 (рд▓реИрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдкрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
ping -c 2 node1
[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.191) 56(84) bytes of data.
64 bytes from node1 (10.0.0.191): icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from node1 (10.0.0.191): icmp_seq=2 ttl=64 time=0.063 ms
--- node1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms
рд╣рдо рдкрд┐рдВрдЧ рдиреЛрдб 1 (рдХреНрд░реЙрд╕-рдУрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ):
ping -c 2 172.16.0.1
[root@node2 ~]# ping -c 2 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=1.36 ms
64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.075 ms
--- 172.16.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms
рдЖрд░рдВрднреАрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
(рдХреЗрд╡рд▓ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╢реЗрд╖ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)
vi /etc/inittab
id:3:initdefault:
рдЪрд▓рд┐рдП рд╕реЗрд╡рд╛рдПрдВ рджреЗрдЦрддреЗ рд╣реИрдВ:
chkconfig --list | grep 3:sim
[root@node1 ~]# chkconfig --list | grep 3:sim
acpid 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
anacron 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
apmd 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
atd 0:n├Г┬гo 1:n├Г┬гo 2:n├Г┬гo 3:sim 4:sim 5:sim 6:n├Г┬гo
cpuspeed 0:n├Г┬гo 1:sim 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
crond 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
irqbalance 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
kudzu 0:n├Г┬гo 1:n├Г┬гo 2:n├Г┬гo 3:sim 4:sim 5:sim 6:n├Г┬гo
network 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
rawdevices 0:n├Г┬гo 1:n├Г┬гo 2:n├Г┬гo 3:sim 4:sim 5:sim 6:n├Г┬гo
sshd 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
syslog 0:n├Г┬гo 1:n├Г┬гo 2:sim 3:sim 4:sim 5:sim 6:n├Г┬гo
рдЕрдм, рдЙрдкрд░реЛрдХреНрдд рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдиреЛрдбреНрд╕ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░реЗрдВрдЧреЗред
3. рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ:
yum install -y postgresql84** gcc perl-mailtools perl-dbi php-pgsql
рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛрдбрд╝реЗрдВ:
rpm -Uvh download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
рдЕрдм рд╣рдо рдХреНрд▓рд╕реНрдЯрд░рд╕реНрдЯрд░ рдИрдкреАрдПрд▓ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
wget -O /etc/yum.repos.d/pacemaker.repo clusterlabs.org/rpm/epel-5/clusterlabs.repo
рдХреНрд▓рд╕реНрдЯрд░ рдФрд░ DRBD рдкреИрдХреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
yum install -y pacemaker corosync drbd83 kmod-drbd83 heartbeat
4. DRBD рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ DRBD рдХреЛ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
vi /etc/drbd.conf
global {
usage-count no;
}
common {
syncer { rate 100M; }
protocol C;
}
resource postgres {
startup {
wfc-timeout 0;
degr-wfc-timeout
120;
}
disk { on-io-error detach; }
on node1.clusterbr.int {
device /dev/drbd0;
disk /dev/sdb;
address 172.16.0.1:7791;
meta-disk internal;
}
on node2.clusterbr.int {
device /dev/drbd0;
disk /dev/sdb;
address 172.16.0.2:7791;
meta-disk internal;
}
}
рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдЗрдЯрдо:
рд╕рдВрд╕рд╛рдзрди: рд╣рдо рдЙрд╕ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ DRBD рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдордиреЗ рдЗрд╕реЗ "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ" рдХрд╣рд╛ рд╣реИ
рдбрд┐рд╕реНрдХ: рдЙрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬреЛ DRBD (рдбрд┐рд╕реНрдХ рдпрд╛ рд╡рд┐рднрд╛рдЬрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛
рдкрддрд╛: IP рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рдЬреЛ DRBD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ (рд╣рдордиреЗ рдХреНрд░реЙрд╕-рдУрд╡рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ)
syncer: рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рджрд░
рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рдпрд╛ рд╕рдВрджреЗрд╣ рд╣реИрдВ, рддреЛ рдЖрдк рд╣рдореЗрд╢рд╛ рдореИрдиреБрдЕрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: www.drbd.org/users-guide-emb
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рдж, рд╣рдо PostgreSQL рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдХреЗ:
node1:
drbdadm create-md postgres
[root@node1 ~]# drbdadm create-md postgres
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
node2:
drbdadm create-md postgres
[root@node2 ~]# drbdadm create-md postgres
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реЗ, рд╣рдо рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВрдЧреЗ:
drbdadm up postgres
рдЕрдм рд╣рдо рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдиреЛрдб 1 рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдореБрдЦреНрдп рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░реЗрдВ:
drbdadm -- --overwrite-data-of-peer primary postgres
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
cat /proc/drbd
[root@node1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r----
ns:48128 nr:0 dw:0 dr:48128 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:8340188
[>....................] sync'ed: 0.6% (8144/8188)M delay_probe: 7
finish: 0:11:29 speed: 12,032 (12,032) K/sec
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рдЖрдХрд╛рд░, рдбрд┐рд╕реНрдХ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЧрддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ
node1:
cat /proc/drbd
[root@node1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:8388316 nr:0 dw:0 dr:8388316 al:0 bm:512 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
node2:
cat /proc/drbd
[root@node2 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r----
ns:0 nr:8388316 dw:8388316 dr:0 al:0 bm:512 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
5. PostgreSQL рд╕реЗрдЯрдЕрдк
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ DRBD рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
/etc/init.d/drbd start
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдиреЛрдб 1 рдореБрдЦреНрдп рдиреЛрдб рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ:
cat /proc/drbd
[root@node1 ~]# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r----
ns:8388316 nr:0 dw:0 dr:8388316 al:0 bm:512 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
рдкреНрд░рд╛рдердорд┐рдХ / рдорд╛рдзреНрдпрдорд┐рдХ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреВрд╕рд░рд╛ рдорд╛рдзреНрдпрдорд┐рдХ рд╣реИред
рдЕрдЧрд▓рд╛ рд╣рдореЗрдВ DRBD рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд░реВрдк рдореЗрдВ ext3 рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
node1:
mkfs.ext3 /dev/drbd0
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдорд╛рдирдХ PostgreSQL рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреЛрдб рдкрд░ рдЕрдиреБрднрд╛рдЧ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
node1:
mount -t ext3 /dev/drbd0 /var/lib/pgsql
рдЕрдЧрд▓рд╛, рд╕реНрд╡рд╛рдореА рдмрджрд▓реЗрдВ рдФрд░ рд╕рдореВрд╣ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
node1:
chown postgres.postgres /var/lib/pgsql
рдЕрдм PostgreSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:
node1:
su - postgres
initdb /var/lib/pgsql/data
exit
рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдФрд░ рдЖрдИрдкреА рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:
node1:
echo "host all all 10.0.0.191/32 trust" >> /var/lib/pgsql/data/pg_hba.conf
echo "host all all 10.0.0.192/32 trust" >> /var/lib/pgsql/data/pg_hba.conf
echo "host all all 10.0.0.190/32 trust" >> /var/lib/pgsql/data/pg_hba.conf
рдЕрдЧрд▓рд╛, рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ PostgreSQL рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗ:
node1:
vi /var/lib/pgsql/data/postgresql.conf
рдХреЗрд╡рд▓ рдпрд╣ рд░реЗрдЦрд╛
listen_addresses = '0.0.0.0'
PostgreSQL рдЪрд▓рд╛рдПрдБ:
node1:
/etc/init.d/postgresql start
рдЕрдм PostgeSQL рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ:
node1:
su - postgres
createuser --superuser admpgsql --pwprompt
рдЖрдкрдХреЛ admpgsql рдкрд░ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЙрд╕реЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░реЗрдВрдЧреЗ:
node1:
su - postgres
createdb pgbench
pgbench -i pgbench
pgbench рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЖрдмрд╛рдж рдХрд░реЗрдЧрд╛:
pgbench -i pgbench
-bash-3.2$ pgbench -i pgbench
NOTA: tabela "pgbench_branches" n├Г┬гo existe, ignorando
NOTA: tabela "pgbench_tellers" n├Г┬гo existe, ignorando
NOTA: tabela "pgbench_accounts" n├Г┬гo existe, ignorando
NOTA: tabela "pgbench_history" n├Г┬гo existe, ignorando
creating tables...
10000 tuples done.
20000 tuples done.
30000 tuples done.
40000 tuples done.
50000 tuples done.
60000 tuples done.
70000 tuples done.
80000 tuples done.
90000 tuples done.
100000 tuples done.
set primary key...
NOTA: ALTER TABLE / ADD PRIMARY KEY criar├Г┬б ├Г ndice impl├Г cito "pgbench_branches_pkey" na tabela "pgbench_branches"
NOTA: ALTER TABLE / ADD PRIMARY KEY criar├Г┬б ├Г ndice impl├Г cito "pgbench_tellers_pkey" na tabela "pgbench_tellers"
NOTA: ALTER TABLE / ADD PRIMARY KEY criar├Г┬б ├Г ndice impl├Г cito "pgbench_accounts_pkey" na tabela "pgbench_accounts"
vacuum...done.
рдЕрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдбрд╝рддреЗ рд╣реИрдВ:
node1:
psql -U admpgsql -d pgbench
select * from pgbench_tellers;
psql -U admpgsql -d pgbench
psql (8.4.5)
Digite "help" para ajuda.
pgbench=# select * from pgbench_tellers;
tid | bid | tbalance | filler
-----+-----+----------+--------
1 | 1 | 0 |
2 | 1 | 0 |
3 | 1 | 0 |
4 | 1 | 0 |
5 | 1 | 0 |
6 | 1 | 0 |
7 | 1 | 0 |
8 | 1 | 0 |
9 | 1 | 0 |
10 | 1 | 0 |
(10 registros)
рдпрд╣ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
рдиреЛрдб 2 рдкрд░ PostgreSQL рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдБрдЪ:
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдкреЗрд╕рдореЗрдХрд░ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдиреЛрдб 2 рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдиреЛрдб 1 рдкрд░ рд╣рдореЗрдВ рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕рдХреНрд▓ рдХреЛ рд░реЛрдХрдирд╛ рд╣реЛрдЧрд╛:
node1:
/etc/init.d/postgresql stop
рдЕрдЧрд▓рд╛, DRBD рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
umount /dev/drbd0
рдЕрдм рд╣рдо DRBD рдкрд░ рдиреЛрдб 1 рдХреЛ рджреНрд╡рд┐рддреАрдпрдХ рдмрдирд╛рдпреЗрдВрдЧреЗ:
drbdadm secondary postgres
рдЕрдм рдиреЛрдб 2 рдкрд░ рд╣рдо DRBD рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдмрдирд╛рдПрдВрдЧреЗ:
node2:
drbdadm primary postgres
рдЕрдЧрд▓рд╛, DRBD рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
mount -t ext3 /dev/drbd0 /var/lib/pgsql/
рдФрд░ рдЕрдВрдд рдореЗрдВ PostgreSQL рдЪрд▓рд╛рдПрдВ:
/etc/init.d/postgresql start
рдЕрдм рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдиреЛрдб 2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ pgbench рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
psql -U admpgsql -d pgbench
select * from pgbench_tellers;
[root@node2 ~]# psql -U admpgsql -d pgbench
psql (8.4.5)
Digite "help" para ajuda.
pgbench=# select * from pgbench_tellers;
tid | bid | tbalance | filler
-----+-----+----------+--------
1 | 1 | 0 |
2 | 1 | 0 |
3 | 1 | 0 |
4 | 1 | 0 |
5 | 1 | 0 |
6 | 1 | 0 |
7 | 1 | 0 |
8 | 1 | 0 |
9 | 1 | 0 |
10 | 1 | 0 |
(10 registros)
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
node2:
/etc/init.d/postgresql stop
umount /dev/drbd0
drbdadm secondary postgres
/etc/init.d/drbd stop
node1:
drbdadm primary postgres
/etc/init.d/drbd stop
рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рд╕рднреА рд╕реЗрд╡рд╛рдПрдВ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдЕрдХреНрд╖рдо рд╣реИрдВ:
chkconfig --level 35 drbd off
chkconfig --level 35 postgresql off
6. Corosync (рдУрдкрдирдПрдЖрдИрдПрд╕) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рдХреЛрд░реЛрд╕рд┐рдВрдХ рд╕реЗрдЯрдЕрдк рдмрдирд╛рдирд╛
node1:
export ais_port=4000
export ais_mcast=226.94.1.1
export ais_addr=`ip address show eth0 | grep "inet " | tail -n 1 | awk '{print $4}' | sed s/255/0/`
рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
env | grep ais_
Ais_addr рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреНрд░реЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрдиреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ 10.0.0.0 рд╣реИ
рдЖрдЧреЗ рд╣рдо corosync рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ:
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
sed -i.gres "s/.*mcastaddr:.*/mcastaddr:\ $ais_mcast/g" /etc/corosync/corosync.conf
sed -i.gres "s/.*mcastport:.*/mcastport:\ $ais_port/g" /etc/corosync/corosync.conf
sed -i.gres "s/.*bindnetaddr:.*/bindnetaddr:\ $ais_addr/g" /etc/corosync/corosync.conf
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
cat <<-END >>/etc/corosync/corosync.conf
aisexec {
user: root
group: root
}
END
cat <<-END >>/etc/corosync/corosync.conf
service {
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 0
}
END
рдлрд╝рд╛рдЗрд▓
/etc/corosync/corosync.conf
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
compatibility: whitetank
totem {
version: 2
secauth: off
threads: 0
interface {
ringnumber: 0
bindnetaddr: 10.0.0.0
mcastaddr: 226.94.1.1
mcastport: 4000
}
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
to_syslog: yes
logfile: /tmp/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
amf {
mode: disabled
}
aisexec {
user: root
group: root
}
service {
# Load the Pacemaker Cluster Resource Manager
name: pacemaker
ver: 0
}
рдиреЛрдб 1 рд╕реЗ рд╣рдо рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдиреЛрдб 2 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ:
scp /etc/corosync/* node2:/etc/corosync/
рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
mkdir /var/log/cluster/
рдЕрдм corosync рдЪрд▓рд╛рдПрдВ
node1:
/etc/init.d/corosync start
рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреНрд░рдо рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
node1:
grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
[root@node1 bin]# grep -e "Corosync Cluster Engine" -e "configuration file" /var/log/messages
Apr 7 12:37:21 node1 corosync[23533]: [MAIN ] Corosync Cluster Engine ('1.2.0'): started and ready to provide service.
Apr 7 12:37:21 node1 corosync[23533]: [MAIN ] Successfully read main configuration file '/etc/corosync/corosync.conf'.
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдЬреЛ рдХреЛрд░реЛрд╕рд┐рдВрдХ рдХреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рд┐рдП:
grep TOTEM /var/log/messages
[root@node1 bin]# grep TOTEM /var/log/messages
Apr 7 12:37:21 node1 corosync[23533]: [TOTEM ] Initializing transport (UDP/IP).
Apr 7 12:37:21 node1 corosync[23533]: [TOTEM ] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Apr 7 12:37:21 node1 corosync[23533]: [TOTEM ] The network interface [10.0.0.191] is now up.
Apr 7 12:37:21 node1 corosync[23533]: [TOTEM ] A processor joined or left the membership and a new membership was formed.
рдЕрдЧрд▓рд╛, рдкреЗрд╕рдореЗрдХрд░ рджреЗрдЦреЗрдВ:
grep pcmk_startup /var/log/messages
[root@node1 bin]# grep pcmk_startup /var/log/messages
Apr 7 12:37:21 node1 corosync[23533]: [pcmk ] info: pcmk_startup: CRM: Initialized
Apr 7 12:37:21 node1 corosync[23533]: [pcmk ] Logging: Initialized pcmk_startup
Apr 7 12:37:21 node1 corosync[23533]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295
Apr 7 12:37:21 node1 corosync[23533]: [pcmk ] info: pcmk_startup: Service: 9
Apr 7 12:37:21 node1 corosync[23533]: [pcmk ] info: pcmk_startup: Local hostname: node1
рд╣рдо рдЕрдкрдиреА corosync рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
ps axf
[root@node1 bin]# ps axf
(should contain something like this)
23533 ? Ssl 0:00 corosync
23539 ? SLs 0:00 \_ /usr/lib/heartbeat/stonithd
23540 ? S 0:00 \_ /usr/lib/heartbeat/cib
23541 ? S 0:00 \_ /usr/lib/heartbeat/lrmd
23542 ? S 0:00 \_ /usr/lib/heartbeat/attrd
23543 ? S 0:00 \_ /usr/lib/heartbeat/pengine
23544 ? S 0:00 \_ /usr/lib/heartbeat/crmd
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдо corosync рдХреЛ рдиреЛрдб 2 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
node2:
/etc/init.d/corosync start
рд╣рдо рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ:
crm_mon -1
[root@node1 ~]# crm_mon -1
============
Last updated: Fri Oct 29 17:44:36 2010
Stack: openais
Current DC: node1.clusterbr.int - partition with quorum
Version: 1.0.9-89bd754939df5150de7cd76835f98fe90851b677
2 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ node1.clusterbr.int node2.clusterbr.int ]
рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЛ рдСрдирд▓рд╛рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ autoload рдореЗрдВ corosync рдЬреЛрдбрд╝реЗрдВ:
chkconfig --level 35 corosync on
7. рдкреЗрд╕рдореЗрдХрд░ рд╕реЗрдЯрдЕрдк
рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЖрджреЗрд╢:
рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬрд╛рдВрдЪреЗрдВ:
crm_verify -L
рд╣рдо рд╕реВрдЪреА рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
crm_mon -1
рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реВрдЪреА:
crm configure show
рдЦреБрд▓реЗ рдХреНрд░рдо рдХрдВрд╕реЛрд▓ рдХреА рд╕реВрдЪреА
crm
Stonith рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП:
crm_verify -L
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдЯреЛрдирд┐рде рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
crm configure property stonith-enabled=false
рдЕрдм рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪреЗрдХ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
crm_verify -L
рдмреЗрд╕рд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рд╣рдорд╛рд░реЗ рдиреЛрдб рд╕реЗ рдХрд┐рд╕реА рднреА рдиреЛрдб рдкрд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:
crm configure property no-quorum-policy=ignore
рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рджреВрд╕рд░реЗ рдиреЛрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдиреЛрдб рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рджреВрд╕рд░реЗ рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
crm configure rsc_defaults resource-stickiness=100
рдЖрдЗрдП рджреЗрдЦреЗрдВ рд╣рдорд╛рд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕:
crm configure show
[root@node1 ~]# crm configure show
node node1.clusterbr.int
node node2.clusterbr.int
property $id="cib-bootstrap-options" \
dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
DBIP рд╡рд┐рдиреНрдпрд╛рд╕
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ IP рдкрддрд╛ DBIP рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
crm configure primitive DBIP ocf:heartbeat:IPaddr2 \
params ip=10.0.0.190 cidr_netmask=24 \
op monitor interval=30s
рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
crm_mon -1
[root@node1 ~]# crm_mon -1
============
Last updated: Fri Oct 29 17:47:53 2010
Stack: openais
Current DC: node1.clusterbr.int - partition with quorum
Version: 1.0.9-89bd754939df5150de7cd76835f98fe90851b677
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ node2.clusterbr.int node1.clusterbr.int ]
DBIP (ocf::heartbeat:IPaddr2): Started node2.clusterbr.int
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╣рд╛рдБ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд▓рд╣рд╛рд▓ рдХрд╛рдо рдиреЛрдб 2 рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдиреЛрдб 1 рдкрд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ DRBD рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ DRBD рдЬреЛрдбрд╝реЗрдВ:
crm configure primitive drbd_postgres ocf:linbit:drbd \
params drbd_resource="postgres" \
op monitor interval="15s"
рдкреНрд░рд╛рдердорд┐рдХ рдФрд░ рджреНрд╡рд┐рддреАрдпрдХ рдиреЛрдб рд╕реЗрдЯ рдХрд░реЗрдВ:
crm configure ms ms_drbd_postgres drbd_postgres \
meta master-max="1" master-node-max="1" \
clone-max="2" clone-node-max="1" \
notify="true"
рдорд╛рдЙрдВрдЯ DRBD:
crm configure primitive postgres_fs ocf:heartbeat:Filesystem \
params device="/dev/drbd0" directory="/var/lib/pgsql" fstype="ext3"
рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ PostgreSQL рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ postgresql рдЬреЛрдбрд╝реЗрдВ:
crm configure primitive postgresql ocf:heartbeat:pgsql \
op monitor depth="0" timeout="30" interval="30"
рдЕрдм рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛
crm configure group postgres postgres_fs DBIP postgresql
crm configure colocation postgres_on_drbd inf: postgres ms_drbd_postgres:Master
рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
DRBDcrm configure order postgres_after_drbd inf: ms_drbd_postgres:promote postgres:start
рдЖрдЗрдП рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЗрдЦреЗрдВ
crm configure show
[root@node1 ~]# crm configure show
node node1.clusterbr.int
node node2.clusterbr.int
primitive DBIP ocf:heartbeat:IPaddr2 \
params ip="10.0.0.190" cidr_netmask="24" \
op monitor interval="30s"
primitive drbd_postgres ocf:linbit:drbd \
params drbd_resource="postgres" \
op monitor interval="15s"
primitive postgres_fs ocf:heartbeat:Filesystem \
params device="/dev/drbd0" directory="/var/lib/pgsql" fstype="ext3"
primitive postgresql ocf:heartbeat:pgsql \
op monitor interval="30" timeout="30" depth="0" \
meta target-role="Started"
group postgres postgres_fs DBIP postgresql \
meta target-role="Started"
ms ms_drbd_postgres drbd_postgres \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
colocation postgres_on_drbd inf: postgres ms_drbd_postgres:Master
order postgres_after_drbd inf: ms_drbd_postgres:promote postgres:start
property $id="cib-bootstrap-options" \
dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false" \
no-quorum-policy="ignore"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
[root@node1 ~]#
рдкрд╕рдВрджреАрджрд╛ рдиреЛрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
crm configure location master-prefer-node1 DBIP 50: node1.clusterbr.int
рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
crm_mon -1
[root@node2 ~]# crm_mon -1
============
Last updated: Fri Oct 29 19:54:09 2010
Stack: openais
Current DC: node2.clusterbr.int - partition with quorum
Version: 1.0.9-89bd754939df5150de7cd76835f98fe90851b677
2 Nodes configured, 2 expected votes
2 Resources configured.
============
Online: [ node2.clusterbr.int node1.clusterbr.int ]
Master/Slave Set: ms_drbd_postgres
Masters: [ node2.clusterbr.int ]
Slaves: [ node1.clusterbr.int ]
Resource Group: postgres
postgres_fs (ocf::heartbeat:Filesystem): Started node2.clusterbr.int
DBIP (ocf::heartbeat:IPaddr2): Started node2.clusterbr.int
postgresql (ocf::heartbeat:pgsql): Started node2.clusterbr.int
рдпрджрд┐ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдирдП рдХреЛрд░реЛрд╕рд┐рдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ DBIP (10.0.0.190) рдХреЛ рдЯреАрд╕реАрдкреА 5432 рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрди
рд╕рдВрд╕рд╛рдзрди рдХреЛ рджреВрд╕рд░реЗ рдиреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛:
crm resource migrate postgres node1.clusterbr.int
рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрдорд╛рдВрдб рд╣рдЯрд╛рдирд╛:
crm resource unmigrate postgres
рд╣рдо рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВ:
crm resource cleanup postgres
PostgreSQL рд╕реЗрд╡рд╛ рдмрдВрдж рдХрд░реЛ
crm resource stop postgresql
PostgreSQL рд╕реЗрд╡рд╛ рдХрд╛ рд╢реБрднрд╛рд░рдВрдн
crm resource start postgresql
8. рд╣рдо рд╕реЗрд╡рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВ
рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛
рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
/etc/init.d/httpd start
chkconfig --level 35 httpd on
рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ (DocumentRoot):
mkdir /var/www/html/cluster/
рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░реЗрдВ:
crm_mon --daemonize --as-html /var/www/html/cluster/index.html
рдФрд░ рдЪрд▓рд┐рдП рдЗрд╕ рдкреВрд░реА рдмрд╛рдд рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
echo "crm_mon --daemonize --as-html /var/www/html/cluster/index.html" >> /etc/rc.d/rc.local
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдереВрдерди рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
10.0.0.190/cluster
9. postgresql рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП phppgAdmin рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рд╣рдо рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ:
mkdir /download
cd /download
wget 'http://downloads.sourceforge.net/project/phppgadmin/phpPgAdmin%20%5Bbeta%5D/phpPgAdmin-5.0/phpPgAdmin-5.0-beta2.tar.bz2?r=http%3A%2F%2Fphppgadmin.sourceforge.net%2F%3Fpage%3Ddownload&ts=1288189530&use_mirror=ufpr'
рд╕реЗрдЯ рдХрд░реЗрдВ:
tar -jxvf phpPgAdmin-5.0-beta2.tar.bz2
mv phpPgAdmin-5.0-beta2 /var/www/html/cluster-pgadmin
chown apache.apache -R /var/www/html/cluster-pgadmin
10.0.0.190/cluster-pgadmin рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдЬрд╛рдПрдВ
рдкреБрдирд╢реНрдЪ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕рд▓ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдереЗ
10. рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдкрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ
рдпрд╣рд╛рдБ рд╣рдо 10.0.0.0/24 рдХреЛ MD5 рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ
echo "host all all 10.0.0.0/24 md5">> /var/lib/pgsql/data/pg_hba.conf
рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ:
crm resource stop postgresql
crm resource start postgresql
11. рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛
рдХреНрд▓рд╕реНрдЯрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк Zabbix рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ Zabbix рдПрдЬреЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП 1. рдЪреЗрдХ рдкрд┐рдВрдЧ (10.0.0.191, 10.0.0.192 рдФрд░ 172.16.0.1, 172.16.0.2)
2. DBIP (рдЖрдИрдкреА рдХреНрд▓рд╕реНрдЯрд░) рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ 10.0.0.190
3. DBIP 10.0.0.190 рдкрд░ TCP рдкреЛрд░реНрдЯ 5432 рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
4. рд╕реАрдкреАрдпреВ, рд░реИрдо рдФрд░ рдбрд┐рд╕реНрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
5. рдЖрдк Monitor_drbd.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд░рд┐рдгрд╛рдо 1 рддрдм рдЖрддрд╛ рд╣реИ рдЬрдм рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реЛ рдФрд░ 0 рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рдкрд░ 0)
Zabbix рдХреЗ рд▓рд┐рдП Monitor_drbd.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
#!/bin/bash
CHECK=`cat /proc/drbd | grep UpToDate/UpToDate | cut -d: -f5 | cut -c1-17`
STRING_OK="UpToDate/UpToDate"
# Comparando as duas.
if [ "$CHECK" == "$STRING_OK" ] ; then
# Is ok, returning 1
echo 1;
else
# Not ok, returning 0
echo 0;
fi
PS рдпрджрд┐ рдЖрдкрдиреЗ рдЯрд╛рдЗрдкреЛ рдпрд╛ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдХреЛрдИ рдорд┐рд╕рдореИрдЪ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдкреАрдПрдо рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред
рдореИрдВ рд╕рдорд╛рдЬ рдХреЗ рд╣рд┐рдд рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рдареАрдХ рдХрд░реВрдВрдЧрд╛ред