Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
主机
双机热备.先看看/etc/hosts。 master 和slave是两个节点。172.25.7.7是对外的IP。mine是我的真机。(当作网关了)
配置yum源
[Server]
name=Red Hat Enterprise Linux Server
baseurl=http://172.25.7.250/rhel6.5/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=Red Hat Enterprise Linux HighAvailability
baseurl=http://172.25.7.250/rhel6.5/HighAvailability
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ResilientStorage]
name=Red Hat Enterprise Linux ResilientStorage
baseurl=http://172.25.7.250/rhel6.5/ResilientStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ScalableFileSystem]
name=Red Hat Enterprise Linux ScalableFileSystem
baseurl=http://172.25.7.250/rhel6.5/ScalableFileSystem
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[LoadBalancer]
name=Red Hat Enterprise Linux LoadBalancer
baseurl=http://172.25.7.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
以下只演示master的配置。slave执行相同的动作。
在拥有rpm包的目录执行安装命令(yum -y install * ,注意yum源必须配置成我上面所示例的)
hearbeat的文件主目录在/etc/ha.d下。默认是没有配置文件的,需要从帮助文档复制一份过来
看看配置文件,heartbeat的配置文件有3个。
ha.cf : 主配置文件
authkeys : 认证文件。里面有加密方式 。文件权限需要改成600
haresources :资源文件
这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者
/etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个
脚本;ldirectord 的作用是启动 ldirectord 监控程序,它会使 ldirectord.cf 中定义的 lvs 生效,
并监听其健康状;httpd 是 apache 服务的启动脚本。
复制过来,并且修改authkeys的权限
配置ha.cf
keepalive 2 : 每2s发一次心跳包
deadtime 30: 节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡
warntime 10: 发出警告时间
initdead 60: 守护进程首次启动后应该等待 60 秒后再启动主服务器上的资源
udpport 12307 : 心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信(注意,该端口必须没有被其他进程占用,并且局域网内只有两个节点主机使用这个端口)
bcast eth0: 选择网卡eth0 并且以UDP广播形式工作
node master.wjx.cn: 双机热备中的一个节点,写在第一行的默认就是主节点
ping 172.25.7.250 :ping一个局域网内的其他主机,用来确定网络通畅。一般来说最好写成网关
respawn :默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。
所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。
可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为
ping 的节点。(注意:应该是lib64.默认是lib)
配置authkeys
只是配置一下加密方式
配置 haresources
这里先以web集群为例子,其中ip地址必须填成一个局域网内没有任何人使用的一个IP
配置OK
将3个配置文件给slave复制一份。
给master和slave都下载安装httpd(yum -y install httpd)
启动heartbeat(两边都启动)
开启后观察日志文进(/var/log/messages)
观察master的ip地址(多了一个刚才写的那个172.25.7.7的IP)
测试一下,将master.wjx.cn这台主机关机
master关机前。
master关机后。
web的heartbeat的配置就到此结束了。接下来演示一下mysqld的双机热备heartbeat。
首先数据库最重要的是存储。drbd就是一个同步数据的一个工具。首先要的是安装drbd。其次就是物理设备。两台主机都应该拥有大小一样的一块硬盘设备。
MySQL的双机热备
安装drbd,准备相关的rpms。
安装(使用网上下载tar包制作drbd的源码包的方法---> 点击打开链接)
drbd的配置文件位置
随便起个名字,编辑,但必须以res结尾
vim /etc/drbd.d/example.res
内容如下
文件编辑完成后给slave也复制一份。
master和slave有配置文件example.res后执行
启动drbd服务(两边都开启,一个开启后,另一个会等待)
将master设为主,而slave设为从,开始同步数据.查看
同步很缓慢阿。。。我的是4G的硬盘
以上效果看到后就可以格式化磁盘了
mkfs.ext4 /dev/drbd1 就可以
格式化后,将/dev/drbd1挂载到/var/lib/mysql
启动mysqld。等待初始化后(会给/var/lib/mysql中写数据),再将mysqld关掉
再关掉 。 。 。
开始配置集群
卸载/dev/drbd1
umount /dev/drbd1
先将master和slave都设置成secondary。
修改heartbeat的资源配置文件haresources
给slave也复制一份
OK,完成了。重新启动heartbeat .