linux下的 heartbeat
- 格式:doc
- 大小:39.50 KB
- 文档页数:6
Heartbeat原理及部署 ⼀,Heartbeat简介 ⼆,安装Heartbeat 环境查看 服务器规划IP⽤途主机名192.168.1.101主服务器hdp3192.168.1.102备服务器hdp4 初始配置 禁⽤防⽕墙systemctl disable firewalld 关闭senlinux 设置主机名并设置hosts⽂件 两台主机名不⼀样,hosts⽂件⼀样 # cat /etc/hosts192.168.1.101 hdp3192.168.1.102 hdp4 安装依赖包yum -y install glib2-devel libtool-ltdl-devl net-snmp-devel bzip2-devel ncurses-devel openssl-devel libtool libxml2 libxml2-devel gettext bison flex zlib-devel mailx which libxslt docbook-dtds docbook-style-xsl PyXML shadow-utils opensp autoconf 下载安装包Heartbeat 3.0.6:/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2Cluster Glue 1.0.12:/glue/archive/0a7add1d9996.tar.bz2Resource Agents 3.9.6:https:///ClusterLabs/resource-agents/archive/v3.9.6.tar.gz 添加 haclient 组和 hacluster 账户,这个⽤户主要⽤来配置respawn的。
groupadd haclientuseradd -g haclient -M -s /sbin/nologin hacluster 安装Cluster Glue 1.0.12tar -xf 0a7add1d9996.tar.bz2cd Reusable-Cluster-Components-glue--0a7add1d9996/./autogen.sh./configure --prefix=/usr/local/heartbeat LIBS='/lib64/libuuid.so.1'make && make install 安装Resource Agentstar -xf v3.9.6.tar.gzcd resource-agents-3.9.6/./autogen.sh./configure --prefix=/usr/local/heartbeatmake && make install 安装heartbeat-3-0-6tar -xf 958e11be8686.tar.bz2cd Heartbeat-3-0-958e11be8686/#设置,否则安装会报错export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"#删除配置⽂件的最后⼀⾏sed -i '/^#define HA_HBCONF_DIR /d' /usr/local/heartbeat/include/heartbeat/glue_config.h./bootstrap./configure --prefix=/usr/local/heartbeat LIBS='/lib64/libuuid.so.1'make && make install 拷贝配置⽂件cd /usr/local/heartbeat/share/doc/heartbeatcp authkeys ha.cf haresources /usr/local/ heartbeat/etc/ha.d/ 设置配置⽂件权限及软连接cd /usr/local/heartbeat/etc/ha.dchmod 600 authkeysln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/ 编辑配置⽂件 192.168.1.101上的ha.cf⽂件内容如下# cat /usr/local/heartbeat/etc/ha.d/ha.cf# 保存调试信息⽂件debugfile /var/log/ha-debug# ⽇志⽂件logfile /var/log/ha-log# 表⽰使⽤系统⽇志logfacility local0# ⼼跳的时间间隔,单位秒keepalive 1# 超出该时间间隔未收到对⽅节点的⼼跳,则判定对⽅死亡deadtime 30# 超出该时间间隔未收到对⽅节点的⼼跳,则发出警告记录到⽇志中warntime 10# 在某系统上,系统启动或重启之后需要经过⼀段时间⽹络才能正常⼯作,该选项⽤于解决这种情况产⽣的时间间隔,取值⾄少为deadtime的2倍initdead 120# 设置⼴播通信使⽤的端⼝,694为默认使⽤的端⼝号udpport 694# 传播⼼跳的⼴播播⽹卡信息bcast eth0# 设置对⽅机器⼼跳检测的IP# 第⼆列为⽹卡名第三列为⼼跳IP,⽣产中⼼跳需要与数据⽹络分开ucast eth0 192.168.1.102# 在该选项设为on的情况下,⼀旦主节点恢复运⾏,则⾃动获取资源并取代从节点auto_failback off# 配置主从的节点信息node hdp3node hdp4# 如果ping不通该地址,就认为当前断⽹,需要转移vipping 192.168.1.9# 指定与heartbeat⼀同启动和关闭的进程,该进程被⾃动监视,遇到故障则重新启动。
Heartbeat安装与配置分类:Linux之Ubuntu2014-05-08 17:18 1060人阅读评论(0) 收藏举报Heartbeat主备MYSQL1、环境描述服务器A(主) 192.85.1.175服务器B(从) 192.85.1.176Mysql版本:5.1.61系统版本:System OS:centos 5.82.安装heartbeat1)安装heartbeat1.yum -y install heartbeat2)配置说明heartbeat的安装目录为/etc/ha.d目录下,安装完成后,需要三个配置文件,为ha.cf,haresources,authkeys。
此时目录下没有这三个文件,需要创建,我们可以在/usr/share/doc/heartbeat目录里找到ha.cf、haresources、authkeys三个文件,只需将其拷贝到/etc/ha.d目录下,即可*.gz文件,使用gunzip 命令解压3.175服务器配置信息:(1)etc/hosts 文件内容:[html]view plaincopy1.192.85.1.175 primary # Added by NetworkManager(2)ha.cf 文件内容:(主配置文件)[html]view plaincopy1.#2.# There are lots of options in this file. All you have to have is a set3.# of nodes listed {"node ...} one of {serial, bcast, mcast, or ucast},4.# and a value for "auto_failback".5.#6.# ATTENTION: As the configuration file is read line by line,7.# THE ORDER OF DIRECTIVE MATTERS!8.#9.# In particular, make sure that the udpport, serial baud rate10.# etc. are set before the heartbeat media are defined!11.# debug and log file directives go into effect when they12.# are encountered.13.#14.# All will be fine if you keep them ordered as in this example.15.#16.#17.# Note on logging:18.# If all of debugfile, logfile and logfacility are not defined,19.# logging is the same as use_logd yes. In other case, they are20.# respectively effective. if detering the logging to syslog,21.# logfacility must be "none".22.#23.# File to write debug messages to24.debugfile /var/log/ha-debug #调试日志文件25.#26.#27.# File to write other messages to28.#29.logfile /var/log/ha-log #系统运行日志文件30.#31.#32.# Facility to use for syslog()/logger33.#34.logfacility local0 # 日志记录等级35.#36.#37.# A note on specifying "how long" times below...38.#39.# The default time unit is seconds40.# 10 means ten seconds41.#42.# You can also specify them in milliseconds43.# 1500ms means 1.5 seconds44.#45.#46.# keepalive: how long between heartbeats?47.#48.keepalive 2 #心跳频率,2表示2秒;200ms则表示200毫秒49.#50.# deadtime: how long-to-declare-host-dead?51.#52.# If you set this too low you will get the problematic53.# split-brain (or cluster partition) problem.54.# See the FAQ for how to use warntime to tune deadtime.55.#56.deadtime 30 #节点死亡时间,就是过了10秒后还没有收到心跳就认为主节点死亡57.#58.# warntime: how long before issuing "late heartbeat" warning?59.# See the FAQ for how to use warntime to tune deadtime.60.#61.warntime 10 #告警时间62.#63.#64.# Very first dead time (initdead)65.#66.# On some machines/OSes, etc. the network takes a while to come up67.# and start working right after you've been rebooted. As a result68.# we have a separate dead time for when things first come up.69.# It should be at least twice the normal dead time.70.#71.initdead 120 #初始化时间72.#73.#74.# What UDP port to use for bcast/ucast communication?75.#76.udpport 694 #心跳信息传递的udp端口77.78.#79.# What interfaces to broadcast heartbeats over?80.#81.bcast eth0 # Linux #采用udp广播播来通知心跳,建议在备用节点不只一台时使用82.#bcast eth1 eth2 # Linux83.#bcast le0 # Solaris84.#bcast le1 le2 # Solaris85.#86.# Set up a multicast heartbeat medium87.# mcast [dev] [mcast group] [port] [ttl] [loop]88.#89.# [dev] device to send/rcv heartbeats on90.# [mcast group] multicast group to join (class D multicast address91.# 224.0.0.0 - 239.255.255.255)92.# [port] udp port to sendto/rcvfrom (set this value to the93.# same value as "udpport" above)94.# [ttl] the ttl value for outbound heartbeats. this effects95.# how far the multicast packet will propagate. (0-255)96.# Must be greater than zero.97.# [loop] toggles loopback for outbound multicast heartbeats.98.# if enabled, an outbound packet will be looped back and99.# received by the interface it was sent on. (0 or 1)100.# Set this value to zero.101.#102.#103.#bcast eth0 225.0.0.1 694 1 0104.#105.# Set up a unicast / udp heartbeat medium106.# ucast [dev] [peer-ip-addr]107.#108.# [dev] device to send/rcv heartbeats on109.# [peer-ip-addr] IP address of peer to send packets to110.#111.ucast eth0 192.85.1.175112.113.auto_failback on #如果主节点重新恢复过来,主节点将主动将资源抢占过来,如果为off,则只当备用节点当掉后,主节点才取回资源114.115.watchdog /dev/watchdog #看门狗。
国内linux下ha高可用软件简单介绍gobeta发布于2008-3-24 | 次阅读字号: 大中小(网友评论0条) 我要评论1、vcs,感觉bz对vcs有居多误解,我知道从03年起,zte/hw在基本上大部分电信项目上使用了vcs,而且基本上都是核心应用,vcs的稳定性毋庸置疑,唯一的缺点在于贵。
另外vcs 需要suse非标准内核,这是让我非常郁闷的地方2、红旗的ha,这里有人题到了,我说一下,最早红旗oem的叫rsf-1的ha软件,这个很粗糙,而且相当不稳定(在某邮政项目被用户投诉致死),后来改oem nec的cluster pro(lite),这个功能上还可以,几年前用过,当时只有for windows的客户端,让我很郁闷,不过现在有基于web界面的客户端。
3、turboha,turbo ha在国内05年前还行,在zte的某些非关键项目上因为成本的考虑,使用了一些turbo ha6.0的产品,后来主要开发人员都离开了,6.5也是很久才推出,不算一个很成熟的产品。
4、rhcs/heartbeat,之所以把这两个ha并列出来,是他们具有相同的特点,功能花哨无比,但是真用起来却不是那么回事,hb的resource.d n年没有更新过,大部分时间你需要自己去改resource.d里面的脚本;rhcs现在底层cluster membership用了openais的东东,上层脚本也变得和heartbeat 一样,使用ocf标准,但是我不能忍的是,现在执行每个脚本的stop操作后,都要sleep 10s,这是一个非常sb的设计。
gfs在国内某些商用局开使用起来,ut在杭州网通iptv就在用,功能和性能都还可以,但是也是问题一大堆。
另外,novell据说会力捧heartbeat,以对抗rhcs,个人不看好。
5、fujitsu&simense,这个ha软件刚进中国,我做了一些测试和评估,毕竟是德国人做得,非常严谨和规范,只不过中规中矩,而且价格上没有太大的优势,这个软件包含这loading balance 的功能模块,是我见到的linux下为数不多的不是基于lvs的负载均衡解决方案(ibm was edge server好像也有负载均衡功能,但是这个是通用的)6、roseha,因为价格的关系,roseha在低端还是有很多人用,说是在之前的版本很糟糕,但是2.0之后,功能还可以,配置也还算方便。
linux双机热备方案在现代信息技术高速发展的背景下,高可用性和数据安全性成为企业日常运营中非常重要的课题。
特别是对于采用Linux操作系统的企业来说,实施一个可靠的双机热备方案是至关重要的。
本文将介绍一种基于Linux操作系统的双机热备方案,以帮助企业实现高可用性和数据容灾。
一、方案概述双机热备方案是通过利用两台运行相同应用和环境的服务器,以实现故障转移和数据灾备的目的。
在该方案中,主服务器负责处理正常的业务请求,而备用服务器则实时复制主服务器上的数据和配置信息,并保持与主服务器的高度同步。
一旦主服务器发生故障,备用服务器将自动接管业务,并在最短的时间内实现故障恢复。
二、硬件要求在部署Linux双机热备方案之前,首先需要确保服务器硬件满足要求。
这包括两个方面:1. 服务器性能要求:主服务器和备用服务器的硬件性能应该相当,以确保业务在两台服务器之间的切换时不会出现性能瓶颈。
服务器应具备足够的处理能力和内存容量,以支持所运行的应用和服务。
2. 存储设备要求:为了实现数据的高可用性和容灾备份,主服务器和备用服务器应采用相同的存储设备。
这可以保证数据在主备服务器之间的实时同步和复制。
三、软件配置在Linux双机热备方案中,需要配置一系列软件来实现主备服务器之间的数据同步和故障转移。
以下是必要的软件配置内容:1. Heartbeat软件:Heartbeat是一种开源软件工具,用于检测主服务器的可用性。
它会定期发送心跳信号给备用服务器,以确认主服务器的正常运行。
一旦主服务器发生故障,备用服务器将接收到心跳信号的中断,并立即启动故障切换操作。
2. DRBD软件:DRBD是一种分布式块设备复制工具,在主备服务器之间实现数据的实时同步。
通过配置DRBD,主服务器上的数据将实时复制到备用服务器上,从而保持数据的高可用性和一致性。
3. Cluster软件:Cluster软件用于管理和控制主备服务器之间的故障转移。
它可以自动监测主服务器的状态,并在主服务器发生故障时触发备用服务器的接管操作,以实现业务的持续运行。
利用heartbeat实现三台主机自动切换网络参数(IP、MAC、Hostname)一、环境node0 eth0:192.168.32.30 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5Eeth1:10.160.100.30 heart RMAC:00:18:8B:8E:04:E2node1 eth0:192.168.32.31 service vip1:192.168.32.21 VMAC1:00:1E:68:1E:99:5Eeth1:10.160.100.31 heart vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5ERMAC:00:1E:68:1E:19:5Enode2 eth0:192.168.32.32 service vip2:192.168.32.22 VMAC2:00:1E:68:1E:88:5Eeth1:10.160.100.32 heart RMAC:00:1E:68:1E:16:7E实验要求:1、当node0的网络出现故障时,node1自动切换将自己的ip、hostname、mac 地址改成vip1、vman1、 nodevir1;故障恢复后node0自动切换回来,将自己的ip、hostname、mac改成vip1、vman1、nodevir,node1恢复自身的网络参数2、当node2的网络出现故障时,node1自动切换将自己的ip、hostname、mac 地址改成vip2、vman2、 nodevir2;故障恢复后node0自动切换回来,将自己的ip、hostname、mac改成vip2、vman2、nodevir2,node1 恢复自身的网络参数二、heartbeat安装(三台node操作一样)1、安装libnet[root@node1 ~]# tar -zxvf libnet-1.1.4.tar.gz[root@node1 ~]# cd libnet-1.1.4[root@node1 libnet-1.1.4]# ./configure[root@node1 libnet-1.1.4]# make;make install#libnet是一个高层次API工具,使用heartbeat需要用到他2、安装heartbeat[root@node1 ~]# tar -zxvf heartbeat-2.1.3.tar.gz[root@node1 ~]# cd heartbeat-2.1.3[root@node1 heartbeat-2.1.3]# ./ConfigureMe configure --disable-swig --disable-snmp-subagent[root@node1 heartbeat-2.1.3]# make ; make install[root@node1 heartbeat-2.1.3]# cp doc/ha.cf doc/haresource doc/anthkeys /etc/ha.d/[root@node1 heartbeat-2.1.3]# cp ldirectord/ldiretord.cf /etc/ha.d/ [root@node1 heartbeat-2.1.3]# grouadd -g 694 haclient[root@node1 heartbeat-2.1.3]# useradd -u 694 -g 694 hacluster#heartbeat的安装包中默认包含ldirectord插件,该插件主要用于管理负载均衡,为保证ldirectord可用还行安装perl-Mailtools三、配置1 node0配置1.1 创建网络参数修改脚本(/etc/ha.d/resource.d/Remac1)[root@node0 resource.d]# vim /etc/ha.d/resource.d/Remac1 #Remac1也可存放在/etc/rc.d/init.d目录#!/bin/bash#discription : Start Real ServerVMAC=00:1E:68:1E:99:5ERMAC=00:1E:68:1E:19:5EGATEWAY=192.168.32.254. /etc/rc.d/init.d/functionscase "$1" instart)echo "Replace eth0's Real Mac addr to Virtual Mac addr"/sbin/ifconfig eth0 down/sbin/ifconfig eth0 hw ether $VMAC/sbin/ifconfig eth0 up/sbin/ifconfig eth0 192.168.32.21 broadcast 192.168.32.255 netmask 255.255.255.0/bin/hostname nodevir/sbin/route add default gw $GATEWAY;;stop)echo "Restore eth0's Real Mac addr"/sbin/ifconfig eth0 down/sbin/ifconfig eth0 hw ether $RMAC/sbin/ifconfig eth0 up/sbin/ifconfig eth0 192.168.32.31 broadcast 192.168.32.255 netmask 255.255.255.0/bin/hostname node1/sbin/route add default gw $GATEWAY;;*)echo "Usage : $0 {start|stop}"exit 1esac1.2 heartbeat主配置文件(/etc/ha.d/ha.cf)[root@node1 ha.d]# vim /etc/ha.d/ha.cf#debugfile /var/log/ha-debuglogfile /var/log/ha-log#指名heartbeat的日志存放位置。
heartbeat使用手册heartbeat使用手册1. 简介Heartbeat是一种开源工具,用来监控和管理分布式系统中的服务可用性和故障恢复。
本文档将详细介绍heartbeat的安装、配置和使用方法。
2. 安装2.1 系统要求- 操作系统:支持Linux、Unix和Windows等常见操作系统。
- 硬件要求:具备足够的计算资源和存储空间。
2.2 和安装- 访问Heartbeat的官方网站,最新版本的安装包。
- 解压安装包并执行安装脚本,按照提示完成安装过程。
3. 配置3.1 配置文件- 在Heartbeat安装目录下找到配置文件heartbeat.cfg。
- 使用编辑器打开文件,根据需求进行配置,包括节点信息、监控项等。
3.2 节点配置- 在配置文件中添加监控节点信息,包括节点名称、IP地址、端口号等。
- 根据需求,可以配置多个节点,以实现高可用和负载均衡。
3.3 监控项配置- 在配置文件中定义要监控的服务和资源,包括各个节点上的服务类型、端口号等。
- 根据需求,可以添加、修改或删除监控项。
4. 使用4.1 启动Heartbeat服务- 执行启动命令,启动Heartbeat服务。
- 根据需要,可以指定配置文件路径和日志文件路径等参数。
4.2 监控和管理服务- 在Web界面或命令行界面上查看和管理节点状态和服务健康状况。
- 根据警报信息,可以及时采取措施进行故障恢复或调整配置。
5. 附件本文档附带以下附件,供参考和进一步了解:- heartbeat.cfg 示例配置文件- 快速入门指南- 故障恢复示例6. 法律名词及注释- Heartbeat: Heartbeat是一个开源的工具,用来监控和管理分布式系统中的服务可用性和故障恢复。
- 节点: 在heartbeat中,节点代表参与集群的机器或实例。
- 监控项: 监控项是需要被Heartbeat监控的服务或资源。
- 高可用: 高可用是指在系统发生故障时,仍能保持服务可用性的能力。
Heartbeat的组成与原理1.Heartbeat的组成Heartbeat提供了高可用集群最基本的功能,例如,节点间的内部通信方式、集群合作管理机制、监控工具和失效切换功能等。
目前的最新版本是Heartbeat2.x,这里的讲述也是以Heartbeat2.x为主。
下面介绍Heartbeat2.0的内部组成,主要分为以下几大部分。
heartbeat:节点间通信检测模块。
ha-logd:集群事件日志服务。
CCM(Consensus Cluster Membership):集群成员一致性管理模块。
LRM(Local Resource Manager):本地资源管理模块。
Stonith Daemon:使出现问题的节点从集群环境中脱离。
CRM(Cluster Resource Management):集群资源管理模块。
Cluster policy engine:集群策略引擎。
Cluster transition engine:集群转移引擎。
图18.1显示了Heartbeat2.0内部结构组成。
Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序。
要监控资源和应用程序是否运行正常,必须使用第三方的插件,例如ipfail、Mon和Ldirector等。
Heartbeat自身包含了几个插件,分别是ipfail、Stonith和Ldirectord,介绍如下。
ipfail的功能直接包含在Heartbeat里面,主要用于检测网络故障,并做出合理的反应。
为了实现这个功能,ipfail使用ping节点或者ping节点组来检测网络连接是否出现故障,从而及时做出转移措施。
Stonith插件可以在一个没有响应的节点恢复后,合理接管集群服务资源,防止数据冲突。
当一个节点失效后,会从集群中删除。
如果不使用Stonith插件,那么失效的节点可能会导致集群服务在多于一个节点运行,从而造成数据冲突甚至是系统崩溃。
Nginx+keepalived+heartbeat双机热备份配置手册正文目录1 双机热备简介 (3)2 双机热备安装与配置 (4)2.1 安装环境和软件版本说明 (4)2.2 系统安装 (4)2.3 JDK环境安装配置 (4)2.4 MYSQL安装配置 (6)2.4.1 基本安装配置 (6)2.4.2 数据库双机互备 (7)2.5 反向代理服务器NGINX的安装配置 (9)2.6 KEEPALIVED安装配置 (13)2.7 HEARTBEAT的安装配置 (15)2.8 APACHE-TOMCAT安装配置 (18)3 CENTOS下安装配置的改动 (20)3.1 NGINX (20)3.2 KEEPALIVED (23)3.3 HEARTBEAT (26)3.4 添加SHELL脚本 (29)1 双机热备简介双机热备及负载均衡配置图如下所示2 双机热备安装与配置2.1 安装环境和软件版本说明系统:Linux Ubuntu 10.10JDK环境:jdk-6u31-linux-i586方向代理服务器Nginx:nginx-0.7.67探测服务器状态软件Keepalived:keepalived-1.1.17Web服务器:Apache-tomcat:apache-tomcat-6.0.35数据库MySQL:mysql-5.1.612.2 系统安装2.3 JDK环境安装配置1 、安装jdk 程序最新版本jdk: jdk-6u31-linux-i586.bin进入usr 目录: cd /usr在当前目录创建目录java : mkdir java将jdk 安装文件复制到java 目录下:cp /usr/software/ jdk-6u31-linux-i586.bin /usr/java给安装程序赋予权限:chmod +x jdk-6u31-linux-i586.bin 执行安装命令:./ jdk-6u31-linux-i586.bin安装成功后,在java 目录下会出现jdk1.6.0_31 的目录。
1 介绍高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。
从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。
这个任务通常由一组被称为“心跳”的代码完成。
在Linux-HA里这个功能由一个叫做heartbeat的程序完成。
他是为Linux提供的一种高可用性的解决方案high availability (clustering)。
目的:提高服务的可靠性、可用性和可维护性2 原理下图为HA的网络结构图。
注释:公网接入:主从服务器通过公网通信心跳连线:主从服务器通过专用网络通信,专用网络可用以太网的交叉线连接,也可用串口连接监测。
VIP:集群通过VIP与公网通信,主从通过公网网卡上邦定虚拟地址(VIP)实现。
Heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务。
(一)用户与主服务器正常通信(二)主从服务器通过心跳专线监测彼此是否正常(三)如果主服务器的公网失效或服务器DOWN机,从服务器通过心跳监测后,启动设定服务并接管主服务器对外的网络资源(VIP)(四)用户与从服务器通信(从机在几秒或几十秒内接管主服务器)(五)主服务器恢复后(重起或修复等)可以重新接管网络资源。
主要模块介绍节点(node)运行Heartbeat进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和Heartbeat软件服务。
在Heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有惟一的主机名,并且拥有属于自己的一组资源,例如磁盘、文件系统、网络地址和应用服务等。
运维⾯试题总结:Etcd、Kubernetes、Lvs、HAProxy等集群相关简述 ETCD 及其特点?etcd 是 CoreOS 团队发起的开源项⽬,是⼀个管理配置信息和服务发现(service discovery)的项⽬,它的⽬标是构建⼀个⾼可⽤的分布式键值(key-value)数据库,基于 Go 语⾔实现。
特点:简单:⽀持 REST 风格的 HTTP+JSON API安全:⽀持 HTTPS ⽅式的访问快速:⽀持并发 1k/s 的写操作可靠:⽀持分布式结构,基于 Raft 的⼀致性算法,Raft 是⼀套通过选举主节点来实现分布式系统⼀致性的算法。
简述 ETCD 适应的场景?etcd 基于其优秀的特点,可⼴泛的应⽤于以下场景:服务发现 (Service Discovery):服务发现主要解决在同⼀个分布式集群中的进程或服务,要如何才能找到对⽅并建⽴连接。
本质上来说,服务发现就是想要了解集群中是否有进程在监听 udp 或 tcp 端⼝,并且通过名字就可以查找和连接。
消息发布与订阅:在分布式系统中,最适⽤的⼀种组件间通信⽅式就是消息发布与订阅。
即构建⼀个配置共享中⼼,数据提供者在这个配置中⼼发布消息,⽽消息使⽤者则订阅他们关⼼的主题,⼀旦主题有消息发布,就会实时通知订阅者。
通过这种⽅式可以做到分布式系统配置的集中式管理与动态更新。
应⽤中⽤到的⼀些配置信息放到 etcd 上进⾏集中管理。
负载均衡:在分布式系统中,为了保证服务的⾼可⽤以及数据的⼀致性,通常都会把数据和服务部署多份,以此达到对等服务,即使其中的某⼀个服务失效了,也不影响使⽤。
etcd 本⾝分布式架构存储的信息访问⽀持负载均衡。
etcd 集群化以后,每个 etcd 的核⼼节点都可以处理⽤户的请求。
所以,把数据量⼩但是访问频繁的消息数据直接存储到 etcd 中也可以实现负载均衡的效果。
分布式通知与协调:与消息发布和订阅类似,都⽤到了 etcd 中的 Watcher 机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调,从⽽对数据变更做到实时处理。
Suse Linux 11 双机集群配置文档一安装前准备1.两台装有suse 11 sp1操作系统的服务器,每台服务器有两块网卡。
2.Suse 11 sp1系统安装碟或者ISO文件。
3.suse 11 sp1 HA 安装碟或者iso文件SLE-11-SP1-HA-x86_64-GM-Media1.iso二安装Heartbeat通过yast2工具添加heartbeat,选择软件—附加产品如图1:图1附加产品安装添加HA应用url勾选“高可用性”安装三Heartbeat配置下面以浙江移动流量服务器双机热备为例,讲述heartbeat的配置。
1. 网卡设置主服务器:bond0 10.70.238.157/26 bond0:0 10.7.8.1备服务器:bond0 10.70.238.158/26 bond0:0 10.7.8.2浮动IP:10.70.238.159/26(之后将对其进行配置)因浙江移动要求主机双线路,所以服务器上两网卡做了bond,两台服务器的bond0:0口用直通线连接作为心跳线2.主机系统配置(1) 在两台服务器上修改/etc/hosts文件,修改内容如下:10.70.238.157 pc-zjdamglk01.site pc-zjdamglk0110.70.238.158 pc-zjdamglk02.site pc-zjdamglk0210.7.8.1 pc-zjdamglk01.site pc-zjdamglk0110.7.8.2 pc-zjdamglk02.site pc-zjdamglk023. 开启同步服务在主服务器上开启同步服务,配置如下:1、启动YaST 并选择杂项> 群集或在命令行中运行yast2 cluster 启动初始群集配置对话框。
2、在通讯通道类别中,配置用于群集节点间通讯的通道。
此信息会写入/etc/ais/openais.conf 配置文件。
通信通道用10.7.8.0网段,组播地址,端口不变。
linux 主备机之间切换原理Linux主备机之间切换的原理在计算机网络中,主备机切换是指当主机出现故障或不可用时,备机能够自动接管主机的工作,以保证系统的连续性和可靠性。
Linux 系统中,实现主备机切换通常采用热备份(Hot Standby)或冷备份(Cold Standby)的方式。
1. 热备份(Hot Standby)热备份是指备机实时地与主机保持数据同步,一旦主机发生故障,备机立即接管主机的工作。
在Linux系统中,常用的热备份方案是通过Heartbeat软件实现。
Heartbeat是一个高可用性(HA)软件,它可以在多个服务器之间实现故障监测和自动主备机切换。
Heartbeat通过在主备机之间周期性地发送心跳包来检测主机的可用性,一旦主机无法响应,备机就会接管主机的IP地址,并启动相关服务,确保系统的连续性。
同时,Heartbeat还可以通过STONITH(Shoot The Other Node In The Head)机制,在切换主备机时强制关闭故障的主机,以避免数据一致性问题。
2. 冷备份(Cold Standby)冷备份是指备机并不实时地与主机保持数据同步,而是在主机故障时才启动并接管主机的工作。
在Linux系统中,常用的冷备份方案是通过Pacemaker软件实现。
Pacemaker是一个集群管理软件,它可以实现故障监测和自动主备机切换。
与Heartbeat不同的是,Pacemaker通过资源代理(Resource Agent)来管理主备机的资源,包括IP地址、文件系统、服务等。
当主机发生故障时,Pacemaker会启动备机并通过资源代理来配置和管理主机的资源,确保系统的连续性。
3. 主备机切换的流程无论是热备份还是冷备份,主备机切换的流程大致相同,包括以下几个步骤:(1)故障监测:主备机之间通过心跳包或其他方式进行故障监测,以检测主机的可用性。
(2)故障判定:当主机发生故障或不可用时,备机会判定主机已经故障,并准备接管主机的工作。
heartbeat原理介绍HeartBeat运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的"心跳"则自动接管主服务器的资源。
通常情况下,主、备服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由"交叉线"实现的以太网连接。
Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。
从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在单点故障。
1、串行电缆:被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。
但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。
2、以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此连接在主备服务器间同步文件系统,从而减少了从正常通信连接带宽的占用。
基于冗余的角度考虑,应该在主、备服务器使用两个物理连接传输heartbeat的控制信息;这样可以避免在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的"脑裂"(split-brain)或"partitioned cluster"。
在两个节点共享同一个物理设备资源的情况下,脑裂会产生相当可怕的后果。
为了避免出现脑裂,可采用下面的预防措施:1、如前所述,在主、备节点间建立一个冗余的、可靠的物理连接来同时传送控制信息;2、一旦发生脑裂时,借助额外设备强制性地关闭其中一个节点;第二种方式即是俗称的"将其它节点'爆头'(shoot the other node in the head)",简称为STONITH。
linux 主备机之间切换原理
Linux主备机之间的切换原理通常涉及到以下几个方面:
1. 心跳检测:主备机之间通过心跳包进行通信,以监测主机是否正常工作。
心跳包通常由主机定时发送给备机,如果备机在一段时间内没有收到心跳包,就会认为主机失效,触发切换动作。
2. 资源同步:主备机通常需要同步一些重要的数据和配置文件,以保证切换后备机可以继续提供正常的服务。
常见的同步方式包括文件同步、数据库同步、存储同步等。
3. IP漂移:当主机失效或需要切换时,备机会接管主机的IP
地址,以确保服务可以继续提供给客户端。
IP漂移通常使用
虚拟IP技术实现,即备机会在切换时动态绑定原主机的IP地址,客户端则无需感知主备机的切换过程。
4. 服务监控与启停:主备机之间的切换涉及到各种服务的启停,在切换过程中需要确保服务的可靠性和一致性。
常见的做法是在备机上启动相同的服务,并监控它们的运行状态,在主机失效时及时启动备机上的服务。
需要注意的是,主备机切换的具体实现方式可能会因使用的软件和应用场景而有所不同。
一些常见的主备机切换软件包括Heartbeat、Keepalived、Pacemaker等。
linux上的heartbeat 双机热备服务架设/【一】安装前环境设定========================================================== 两台主机硬件环境(不必完全一致):CPU: Xeon 3G *2 (EM64T)MEM: 2GNIC: Intel 1G *2eth0: 对外IPeth1: 对内IP(HA专用)两台主机的eth1使用双机对联线直接连接。
分区方式:Filesystem 容量挂载点/dev/sda2 9.7G //dev/sda6 45G /Datas/dev/sda1 99M /bootnone2.0G /dev/shm/dev/sda3 9.7G /opt另外每台主机应预留500M的raw空间或者更多来作为共用空间被HA使用。
操作系统:RedHat Enterprise 4 Update2 (2.6.9-22 EL)预安装软件:@ X Window System@ GNOME Desktop Environment@ KDE Desktop Environment@ Editors@ Engineering and Scientific@ Graphical Internet@ Text-based Internet@ Authoring and Publishing@ Server Configuration Tools@ Development Tools@ Kernel Development@ X Software Development@ GNOME Software Development@ KDE Software Development@ Administration Tools@ System Tools【二】安装前网络环境设定:================================================================ node1: 主机名:servers201 ( HA01 )eth0: 192.168.10.201 //对外IP地址eth1: 10.0.0.201 //HA心跳使用地址node2: 主机名:servers202 ( HA02 )eth0: 192.168.10.202 //对外IP地址eth1: 10.0.0.202 //HA心跳使用地址特别注意要检查以下几个文件:/etc/hosts/etc/host.conf/etc/resolv.conf/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1/etc/nsswitch.conf#vi /etc/hostsnode1的hosts内容如下:127.0.0.1 localhost.localdomain localhost192.168.10.201 servers201 HA0110.0.0.201 HA0110.0.0.202 HA02192.168.10.202 server202node2的hosts内容如下:127.0.0.1 localhost.localdomain localhost192.168.10.202 servers202 HA0210.0.0.202 HA0210.0.0.201 HA01192.168.10.201 server201#cat /etc/host.conforder hosts,bind#cat /etc/resolv.confnameserver 61.139.2.69 //DNS地址#cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=servers201 //主机名GATEWAY="192.168.10.1" //网关GATEWAY="eth0" //网关使用网卡ONBOOT=YES //启动时加载FORWARD_IPV4="yes" //只允许IPV4#cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.10.201NETMASK=255.255.255.0GATEWAY=192.168.10.1TYPE=EthernetIPV6INIT=no#cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneIPADDR=10.0.0.201NETMASK=255.255.255.0TYPE=Ethernet[node1] 与[node2] 在上面的配置中,除了/etc/hosts/etc/sysconfig/network/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1要各自修改外,其他一致。
配置完成后,试试在各自主机上ping对方的主机名,应该可以ping通: /root#ping HA02PING HA02 (10.0.0.202) 56(84) bytes of data.64 bytes from HA02 (10.0.0.202): icmp_seq=0 ttl=64 time=0.198 ms64 bytes from HA02 (10.0.0.202): icmp_seq=1 ttl=64 time=0.266 ms64 bytes from HA02 (10.0.0.202): icmp_seq=2 ttl=64 time=0.148 ms--- HA02 ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 2002msrtt min/avg/max/mdev = 0.148/0.204/0.266/0.048 ms, pipe 2【三】安装HA 与HA依赖包================================================================ rpm -Uvh libnet-1.1.2.1-1.rh.el.um.1.i386.rpm //可以不装rpm -Uvh heartbeat-pils-2.0.4-1.el4.i386.rpmrpm -Uvh heartbeat-stonith-2.0.4-1.el4.i386.rpmrpm -Uvh heartbeat-2.0.4-1.el4.i386.rpmrpm -Uvh ipvsadm-1.24-5.i386.rpm【四】配置HA的各配置文件================================================================ ---------------------------配置心跳的加密方式:authkeys---------------------------#vi /etc/ha.d/authkeys如果使用双机对联线(双绞线),可以配置如下:#vi /etc/hc.d/authkeysauth 11 crc存盘退出,然后#chmod 600 authkeys---------------------------配置心跳的监控:haresources---------------------------#vi /etc/ha.d/haresources各主机这部分应完全相同。
server201 IPaddr::192.168.10.200 ipvsadm httpd指定server201调用ipvsadm启动http服务,系统附加一个虚拟IP 192.168.10.200 给eth0:0这里如果server201宕机后,server202可以自动启动http服务,并新分配IP 192.168.10.200给server202的eth0:0---------------------------配置心跳的配置文件:ha.cf---------------------------#vi /etc/ha.d/ha.cflogfile /var/log/ha_log/ha-log.log ## ha的日志文件记录位置。
如没有该目录,则需要手动添加bcast eth1 ##使用eth1做心跳监测keepalive 2 ##设定心跳(监测)时间时间为2秒warntime 10deadtime 30initdead 120hopfudge 1udpport 694 ##使用udp端口694 进行心跳监测auto_failback onnode server201 ##节点1,必须要与uname -n 指令得到的结果一致。
node server202 ##节点2ping 192.168.10.1 ##通过ping 网关来监测心跳是否正常。
respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=root uid=rootdebugfile /Datas/logs/ha_log/ha-debug.log---------------------------设置ipvsadm的巡回监测---------------------------ipvsadm -A -t 192.168.10.200:80 -s rripvsadm -a -t 192.168.10.200:80 -r 192.168.10.201:80 -mipvsadm -a -t 192.168.10.200:80 -r 192.168.10.202:80 -m执行后进行监测:#ipvsadm --list如果返回结果与下相同,则设置正确。
IP Virtual Server version 1.2.0 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.10.200:http rr-> server202:http Local 1 0 0-> server201:http Masq 1 0 0【五】HA服务的启动、关闭以及测试================================================================启动HA: service heartbeat start关闭HA; service heartbeat stop系统在启动时已经自动把heartbeat 加载了。