linux keepalived的安装


前面几篇
1-MyEclipse新建单个Maven web工程2-MyEclipse创建Maven web项目名后缀会有Maven Webapp3-My Eclipse创建多模块Maven依赖项目4-从写项目到部署linux服务器全过程-linux(CentOS 6.5)安装篇5- 从写项目到部署linux服务器全过程-linux固定IP配置篇6-从写项目到部署linux服务器全过程-linux下安装JDK篇7-从写项目到部署linux服务器全过程-linux下tomcat的安装篇8-从写项目到部署linux服务器全过程-linux下tomcat的集群配置篇9-从写项目到部署linux服务器全过程-linux防火墙端口配置篇10-从写项目到部署linux服务器全过程-linux部署web项目篇


步骤:

主要以截图为主,复杂的操作,会以文字说明。按照步骤一步一步来操作就可以了。


1. 使用winscp把keepalived-1.2.15.tar.gz传到linux的/usr/local/src/目录下

2. 使用Putty远程登录,输入用户名密码,登录linux。进入目录,解压

cd /usr/local/src   #进入目录
ls  		#查看
tar -zxvf keepalived-1.2.15.tar.gz   	#解压

3. 进入解压过的目录keepalived-1.2.15录,运行配置

cd keepalived-1.2.15.tar.gz    #进入目录

#keepalived所需要的安装环境
yum -y install kernel-devel*
yum -y install openssl-*
yum -y install popt-devel
yum -y install lrzsz
yum -y install openssh-clients
yum -y install libnl libnl-devel popt


#执行安装配置
./configure --prefix=/usr/local/keepalived

#编译
make

#安装
make install

6.配置环境变量,开机启动,软连接等

#5、拷贝执行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#6、将init.d文件拷贝到etc下,加入开机启动项
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
#7、将keepalived文件拷贝到etc下,加入网卡配置
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ 
#8、创建keepalived文件夹
mkdir -p /etc/keepalived
#9、将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
#10、添加可执行权限
chmod +x /etc/init.d/keepalived

#11.	加入开机启动
chkconfig --add keepalived	#添加时必须保证/etc/init.d/keepalived存在
chkconfig keepalived on

#添加完可查询系统服务是否存在:
chkconfig --list

7.测试命令

启动:service keepalived start
停止:service keepalived stop
重启:service keepalived restart

8 后续Nginx+keepalived配合使用,CentOS7添加虚拟IP(VIP)

后续Nginx+keepalived使用

vi /etc/sysconfig/network-scripts/ifcfg-eth0 编辑文本参考


DEVICE=eth0     
BOOTPROTO=static            
IPV6INIT=yes     
NM_CONTROLLED=yes       
ONBOOT=yes     
TYPE=Ethernet        
IPADDR=xxx.xxx.xxx.xxx     

    #在此处添加一个ip
    IPADDR1=xxx.xxx.xxx.xxx     

NETMASK=255.255.255.0       
DNS1=xxx.xxx.xxx.xxx

9.Nginx+keepalived检测脚本

修改主nginx下/etc/keepalived/keepalived.conf文件

修改主nginx下/etc/keepalived/keepalived.conf文件

! Configuration File for keepalived

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from XXX@XXX.com  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}

修改备份nginx下/etc/keepalived/keepalived.conf文件

global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
    XXX@XXX.com
   }
   notification_email_from XXX@XXX.com  				#指定发件人
   #smtp_server XXX.smtp.com                             	#指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}

vrrp_instance VI_1 { 
    state BACKUP           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 99            #MASTER权重要高于BACKUP 比如BACKUP为99  
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }
}

添加自动检测代码配置

#全局配置
global_defs {
   notification_email {  #指定keepalived在发生切换时需要发送email到的对象,一行一个
     XXX@XXX.com
   }
   notification_email_from miaoruntu@itcast.cn  #指定发件人
   #smtp_server XXX.smtp.com                             #指定smtp服务器地址
   #smtp_connect_timeout 30                               #指定smtp连接超时时间
   router_id LVS_DEVEL                                    #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"         ##监控脚本
    interval 2          ##时间间隔,2秒
    weight 2          ##权重
}
vrrp_instance VI_1 {
    state MASTER           #标示状态为MASTER 备份机为BACKUP
    interface eth0         #设置实例绑定的网卡
    virtual_router_id 51   #同一实例下virtual_router_id必须相同
    priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99
    advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {       #设置认证
        auth_type PASS     #主从服务器验证方式
        auth_pass 8888
    }
   track_script {
        check_nginx        #监控脚本
   }
    virtual_ipaddress {    #设置vip
        192.168.101.100       #可以多个虚拟IP,换行即可
    }

}

将check_nginx.sh拷贝至/etc/keepalived下,
脚本测试:
将nginx停止,将keepalived启动,执行脚本:sh /etc/keepalived/check_nginx.sh

#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l`      ## 查看是否有 nginx进程 把值赋给变量A 
if [ $A -eq 0 ];then                    ## 如果没有进程值得为 零
       service keepalived stop          ## 则结束 keepalived 进程
fi

观察日志

tail -f /var/log/messages

nginx+keepalived高可用,keepalived守护进程无法自动执行脚本问题解决

2、问题分析
nginx_check.sh脚本手动执行没有问题。keepalived、nginx、nginx_check.sh 配置文件都检查了很久没问题。
通过百度查找,发现keepalived配置文件里写了这个vrrp_script,大括号需要换行执行,否则不起作用。
keepalived.conf配置文件改为:
vrrp_script check_nginx
{
script “/etc/keepalived/check_nginx.sh” ##监控脚本
interval 2 ##时间间隔,2秒
weight -5 ##权重
}

重启keepalived测试,发现VIP仍然没有切换到备份机上。
后来想一下,会不会是nginx_check.sh脚本的编码格式出现问题?
使用:set ff 查看nginx_check.sh脚本格式,发现当前脚本格式是dos。
使用:set fileformat=unix修改脚本格式,再查看脚本格式为:
再重启keepalived,测试发现问题解决。
注意:如果使用Notepad++的NppFTP插件修改服务器的sh文件时,要注意文件的编码格式。