keepalived的安装和配置nginx的高可用

来源:互联网 发布:数据库系统概论第五版 编辑:程序博客网 时间:2024/05/22 16:07

1.安装keepalived

上传keepalived包

安装keepalived之前需要安装openssl,否则安装不成功,openssl是keepalived运行依赖的类库,这里先把openssl安装包上传

先把环境安装好

安装好环境之后开始安装keepalived

查看安装目录

rmp –ql 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 eth1         #设置实例绑定的网卡

   virtual_router_id 51   #同一实例下virtual_router_id必须相同

   priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99 

   advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

   authentication {       #设置认证

       auth_type PASS     #主从服务器验证方式

       auth_pass 5555                 #密码要一致

    }

   virtual_ipaddress {    #设置vip

       192.168.25.190       #可以多个虚拟IP,换行即可

    }

}


保存退出

然后启动keepalived

service keepalived start 启动

(service keepalived stop关闭

service keepalived   status 查看状态

service keepalived   restart 重启)

 

查看 keepalived的日志信息

tail -f /var/log/messages

 

查看 eth1 网卡接口上是否有 VIP

Ip add show eth1

如果有则证明都没问题,主机的keepalived就搭建好了



2.搭建备机方案

同主机操作,先安装openssl,再安装keepalived,安装成功后编辑配置文件

 

/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 eth1         #设置实例绑定的网卡

   virtual_router_id 51   #同一实例下virtual_router_id必须相同

    priority 99           #MASTER权重要高于BACKUP 比如BACKUP为99 

   advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

   authentication {       #设置认证

       auth_type PASS     #主从服务器验证方式

       auth_pass 5555

    }

   virtual_ipaddress {    #设置vip

       192.168.25.190       #可以多个虚拟IP,换行即可,虚拟ip要跟主机保持一致

    }

}

红色字体处为改动过的

保存退出

然后启动keepalived

查看 eth1 网卡接口

Ip add show eth1

此时不会有虚拟ip,只有主机挂掉的时候这里才会有

 

测试,在浏览器直接输入我们设置的虚拟ip,效果和访问Nginx主机地址效果相同,这样就配置成功了


3.注意问题及解决方案

Keepalived 是通过检测 keepalived进程是否存在来判断服务器是否宕机,如果keepalived进程在但是nginx进程不再了,那么keepalived是不会做主备切换,所以我们需要写个脚本来监控nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉。

监控脚本

#!/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

 

配置监控脚本

切换目录cd /etc/keepalived/

然后创建脚本程序文件执行命令touch check_nginx.sh

然后修改它的权限为可执行chmod 700 check_nginx.sh

然后向里面存放脚本代码vim check_nginx.sh

将上面的脚本程序代码粘贴进来保存退出

 

执行脚本的配置

在主机上配置

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_script check_nginx {

    script"/etc/keepalived/check_nginx.sh"         ##监控脚本

    interval 2                                      ##时间间隔,2

    weight 2                                        ##权重

}

 

vrrp_instance VI_1 {

   state MASTER           #主机标示状态为MASTER 备份机为BACKUP

   interface eth1         #设置实例绑定的网卡

   virtual_router_id 51   #同一实例下virtual_router_id必须相同

   priority 100           #MASTER权重要高于BACKUP 比如BACKUP为99 

   advert_int 1           #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒

   authentication {       #设置认证

       auth_type PASS     #主从服务器验证方式

       auth_pass 5555                 #密码要一致

}

         track_script {

        check_nginx        #监控脚本

   }

 

   virtual_ipaddress {    #设置vip

       192.168.25.190       #可以多个虚拟IP,换行即可

    }

}

 

红色字体为修改添加的代码,保存退出,重启keepalived,此时如果停止nginx,keepalived也会同时停止


阅读全文
0 0