打算给公司的弄多一台squid .做一个热备。所以。。。。。在试验过程中。发现网上的好多~~都是乱七八糟的。。。 所以一定要整理一份 最简单版本~~~ 通用版本。。 所以 弄了这么一个环境。
安装 heartbeat:
yum install heartbeat
然后复制配置文件到 /etc/ha.d 下
cp -a /etc/ha.d /usr/share/doc/heartbeat-2.1.3/{ha.cf,authkeys,haresources}
开始配置
1 . ha.cf
2. haresources
beihai365 192.168.1.210 httpd #这里的主机名是主的主机名。IP 是 vip 也就是漂移的ip地址。
3. authkeys
auth 1
1 crc
好了heartbeat 配置完了。 热备的两台服务器配置文件基本一样。因为我这里是使用拓扑网络来做心跳 所以 ha.cf 文件里面的
ucast 参数要调整下。 写下 对方服务器的IP
scp -r /etc/ha.d/ root@192.168.1.244:/etc/ 注:在这一步中。我遇到的是 heartbeat 版本不一致导致的 heartbeat 无法启动问题。 所以最好保持你的版本一致 。 我是 2.1.3版本。
然后在 241 服务器上的 ha.cf 要修改成 :
ucast eth1 192.168.1.244
OK heartbeat 基本就配置完了。 不过还有一步。 在 haresources 文件里面 我们带了 启动的脚本 httpd 。也就是 heartbeat 启动的时候 顺便 apache 也启动了。所以 必须要确保 apache 能顺利启动成功否则 heartbeat 也无法启动。
找到 apache 配置文件: httpd.conf 找到修改成 Listen 192.168.1.210:81 写的是vip 地址
记得 热备的两台服务器 的都必须一样
然后就可以启动了。 先启动主 服务器
/etc/init.d/heartbeat start
然后过一会就能看到 ifconfig 出来一个虚拟的接口了。那个就是VIP了
eth0:0 Link encap:Ethernet HWaddr 00:EA:01:08:0D:D1
inet addr:192.168.1.210 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:185
当 heartbeat 进程意外挂掉了以后。 VIP就会漂移到 从服务器上 。那么从服务器上就会创建一个虚拟的VIP口来应对服务了。当 主的 heartbeat 服务正常以后。 还是由主来接待服务。
在从上可以这样看心跳包:
tcpdump port 694
[root@beihai365_bak ha.d]# tcpdump port 694
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
20:05:13.230171 IP beihai365.34842 > beihai365_bak.ha-cluster: UDP, length 180
20:05:13.745084 IP beihai365_bak.32776 > beihai365.ha-cluster: UDP, length 184
20:05:15.229991 IP beihai365.34842 > beihai365_bak.ha-cluster: UDP, length 180
20:05:15.747235 IP beihai365_bak.32776 > beihai365.ha-cluster: UDP, length 183
20:05:17.229901 IP beihai365.34842 > beihai365_bak.ha-cluster: UDP, length 180
在这里的试验当中遇到一个意外情况。 查看日志 /var/log/ha-log 和 /var/log/messages 中发现说找不到 gawk .但是 gawk 确实存在的而且权限路径都没错。 最后发现是 witch 没装。他却依赖 witch 所以。 yum install witch 解决。
ERROR: Setup problem: Couldn't find utility /usr/bin/gawk
使用heartbeat 做热备~~其实不够完美。还缺一个脚本~~~来监控你想监控的服务。然后来做真正意义上的 “服务”热备。 脚本~~
我这里主要是监控 squid 脚本是否在运行。如果 squid 服务挂了。就马上切换到 另外一台服务器接管 squid 服务
脚本如下:
然后 nohup heartbeat_check_squid &