keepalived安装
环境;
系统环境:RedHat Linux 5.5-64
系统安装这里就不说了上正题,两台服务器
服务器A:MARST IP:192.168.10.120
服务器B:BACKUP IP:192.168.10.121
心跳 IP: 192.168.10.123
—————————————————————————————————————————————
keepalived下载地址如下:
要是下载不了也可以去网上找对应的地址,本人用的keepalived是keepalived-1.1.20.tar.gz,高版本的出试了但是在make的时候报错,所以换成了这个版本的了。
安装keepalived之前要解决keepalived的依赖包的问题,(配RedHat的yum源这在里就不说了)
[root@MARST ~]# yum -y install gcc* openssl* kernel kernel-devel ####这里编译安装所要的依赖包。
然后我这里先编译安装apache服务;(两个服务器都安装这里只做了MARST详细说明)
httpd-2.0.65.tar.gz ####apache服务版本
[root@MARST ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog
[root@MARST ~]# cd Desktop
[root@MARST Desktop]# tar -zxf httpd-2.0.65.tar.gz
[root@MARST Desktop]# cd httpd-2.0.65
[root@MARST httpd-2.0.65]# ./configure --prefix=/usr/local/apache2/
[root@MARST httpd-2.0.65]# make && make install
[root@MARST httpd-2.0.65]# vi /usr/local/apache2/htdocs/index.html
#####编辑apache测试页面
[root@MARST httpd-2.0.65]# /usr/local/apache2/bin/apachectl start
#####起动服务(两个服务器都起动)
下面开始编译安装keepalived
[root@MARST ~]# cd Desktop/
[root@MARST Desktop]# ls
httpd-2.0.65 httpd-2.0.65.tar.gz keepalived-1.1.20.tar.gz
[root@MARST Desktop]# tar -zxf keepalived-1.1.20.tar.gz
[root@MARST Desktop]# cd keepalived-1.1.20
[root@MARST keepalived-1.1.20]# ./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-x86_64/
[root@MARST keepalived-1.1.20]# make && make install
[root@MARST keepalived-1.1.20]# cp /usr/local/sbin/keepalived /usr/sbin/
#######复制keepalived起动文件
[root@MARST keepalived-1.1.20]# vi /etc/keepalived/keepalived.conf
#######配置keepalived文件如图
这里是MARST服务器keepalived配置文件BACKUP服务器上要把state MARSET 修改成BACKUP
priority 100 修改成比100少的就可以。因为这里要区分哪个是MARST和BACKUP服务器。
配置完成后要起动keepalived服务。
然后在IE栏里输入
如图显示;
然后停止keepalived 服务如下图;
如图所示停止MARST上的keepalived服务后F5刷新一下页面后自动跳到BACKUP服务器上去。
接下来我模拟一下停止apache服务看keepalived是不是自动跳到BACKUP服务器上去。
同样的可以自动跳到BACKUP服务器上去。
但是得写一个脚本写一个关于apache的脚本;(注:在这里要强调的是关于这个APACHE的脚本,一定得给一个777或755的权限,要不然你把所有配置文件都修改完成之后依然无法切换到从HA上去的。)
#!/bin/bash
CHECK_TIME=2
check()
{
curl http://127.0.0.1/ >/dev/null 2>&1
ret=$?
if [ $ret -ne 0 ];then
return $ret;
fi
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check
HTTP_OK=$?
if [ $HTTP_OK -eq 0 ];then
exit 0
fi
if [ $HTTP_OK -ne 0 ] && [ $CHECK_TIME -eq 0 ]
then
exit 1
fi
done
这里就完成这个实验了。