Linux-keepalived的安装及应用

发布时间:2024年01月21日
一、安装keepalived及配置

1、一键安装配置keepalived

在linux中执行? yum -y install keepalived

?或者

(执行过yum -y install keepalived后就不用执行2、3)

2、安装

在 /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

3、配置

将脚本文件复制到/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/

启动验证

[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

4、安装killall命令

yum -y install psmisc

5、配置开机自启动

systemctl enable keepalived

注意启动nginx和keepslived时nginx先启动,可以两个都设置开机启动,这样可以避免错误

二、环境准备
1、两台虚拟机

虚拟ip:192.168.195.33

? ? ? ? ? ? ? ?192.168.195.36

2、配置keepalived

这里我是把平时使用192.168.195.33的作为主服务器,用主服务器克隆了一个从主服务器

(1)主服务器修改192.168.195.33的配置文件/etc/keepalived/keepalived.conf

# 全局配置

global_defs {
    notification_email {
       123@qq.com #设置报警邮件地址,可以设置多个,可以不设置
    }
    notification_email_from master@qq.com #发送通知邮件时邮件源地址
    smtp_server 127.0.0.1 # 发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
    smtp_connection_timeout 30 #连接smtp连接超时时间
    router_id 192.168.195.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.195.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.195.100            # 定义虚拟ip(VIP),可多设,每行一个
    }
}

(2)备用服务器修改192.168.195.36的配置文件/etc/keepalived/keepalived.conf

# 全局配置

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

以下是针对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

给脚本一个执行的权限

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

修改nginx.conf

三、启动前后端项目

后端传数据的两个服务器是192.168.195.34和35,在linux-nginx文章中写过

前端的地址根据keepalived.con的虚拟ip是192.168.195.100修改打包上传到linux

启动后端后,可以正常访问

文章来源:https://blog.csdn.net/weixin_47735032/article/details/135705324
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。