ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Keepalived使用

2021-12-21 20:32:25  阅读:231  来源: 互联网

标签:script Keepalived sudo keepalived priority etc 使用 节点


Keepalived使用

介绍

Keepalived高可用服务对之间的故障切换转移,是通过 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)来实现的。

在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色
  这里只做简单的介绍,具体可看官网

1. Keepalived的安装

安装前环境准备

sudo apt-get install libssl-dev
sudo apt-get install libpopt-dev
sudo apt-get install daemon
sudo apt-get install build-essential
sudo apt-get install libssl-dev 
sudo apt-get install openssl 
sudo apt-get install libpopt-dev 
sudo apt-get install keepalived

启动、停止、查看状态

sudo systemctl start keepalived
sudo systemctl status keepalived
sudo systemctl stop keepalived

2. 配置说明

keepalived配置文件路径:/etc/keepalived

2.1. MASTER(主机配置)

配置文件/etc/keepalived/keepalived.conf

# MASTER

! Configuration File for keepalived

global_defs {
    lvs_flush
}

vrrp_script chk_run {
   script "/etc/keepalived/services-check.sh"
   interval 3
}

vrrp_instance VI_1 {
     interface eth2
     state MASTER
     virtual_router_id 6
     priority 100
     nopreempt
     virtual_ipaddress {
        192.168.2.122/20 dev eth2
     }
     authentication {
        auth_type PASS
        auth_pass apig2021
     }
     track_script {
        chk_run
    }
}

2.2. BACKUP(备机配置)

配置文件/etc/keepalived/keepalived.conf

## BACKUP
! Configuration File for keepalived

global_defs {
    lvs_flush
}

vrrp_script chk_run {
   script "/etc/keepalived/services-check.sh"
   interval 3
}

vrrp_instance VI_1 {
     interface eth5
     state BACKUP
     virtual_router_id 6
     priority 50
     nopreempt
     virtual_ipaddress {
        192.168.2.122/20 dev eth5
        192.168.191.10 dev  eth1
     }
     authentication {
        auth_type PASS
        auth_pass apig2021
     }
     track_script {
        chk_run
    }
}


2.3. 配置简要说明

1、服务健康检测脚本:/etc/keepalived/scripts/check_serv.sh 脚本内容见第四节

2、防止反转强占:

以下两种方式的配置,当其中一台机器keepalived挂掉后会自动VIP切到另一台机器,当挂掉机器keepalived恢复后不会抢占VIP,该方式可以避免机器恢复再次切VIP所带来的影响。

  • 主机:(state BACKUP;priority 100)

  • 备机:(state BACKUP;priority 99)

  • 非抢占:nopreempt

    或者:

  • 主机:(state MASTER;priority 100)

  • 备机:(state BACKUP;priority 100)

  • 默认抢占

建议指定为非抢占:nopreempt,即priority高不会抢占已经绑定VIP的机器。

3、指定VIP

    virtual_ipaddress {
        # 以下两种方式都是可以的
        1.1.1.1  dev eth3  # 虚拟VIP地址,允许多个
        2.2.2.2    
    }

4、可以指定keepalived状态变化通知

    notify_master "/etc/keepalived/keepalived_notify.sh master"
    notify_backup "/etc/keepalived/keepalived_notify.sh backup"
    notify_fault "/etc/keepalived/keepalived_notify.sh fault"
    notify_stop "/etc/keepalived/keepalived_notify.sh stop"

5、virtual_router_id 15 ## 虚拟路由ID,取值在0-255之间,用来区分多个instance的VRRP组播,同一网段内ID不能重复,且主备必须为一样;如果同一个网段配置的virtual_router_id 重复则会报错,选择一个不重复的0~255之间的值,可以用以下命令查看已存在的vrid。

tcpdump -nn -i any net 224.0.0.0/8

6、

priority 99  # 优先级,谁的优先级高,谁就是master

7、

interface eth2  # 节点固有IP(非VIP)的网卡,用来发VRRP包做心跳检测

8、

 advert_int 1 # 检查间隔默认为1秒,即1秒进行一次master选举(可以认为是健康查检时间间隔)

9、

global_defs {
    router_id proxy-keepalived  #标识信息,一个名字而已;
}

10、

state MASTER   # 可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER

11、

authentication {  # 认证区域,认证类型有PASS和HA(IPSEC),推荐使用PASS(密码只识别前8位)
        auth_type PASS # 默认是PASS认证
        auth_pass xxx  # PASS认证密码
 }

12、

vrrp_script check {     #定义脚本
   script "“/server/scripts/check_web.sh"  --- 表示将一个脚本信息赋值给变量check_web
   interval 2    --- 执行监控脚本的间隔时间
   weight 2  ---利用权重值和优先级进行运算,从而降低主服务优先级使之变为备服务器(建议先忽略)
}

track_script {     #调用脚本
       check
}

监听端口,查看服务是否可用

## 监听端口脚本【通过脚本监听端口判断服务是否正常】
#!/bin/bash

PORTARR=('8080' '3306')

for port in ${PORTARR[*]}
do

   echo $port
   netstat -lntp  | grep ":$port "
   result_port=$?

   if [ $result_port -ne 0 ]; then
           echo "${port} 服务 pid not found">>/etc/keepalived/keepalived.log
           exit 10
   fi

done

标签:script,Keepalived,sudo,keepalived,priority,etc,使用,节点
来源: https://blog.csdn.net/sunrj_niu/article/details/122072370

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有