基于heartbeat v1、V2实现mysql的高可用

一、heartbeat v1简介heartbeatv1的架构是:heartbeat+haresource来实现高可用的。heartbeat作为messagelayer层,haresource作为CRM管理资源,RA可以有LSB,OSF,heartbeatlegacy提供。######################################1、Heartbeat的控制信息:“心跳”信息:(也称为状态信息)仅150bytes大小的广播、组播或多播数据包。可为以每个节点配置其向其它节点通报“心跳”信息的频率,以及其它节点上的heartbeat进程为了确认主节点出节点出现了运行等错误之前的等待时间。集群变动事务(transition)信息:ip-request和ip-request-rest是相对较常见的两种集群变动信息,它们在节点间需要进行资源迁移时为不同节点上heartbeat进程间会话传递信息。比如,当修复了主节点并且使其重新“上线”后,主节点会使用ip-request要求备用节点释放其此前从因主节点故障而从主节点那里接管的资源。此时,备用节点则关闭服务并使用ip-request-resp通知主节点其已经不再占用此前接管的资源。主接点收到ip-request-resp后就会重新启动服务。重传请求:在某集群节点发现其从其它节点接收到的heartbeat控制信息“失序”(heartbeat进程使用序列号来确保数据包在传输过程中没有被丢弃或出现错误)时,会要求对方重新传送此控制信息。Heartbeat一般每一秒发送一次重传请求,以避免洪泛。上面三种控制信息均基于UDP协议进行传送,可以在/etc/ha.d/ha.cf中指定其使用的UDP端口或者多播地址(使用以太网连接的情况下)。此外,除了使用“序列号/确认”机制来确保控制信息的可靠传输外,Heartbeat还会使用MD5或SHA1为每个数据包进行签名以确保传输中的控制信息的安全性。######################################2、Heartbeat的配置文件:/etc/ha.d/ha.cf定义位于不同节点上的heartbeat进程间如何进行通信;/etc/ha.d/haresources定义对某个资源来说哪个服务器是主节点,以及哪个节点应该拥有客户端访问资源时的目标IP地址。/etc/ha.d/authkeys定义Heartbeat包在通信过程中如何进行加密。当ha.cf或authkeys文件发生改变时,需要重新加载它们就可以使用之生效;而如果haresource文件发生了改变,则只能重启heartbeat服务方可使之生效。尽管Heartbeat并不要求主从节点间进行时钟同步,但它们彼此间的时间差距不能超过1分钟,否则一些配置为高可用的服务可能会出异常。Heartbeat当前也不监控其所控制的资源的状态,比如它们是否正在运行,是否运行良好以及是否可供客户端访问等。要想监控这些资源,要使用额外的Mon软件包来实现。######################################3、ha.cf配置文件部分参数详解:autojoinnone#集群中的节点不会自动加入logfile/var/log/ha-log#指名heartbaet的日志存放位置keepalive2#指定心跳使用间隔时间为2秒(即每两秒钟在eth1上发送一次广播)deadtime30#指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源warntime10#指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务initdead120#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。udpport694#设置广播通信使用的端口,694为默认使用的端口号。baud19200#设置串行通信的波特率#bcasteth0#Linux指明心跳使用以太网广播方式,并且是在eth0接口上进行广播。#mcasteth0225.0.0.169410#采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。#ucasteth0192.168.1.2#采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址auto_failbackon#用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点#stonithbaytech/etc/ha.d/conf/stonith.baytech#stonith的主要作用是使出现问题的节点从集环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性。#watchdog/dev/watchdog#该选项是可选配置,是通过Heartbeat来监控系统的运行状态。使用该特性,需要在内核中载入”softdog”内核模块,用来生成实际的设备文件,如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入”insmodsoftdog”加载该模块。然后输入”grepmisc/proc/devices”(应为10),输入”cat/proc/misc|grepwatchdog”(应为130)。最后,生成设备文件:”mknod/dev/watchdogc10130″。即可使用此功能nodenode2.example.com#主节点主机名,可以通过命令“uname–n”查看。nodenode3.example.com#备用节点主机名ping172.16.0.1#选择ping的节点,ping节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接#ping_groupgroup1192.168.12.120192.168.12.23#类似于pingping一组ip地址apiauthpingdgid=haclientuid=haclusterrespawnhacluster/usr/local/ha/lib/heartbeat/pingd-m100-d5s#该选项是可选配置,列出与heartbeat一起启动和关闭的进程,该进程一般是和heartbeat集成的插件,这些进程遇到故障可以自动重新启动。最常用的进程是pingd,此进程用于检测和监控网卡状态,需要配合ping语句指定的pingnode来检测网络的连通性。其中hacluster表示启动pingd进程的身份。#下面的配置是关键,也就是激活crm管理,开始使用v2style格式#crmrespawn#注意,还可以使用crmyes的写法,但这样写的话,,如果后面的cib.xml配置有问题#会导致heartbeat直接重启该服务器,所以,测试时建议使用respawn的写法#下面是对传输的数据进行压缩,是可选项compressionbz2compression_threshold2####################################4、haresources配置文件介绍主从节点上的/etc/ra.d/raresource文件必须完全相同。文件每行通常包含以下组成部分:1、服务器名字:指正常情况下资源运行的那个节点(即主节点),后跟一个空格或tab;这里指定的名字必须跟某个节点上的命令”uname-n”的返回值相同;2、IP别名(即额外的IP地址,可选):在启动资源之前添加至系统的附加IP地址,后跟空格或tab;IP地址后面通常会跟一个子网掩码和广播地址,彼此间用“/”隔开;3、资源脚本:即用来启动或停止资源的脚本,位于/etc/init.d/或/etc/ha.d/resourcd.d目录中;如果需要传递参数给资源脚本,脚本和参数之间需要用两个冒号分隔,多个参数时彼此间也需要用两个冒号分隔;如果有多个资源脚本,彼此间也需要使用空格隔开;格式如下:primary-server[IPaddress[/mask/interface/broadcast]]resource1[::arg1::arg2]\resource2[::arg1::arg2]例如:node2.example.com172.16.10.20/16/eth0/172.16.255.255\Filesystem::172.16.10.9:/mysqldata::/var/lib/mysql::nfsmysqld######################################5、authkeys配置文件介绍auth1#指明认证类型1md56c781b5034b1f6b9379b#指明对应的认证类型和随机字符串######################################6、补充资料:组播IP地址组播IP地址用于标识一个IP组播组。IANA(internetassignednumberauthority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。如下图所示(二进制表示),IP组播地址前四位均为1110八位组⑴八位组⑵八位组⑶八位组⑷1110XXXXXXXXXXXXXXXXXXXXXXXXXXXX组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用。224.0.1.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。常用的预留组播地址列表如下:224.0.0.0基准地址(保留)224.0.0.1所有主机的地址224.0.0.2所有组播路由器的地址224.0.0.3不分配224.0.0.4dvmrp(DistanceVectorMulticastRoutingProtocol,距离矢量组播路由协议)路由器224.0.0.5ospf(OpenShortestPathFirst,开放最短路径优先)路由器224.0.0.6ospfdr(DesignatedRouter,指定路由器)224.0.0.7st(SharedTree,共享树)路由器224.0.0.8st主机224.0.0.9rip-2路由器224.0.0.10Eigrp(EnhancedInteriorGatewayRoutingProtocol,增强网关内部路由线路协议)路由器 224.0.0.11活动代理224.0.0.12dhcp服务器/中继代理224.0.0.13所有pim(ProtocolIndependentMulticast,协议无关组播)路由器224.0.0.14rsvp(ResourceReservationProtocol,资源预留协议)封装224.0.0.15所有cbt路由器224.0.0.16指定sbm(SubnetworkBandwidthManagement,子网带宽管理)224.0.0.17所有sbms224.0.0.18vrrp(VirtualRouterRedundancyProtocol,虚拟路由器冗余协议)239.255.255.255SSDP协议使用二、heartbeat v1 + nfs 实现对mysql的高可用人生没有停靠站,自我本身永远是一个出发点。

基于heartbeat v1、V2实现mysql的高可用

相关文章:

你感兴趣的文章:

标签云: