따라서 클러스터를 구성할 때 모든 서비스가 실행 중이지만 다시 시작하면 다음과 같은 결과가 나타납니다.
Full list of resources:
virtual_ip (ocf::heartbeat:IPaddr2): Started node1
webserver (ocf::heartbeat:apache): Stopped
Master/Slave Set: WebDataClone [WebData]
Masters: [ node2 ]
Slaves: [ node1 ]
WebFS (ocf::heartbeat:Filesystem): Started node2
sqlfs (ocf::heartbeat:Filesystem): Stopped
Master/Slave Set: SQLDataClone [SQLData]
Masters: [ node1 ]
Slaves: [ node2 ]
실패한 작업:
sqlfs_start_0 on node1 'unknown error' (1): call=26, status=complete, last-rc-change='Sat Jun 4 00:57:27 2016', queued=0ms, exec=32ms
sqlfs_start_0 on node2 'unknown error' (1): call=34, status=complete, last- rc-change='Sat Jun 4 00:57:27 2016', queued=0ms, exec=59ms
이것이 내가 SQL 구성에 사용하는 것입니다.
resource sqldata {
protocol C;
disk /dev/sdb2;
device /dev/drbd1;
startup {
wfc-timeout 30;
outdated-wfc-timeout 20;
degr-wfc-timeout 30;
}
net {
cram-hmac-alg sha1;
shared-secret sync_disk;
}
syncer {
rate 10M;
al-extents 257;
on-no-data-accessible io-error;
verify-alg sha1;
}
on node1.freesoftwareservers.com {
address 192.168.1.218:7788;
flexible-meta-disk internal;
}
on node2.freesoftwareservers.com {
address 192.168.1.221:7788;
meta-disk internal;
}
}
DRBD를 시작하고 동기화합니다.
drbdadm -- --overwrite-data-of-peer primary sqldata
drbdadm primary --force sqldata
watch cat /proc/drbd
수정된 my.cnf는 두 서버 모두에서 변경됩니다.
service mysqld stop
sudo nano /etc/my.cnf
Change in /etc/my.cnf :
#bind-address = 127.0.0.1
#Make Virtual_IP
bind-address = 192.168.1.215
#datadir=/var/lib/mysql
#Where DRBD will Mount
datadir=/var/lib/mysql_drbd
Mount and Populate with Data :
drbd1을 설치하고 채웁니다.
/sbin/mkfs.ext4 /dev/drbd1
mkdir /mnt/drbd1
mount /dev/drbd1 /mnt/drbd1
mv /var/lib/mysql_drbd/* /mnt/drbd1/
chcon -R --reference=/var/lib/mysql /mnt/drbd1
umount /dev/drbd1
실패한 것으로 보이는 구성은 다음과 같습니다.
pcs cluster start --all
pcs cluster cib sqlfs_cfg
pcs -f sqlfs_cfg resource create sqlfs ocf:heartbeat:Filesystem device="/dev/drbd1" directory="/var/lib/mysql_drbd" fstype="ext4"
pcs -f sqlfs_cfg constraint colocation add sqlfs with SQLDataClone INFINITY with-rsc-role=Master
pcs -f sqlfs_cfg constraint order promote SQLDataClone then start sqlfs
pcs -f sqlfs_cfg constraint colocation add webserver with sqlfs INFINITY
pcs -f sqlfs_cfg constraint order sqlfs then webserver
pcs -f sqlfs_cfg constraint
pcs -f sqlfs_cfg resource show
pcs cluster cib-push sqlfs_cfg
sqlfs_drbd_cfg:
pcs cluster start --all
pcs cluster cib sqlfs_drbd_cfg
pcs -f sqlfs_drbd_cfg resource create SQLData ocf:linbit:drbd drbd_resource=sqldata op monitor interval=60s
pcs -f sqlfs_drbd_cfg resource master SQLDataClone SQLData master-max=1 master- node-max=1 clone-max=2 clone-node-max=1 notify=true
pcs -f sqlfs_drbd_cfg resource show
pcs cluster cib-push sqlfs_drbd_cfg
노드 1(AKA 기본)에서 기본 위치를 설정합니다.
pcs constraint location sqlfs prefers node1=50
이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 다시 말하지만, 초기 구성 중에 작동하고 재부팅 후에 충돌이 발생합니다...
감사해요!
답변1
Pacemaker에 mysql이 정의되어 있지 않습니다. 클러스터가 시작된 후 또는 시작할 때 수동으로 시작합니까?
부팅 시 시작되면 Pacemaker보다 먼저 시작되어 마운트 지점(데이터가 있어야 하는 위치)이 잠길 수 있으며, 이로 인해 파일 시스템 리소스가 해당 위치에 파일 시스템을 마운트할 수 없게 됩니다.
약간 맹목적이지만, 이 경우에는 부팅 시 mysql이 시작되지 않도록 비활성화한 다음 클러스터에서 정의해야 합니다.