2024-01-19-keepalived

一 了解keepalived

        Keepalived是一个用于实现高可用性和负载均衡的开源软件。它主要用于服务器集群环境中,通过监控真实服务器的状态,实现故障转移和负载均衡的功能。

        Keepalived使用了VRRP(Virtual Router Redundancy Protocol)协议来管理多个服务器之间的冗余路由器。它通过将多台服务器组成一个虚拟IP地址(VIP)组,并选举出一台主服务器来处理所有传入的请求,其他服务器则处于备份状态。如果主服务器出现故障或不可用,Keepalived会自动将备份服务器切换为主服务器,以确保服务的持续可用性。

        除了故障转移,Keepalived还可以进行负载均衡。它可以根据配置的策略(如轮询、加权轮询、最少连接数等),将传入的请求分发到不同的服务器上,从而实现请求的平衡分配,提高系统的性能和可扩展性。

        总之,Keepalived是一个强大的工具,可以帮助构建高可用性和负载均衡的服务器集群,提高系统的可靠性和性能。

安装 keepalived-2.0.10

在 /usr/java下面创建keepalived文件夹

下载keepalived安装包

wget https://www.keepalived.org/software/keepalived-2.0.10.tar.gz

[root@localhost keepalived]# tar -zxvf keepalived-2.0.10.tar.gz

[root@localhost keepalived]#

yum -y install popt-devel libnl libnl-devel libnfnetlink-devel net-tools

[root@localhost ~]# cd keepalived-2.0.10

[root@localhost keepalived-2.0.10]#

./configure --prefix=/usr/java/keepalived

安装执行

[root@localhost keepalived-2.0.10]# make && make install

三 配置keepalived

将脚本文件复制到/etc/init.d 文件夹里

cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/init.d/keepalived /etc/init.d/

在etc里面创建 一个文件夹 keepalived

mkdir /etc/keepalived

将配置文件拷贝到刚才创建的文件夹里面

cp /usr/java/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

将keepalived的文件信息存放到/etc/sysconfig/里面

cp /usr/java/keepalived/keepalived-2.0.10/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

将可执行的文件存放到sbin文件夹里面

cp /usr/java/keepalived/sbin/keepalived /usr/sbin/

四 启动与验证keepalievd

[root@os004 keepalived-2.0.10]# systemctl start keepalived

[root@os004 keepalived-2.0.10]# systemctl status keepalived

[root@os004 keepalived-2.0.10]# ps -aux|grep keepalived

还有一种十分简单的安装方法

        直接使用

yum -y install keepalived

五 环境准备

1 两台虚拟机,centos7

虚拟ip:192.168.162.33

192.168.162.36

Keppalived1:主33Nginx

Keppalived2:从36Nginx

2 配置keepalived

主服务器修改192.168.162.33的配置文件/etc/keepalived/keepalived.conf

# 全局配置,框住的地方改成对应的ip地址

2024-01-19-keepalived_第1张图片

global_defs { # 全局的定义
    notification_email { 
       [email protected] #设置报警邮件地址,可以设置多个,可以不设置
    }
    notification_email_from [email protected] #发送通知邮件时邮件源地址
    smtp_server 127.0.0.1 # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
    smtp_connection_timeout 30 #连接smtp连接超时时间
    router_id 192.168.162.33      #定义路由标识信息,相同局域网唯一
}
vrrp_script aaa {
    script "/usr/local/src/check_nginx_pid.sh"    #最后手动执行下此脚本,以确保此脚本能够正常执行
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight -2   #当检查失败后,将vrrp_instance的priority减小2
    fall 3 #连续监测失败3次,才认为真的健康检查失败。并调整优先级
    rise 2 #连续监测2次成功,就认为成功。但不调整优先级
}
 
# 虚拟ip配置 vrrp
vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备,大写
    interface ens32            # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    mcast_src_ip 192.168.184.33 #发送心跳包的源IP,可使用绑定的网卡IP
    virtual_router_id 51        # 虚拟路由编号,主从要一直0-255
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {
        auth_type PASS  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        aaa            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.162.100            # 定义虚拟ip(VIP),可多设,每行一个
    }
}

        备用服务器也对该文件进行修改,记住修改对应的部分

        以下是针对nginx状态进行检测的脚本,第一次nginx服务死掉时,会重新启动,如果Nginx服务无法正常启动,则杀掉keepalived进程

        vim /usr/local/src/check_nginx_pid.sh

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then                            
       /usr/local/nginx/sbin/nginx      
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then  
              killall keepalived                    
      fi
fi

        脚本中使用的killall需要安装一下

 yum -y install psmisc

        给脚本一个执行的权限

chmod a+x /usr/local/src/check_nginx_pid.sh

设置keepalived开机自启动(7.0)

        # 配置开机自启动

systemctl enable keepalived

        启动之后,项目的访问就变成了以下样子,这样单点故障的时候就不会严重影响到客户端的访问

2024-01-19-keepalived_第2张图片

你可能感兴趣的:(学习,笔记)