Linux 系统下双机HA的实现

简介:
                           ————基于heartbeat方式
 
实验环境为两台虚拟机作为HA主备节点,第三台虚拟机作为客户端。具体网络网卡参数配置见拓扑图。
clip_image001
 
一、搭建实验环境
1、设置主节点服务器主机名为:node1.example.com eth0网卡地址为:192.168.0.43 eth1网卡地址地址为:192.168.10.43
设置备用节点服务器主机名为:node2.example.com eth0网卡地址为:192.168.0.45 eth1网卡地址为:192.168.10.45
clip_image003
clip_image005
clip_image007
客户端IP地址为192.168.0.42
2、在主节点服务器上开启web服务,并验证web服务是否可以成功访问。
clip_image009
 
验证成功后,关闭web服务。为了试验的顺利进行,这里将web服务设置为开机不启动。
关闭httpd服务的目的是为了验证后面客户端访问服务器时,web服务的开启是受heartbeat控制的,而不是人为开启的web服务。
 
clip_image011
 
在双机HA功能下,主备节点要通过heartbeat信息来保持联系,为了实现主备节点的heartbeat功能,需要安装额外的软件包。但是Redhat默认并没有安装这些软件包,这就需要到对应官方网站上去下载对应的软件包。需要安装的软件包有六个,分别是:
libnet-1.1.4-3.el5.i386.rpm
perl-MailTools-1.77-1.el5.noarch.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
heartbeat-gui-2.1.4-10.el5.i386.rpm
heartbeat-ldirectord-2.1.4-10.el5.i386.rpm
heartbeat-devel-2.1.4-10.el5.i386.rpm
heartbeat-2.1.4-10.el5.i386.rpm
安装上面六个软件包,会出现依赖关系,提示依赖下面的软件包(这些包在Redhat光盘文件中),因此为了方便安装这些软件包,建议建立本地yum库,如此以来就可以解决软件安装时出现的很多包依赖关系。
perl-Compress-Zlib
perl-HTML-Parser
perl-HTML-Tagset
perl-URI
perl-libwww-perl
perl-MailTools
perl-TimeDate
perl-String-CRC32
net-snmp-libs
把要安装的软件包复制到根目录下。然后通过本地yum库进行上述软件包的安装。由于上述软件包都是以.rpm结尾的,所以这里就使用*通配所有软件包。命令为:
yum –nongpgcheck localinstall *.rpm
clip_image013
安装完成后,再来确认一下安装了所有的软件包。
clip_image015
 
二、 软件的配置 
Heartbeat软件的安装目录为/etc/ha.d,其中的README.config对配置文件进行了说明,共有三个主要的配置文件:ha.cf,haresources,authkeys。切换到/etc/ha.d目录下,却发现并没有这三个主要的配置文件。
clip_image016
 
那么这三个主要的配置文件在那里呢?可以切换到/usr/share/doc/heartbeat-2.1.4/目录下查看一下是否有这三个主要的配置文件。
clip_image018
 
将上述的三个主要的配置文件复制到/etc/ha.d/目录下。哈哈,三个主要配置的配置文件
出来了吧?
clip_image020
 
下面依次对三个配置文件进行说明,此外还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。
2.1配置authkeys文件 
authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。
其配置语句格式如下: 
auth <number> 
<number> <authmethod> [<authkey>] 
举例说明: 
auth 1 
1 sha1 key-for-sha1 
其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。 
auth 2 
2 crc 
crc方式不需要指定键值。
还是先来看一下authkeys文件的内容吧?文件前面的内容可以直接忽略过去,需要修改的行数并不是很多。主要在最后面。可以看到这四行都默认被注释掉了。
clip_image021
 
修改的方法有很多的,最简单直接打开注释就行了,然后保存退出;也可以使用echo命令将要设定的值导入到该文件中;或者使用ssl加密并导入到该文件之中。
clip_image022
 
这里使用后两种来验证一下,打开文件,可以看到两种方式都将数据导入到文件中了。在试验过程中,为了节省时间,可以选用非加密传输方式。
clip_image023
 
为了文件的安全性,我们要设定该文件的权限为600,修改完成后,要记得查看是否修改成功。
clip_image024
 
2、2配置ha.cf文件 
ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置方法说明如下: 
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息 
logfile /var/log/ha-log:heartbeat的日志文件 
clip_image025
 
keepalive 2:心跳的时间间隔,默认时间单位为秒
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。 
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
clip_image026
 
initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。 
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
clip_image027
 
bcast eth1:设置广播通信所使用的网络接口卡。
clip_image028
 
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
clip_image029
 
node 定义集群主机的节点号名称
clip_image031
 
另外还有一些设置,由于对实验作用不是很大,这里就不进行配置了。
baud 19200:设置串行通信的波特率。 
serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。 
ping ping-node1 ping-node2:指定ping node,ping node并不构成双机节点,它们仅仅用来测试网络连接。 
respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。
 
 
2、3 配置haresources文件 
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下: 
node-name network-config <resource-group> 
其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另一个主机名成为从节点。 
network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机系统通过集群IP对外提供。
 
指定主节点服务器为node1.example.com 对外宣称的IP地址为192.168.0.140的服务器提供web服务。
clip_image032
 
最后,别忘记修改/etc/hosts文件,保证主备节点服务器之间知道对方的IP地址,保证彼此可以正常通信。
clip_image033
由于备用节点服务器的配置和主节点服务器的配置基本相同,只有主机名和IP地址不同,这里就省略配置备节点服务器的配置步骤了。
 
三、实验的验证
当主备节点都配置完成后,要启动主备节点的heartbeat服务,然后就可以到客户端来验证测试实验成功与否了。有点激动啊!呵呵^_^,如图所示,实验配置是成功的。
clip_image034
 
再来到主节点服务器上,查看一下主节点服务器IP地址的变化吧!可以发现,对外宣称的VIP地址绑定在了主节点服务器上的eth0网卡上。
clip_image035
clip_image036
 
此时,假设由于某些意外原因(手动停止主节点服务器的heartbeat服务),主节点服务器突然宕机了。再来刷新客户端的浏览器,会发现主页内容变成了备节点服务器(这里为了区分客户端访问的是不同的服务器,主备节点服务器的网页内容不同)。
clip_image037
 
切换来到备节点服务器上,查看一下备节点服务器IP地址的变化可以发现,对外宣称的VIP地址绑定在了备节点服务器上的eth0网卡上。
由此就可以说明双机系统可以实现无缝切换。
clip_image039
 
主节点再次启动heartbeat 
在这种情况下,主节点将重新绑定VIP地址,备节点web释放该IP地址,并由主节点对外提供服务。在主节点启动heartbeat之后,集群IP地址的释放和绑定有一定的延迟。虽然有一定的延迟,但是集群IP地址的释放和绑定是同步进行的,使用ping命令可以发现集群IP地址一直处于可通状态,该过程并不影响双机系统的可用性。所以该过程仍然是一个无缝切换。
 
为了验证主备节点服务器之间的连通性,可以使用tcpump –i eth1 udp port 694
clip_image041









本文转自 linuxtro 51CTO博客,原文链接:http://blog.51cto.com/linuxtro/284869,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
91 3
|
1月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
80 2
|
10天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
130 78
|
14天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
52 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
140 48
|
10天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
65 13
|
1月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
39 3
|
11天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
29 0
|
1月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
65 4
|
1月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
39 1