針對lvs高可用集羣的方法:
heartbeat+ldirectord
生成規則
健康狀態檢查
corosync+ldirectord
keepalived+ipvs
server:rsync+inotify
client:rsync,sersync
das
nas
san
SCSI:initator
target:
分佈式複製塊設備:drbd(distributed replicated block device)
raid1:mirror
drbd:主從
primary:可執行讀、寫操作
secondary:文件系統不能掛載
A:primary
B:secondary
drbd:dual primary(雙主模型)
DLM:distributed lock manager
GFS2/OCFS2
磁盤調度器:合併讀請求,合併寫請求
procotol:
A(async):異步
B(seml sync):半同步
C(sync):同步
drdb source(drdb資源):
資源名稱:可以是除了空白字符外的任意acsii碼字符
drdb設備名稱(可以簡單理解爲磁盤陣列取得的名字md0等):在雙方節點上,此drdb設備的設備文件,一般爲/dev/drdbN,其主設備號爲147,
磁盤:在雙方節點上,各自提供的存儲設備
網絡配置:雙方數據同步時所使用的網絡屬性
drdb:2.6.33起,整合進內核
下載網站
官方網站www.linbit.com
http://mirros.souhu.com/
drdb配置(這種配置方式只能手動切換主輔節點)
命令:
drbdam
drbdsetup
drbdmeta
for i in {1..2}
do
ssh node$i 'wget ftp://172.16.0.1/pub/sources/drbd/a.rpm'
done
node1:
yum install drbd kmod-drbd
for i in {1..2}
do
ssh node$i 'yum install drdb kmod-drbd'
done
rpm -ql drdb
fdisk /dev/sda -->/dev/sda5
cp /usr/share/drbd.conf /etc/drbd.conf
node2:
yum install drbd komd-drbd
fdisk /dev/sda -->/dev/sda5
兩臺節點上都要安裝上yum install drdb knod
兩臺節點上都要進行分區做成drdb設備:fdisk並且不要格式化
drdb的配置文件:兩臺節點配置一樣
/etc/drdb.conf(定義資源)
/etc/drdb.d/gloabl_common.conf(定義資源信息)
/etc/drdb.d/resource.d/
vim /etc/drdb.d/gloabl_common.conf
handlers {
pri-on-incon-degr這行的註釋拿掉
pri-on-incon-sb註釋拿掉
local-io-error註釋拿掉
}
disk {
on-io-error detach;
}
net {
cram-hmac-alg ”sha1“;
shaerd-secret“mydrb7tj45”;
}
syncer {
rate 200M;
}
vim /etc/drbd.d/mydrbd.res
resource mydrbd {
on node1.chenjiao.com {
device /dev/drdb0;
disk /dev/sda5;
address 172.16.100.6:7789;
meta-disk internal;
}
on node2.chenjiao.com {
device /dev/drbd0;
disk /dev/sda5;
address 172.16.100.7:7789;
meta-disk internal;
}
}
scp -r /etc/drbd.* node2:/etc
初始化:
node1:drbdadm create-md mydrdb
node2:drbdadm create-md mydrbd
啓動:
node1:/etc/init.d/drdb start
node2:/etc/init.d/drdb start
cat /proc/drdb
drbd-overview
node1:(只能在一個節點上面執行,用來定義主節點)drbdadm -- --overwrite-data-of-peer primary mydrbd
watch -n 1 cat /proc/drbd
只能主節點格式化,掛載
mkfs -t ext2 -j /dev/drdb0
mkdir /mydata
mount /dev/drbd0 /mydata
cp /etc/inittab /mydata
umount /mydata
drbdadm secondary mydrbd
drbd-overview
在另一節點上面執行drbd-overview
mkdir /mydata
mount /dev/drbd0 /mydata
drdb+corosync+pacemaker配置(實現主從自動切換)兩節點配置一樣
讓drdb配置成爲集羣資源
node1:
service drbd stop
yum install corosync corosynclib cluster-glue cluster-glue-libs heartbeat heartbeat-libs pacemaker pacemaker-cts pacemaker-libs resource-agents libesmtp
mkdir /var/log/cluster
cp corosync.conf.example corosync.conf
vim corosync.conf
secauth:on
threads:2
bindnetaddr:172.16.0.0
mcastaddr:239.212.16.19
logging {
to_syslog:no
}
service {
ver:0
name:pacemaker
}
aisexec {
user:root
group:root
}
corosync-Keygen
scp -p authkeys corosync node2:/etc/corosync/
service corosync start
ssh node2 ‘service corosync start’
查看正常啓動見其他文檔
crm configure
crm(live)configure# verify
crm(live)configure# property stonith-enable=false
crm(live)configure# verify
crm(live)configure# commit
crm(live)confugure# properfy no-quorum-policy=ignore
crm(live)configure# verify
crm(live)configure# commit
crm(live)configure# rsc_defaults resource-stickiness=100
crm(live)configure# verify
crm(live)configure# commit
crm(live)ra# provides drbd
crm(live)ra# classes
crm(live)ra# meta ocf:linbit:drbd
crm(live)configure# primitive mysqldrbd ocf:heartbeat:drbd params drbd_resource=mydrbd op start timeout=240 op stop timeout=100 op monitor role=Master interval=20s timeout=30s op monitor role=Slave interval=30s timeout=30s
crm(live)configure# verify
crm(live)configure# ms ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notity=true
crm(live)configure# commit
drbd-overview
crm node standby
crm node online
crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/mydata fstype=ext3 op start timeout=60 op stop timeout=60
crm(live)configure# verify
crm(live)configure# colocation mystore_with_ms_mysqldrbd inf:mystore ms_mysqldrbd:Master
crm(live)configure# order mystore_after_ms_mysqldrbd mandatory:ms_mysqldrbd:promote mystore:start
mkdir /mydata/data
chown -R mysql.mysql /mydata/data
scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
vim /etc/my.cnf
datadir=/mydata/data
crm(live)configure# primitive mysqld lsb:mysqld
crm(live)configure# verify
crm(live)configure# colocation mysqld_with_mystore inf:mysqld mystore
crm(live)configure# order mysqld_after_mystore mandatory:mystore mysqld
crm(live)configure# verify
crm(live)configure# show xml
crm(live)configure# commit
crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip=172.16.100.1 nic=eth0 cidr_netmask=255.255.0.0
crm(live)configure# colocation myip_with_ms_mysqldrbd inf:ms_mysqldrbd:Master myip
crm(live)configure#commit
node2:
drbd-overview
umount /mydata
drbdadm secondary mydrbd
service drbd stop
yum install corosync corosynclib cluster-glue heartbeat pacemaker resource-agents libesmtp
mkdir /var/log/cluster
DLM:Distributed lock manager(分佈式鎖管理器)