9、heartbeat+DRBD+mysql实现高可用
http://wangjun51.blog.51cto.com/6124567/1315456
DRBD作用:1、 远程数据备份
2、 远程数据镜像
DRBD官网:drbd.linbit.com
server1、2都要添加一块硬盘 且容量大小相等
真实服务器server1: eth0 --- 10.0.5.100(老师做实验的IP) 10.0.199.4(我自己的IP)
eth0:0 -- 10.0.5.200 10.0.199.200
eth1 --- 192.168.10.1 192.168.100.1
真实服务器 Server2: eth0 --- 10.0.5.1 10.0.199.3
eth1 --- 192.168.100.2 192.168.100.2
两台真实服务器上都要进行以下操作:(以下是在10.0.199.4上的操作)
(1)安装DRBD
# yum install kernel kernel-devel flex
# tar -xvf drbd-8.4.4-tar.gz
# cd drbd-8.4.4
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with -utils --with-km --with-udev --with-xen --with-pacemaker --with-heartbeat --with-bashcompletion --with-distro=redhat --with-initdir=/etc/init.d
# make && make install
# modprobe drbd
# lsmod|grep drbd
(2)配置DRBD
# vim /etc/drbd.conf
# vim /etc/drbd.d/global_common.conf
global {
usage-count yes;
}
common {
handlers {
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh;
/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh;
/usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drb
d/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
}
startup {
}
options {
}
disk {
on-io-error detach;
}
net {
protocol C;
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
cram-hmac-alg sha1;
shared-secret "aixocm";
}
syncer {
rate 50M;
}
}
创建r0资源
# vim r0.res
resource r0{ \\r0 资源名字
on server1 \\第一台设备的主机名
{ device /dev/drbd0; \\ 自定义的物理设备的逻辑路径
disk /dev/sdb1; \\实际的物理磁盘设备或 逻辑分区
address 10.0.199.4:7788 ; \\本机通信地址 或 机器监听地址和端口
meta-disk internal; \\源数据的存放方式 internal表示数据和源数据放在同一块磁盘
}
on server2
{ device /dev/drbd0; \\虚拟设备
disk /dev/sdb1; \\ 实际的磁盘
address 10.0.199.3:7788; \\ 本机通信地址
meta-disk internal; \\源数据的存放方式 internal表示数据和源数据放在同一块磁盘
}
}
# fdisk /dev/sdb n p 1 w \\分区
# fdisk -l
(3)创建DRBD资源
# drbdadm create-md r0 \\ create-md创建源数据 r0 资源的名字 主从同时启动
# service drbd start \\主从服务器要同时启动
# cat /proc/drbd \\查看DRBD状态
ro:Secondary/Secondary \\ 表示本机角色\另一台服务器角色
(4 )将其中一台服务器提升为主服务器
# drbdsetup /dev/drbd0(设备名) primary --o \\ 在主服务器上操作
# cat /proc/drbd \\查看DRBD状态
(5 )格式化drbd设备
# mkfs.ext4 /dev/drbd0 \\不是格式化实际的物理分区 只需要主服务器进行此步
#ls /database/mydata
# lsof -i:3306 \\ 两边都没有开启
# mount /dev/drbd0 /database/mydata \\只需主服务器进行此步
# df -h
# df -h 在从服务器上 发现木有挂载
(6)挂载设备到需要的特定目录 \\只需主服务器进行此步
# cd /database/mydata
# cd /usr/local/mysql
# ./scripts/mysql_install_db --user=mysql --datadir=/database/mydata \\数据库初始化
# ls
# cd /database/mydata
(7)配置heartbeat的haresource文件 \\主从服务器都要进行此步
此步骤的配置和 上面的 “heartbeat+ldirector+lvs实现高可用集群”中的对heartbeat的设置完全一样
除了资源配置文件 下面配置资源配置文件:
# vim /etc/ha.d/haresources
server1 IPaddr::10.0.199.200/32/eth0:0 drbddisk::r0 Filesystem::/dev/drbd0::/ database/mydata::ext4 mysqld # 10.0.199.200是虚拟IP server1 是主服务器的主机名
(8 )# df -h
# lsof -i:3306
# umount /database/mydata \\主服务器进行此步骤
# service heartbeat start \\两边都要启动
# df -h \\检查是否已挂载
# lsof -i:3306 \\检查是否启动
# mysql -u root
# 授权 mysql> grant all on *.* to 'root '@'% ' identified by 'aixocm ';
# 客户端: mysql -u root -h 10.0.199.200 -p # 10.0.199.200是虚拟IP
# service heartbeat stop
从服务器:# df -h
DRBD 只能是主服务器才能挂载,从服务器是不能挂载设备 的。
客户端登录数据库 也是可以的。
(9 )手动进行 drbd的升级和降级处理
# umount /dev/drbd0
# drbdadm secondary r0 \\降级
# drbdadm primary r0 \\升级
# mount /dev/drbd0 /database/mydata
===================== 拓展 ==========================
服务器群集技术主要使用是实现网络的负载均衡,通俗地讲就是把多台服务器通过快速通信链路连接起来,从外部看来,这些服务器就像一台服务器在工作,而对内来说,外面来的负载通过一定的机制动态地分配到这些节点机中去,从而达到超级服务器才有的高性能、高可用。
集群的优点:
高可伸缩性:群集可以随着负荷的增长,群集系统中添加更多的服务器,来分担网络流量
高可用性:是指群集可以在一台服务器不工作的时候,另一台服务器接管这台服务器的工作,防止其服务器完全瘫痪 高可管理性:系统管理员可以从远程管理一个、甚至一组集群。
LVS(Linux Virtual Server),虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。
LVS包括IPVS与ipvsadm, IPVS称为IP虚拟服务器是运行在LVS下的提供负载平衡功能的一种技术,在linux2.6的内核中已经默认嵌入。它基本上就是一种4层的交换机
集群计算机按功能和结构可以分成以下几类:
高可用性集群 High-availability (HA) clusters
负载均衡集群 Load balancing clusters
高性能计算集群 High-performance (HPC) clusters
网格计算 Grid computing
LVS集群通常是由LVS Director用于中继入站请求到集群内部节点的转发方法类型描述的。
目前可用的三种方法是:
网络地址转换(LVS-NAT)
直接路由(LVS-DR)
IP隧道(LVS-TUN