千家信息网

keepalived+lvs配置详解

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,安装:tar -zxvf keepalived-1.2.2.tar.gzyum list all |grep "ipvsadm"yum -y install kernel-devel openssl-
千家信息网最后更新 2026年11月02日keepalived+lvs配置详解

安装:

tar -zxvf keepalived-1.2.2.tar.gz

yum list all |grep "ipvsadm"

yum -y install kernel-devel openssl-develpopt-devel ipvsadm libnl libnl-devel

service iptables stop

setenforce 0

./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64 && make&& make install

添加系统服务:

chkconfig --add keepalived 添加后可以使用service、chkconfig工具管理keepalived服务

chkconfig keepalived on on级别为2、3、4

chkconfig --list keepalived 查看2、3、4级别是否开启

全局配置文件:

global_defs {

notification_email {

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.1.1

smtp_connect_timeout 30

router_id LVS_master

}

vrrp_script check_httpd {

#vrrp_script模块专门用于对集群中服务资源进行监控(HA集群监控)。于此模块一起使用的还有track_script模块,track_script模块主要是调用vrrp_script模块。还可以检查端口、shell语句检查、脚本检查。在附录下面演示

script "killall -O httpd"

#用killall -O httpd 查看httpd服务返回状态,如果是零则表示运行正常,为1则表示运行异常。

interval 2

#检查的时间间隔,单位为秒。

}

Vrrp配置(keepalived高可用配置)实例:

vrrp_instance VI_1 {

#标识,vrrp实例开始的标识

state MASTER

#定义主备角色master和backup

interface eth0

#指定监听网卡

virtual_router_id51

#虚拟路由标识,此标识主备不许相同。

priority 100

#优先级。数字越大优先级越高,在同一个vrrp-instance下master必须比backup优先级大

advert_int 1

#设置master与backup之间同步检查的时间间隔,单位是秒

authentication {

auth_type PASS

auth_pass 1111

#设定master和backup验证类型(AH、PASS)和密码,主备密码一致才能通信。

}

notify_master "/etc/keep/master.sh"

notify_backup "/etc/keep/backup.sh"

notify_fault "/etc/keep/fault.sh"

#指定当keepalived进入master、backup、fault状态时执行到脚本。脚本举例在附录下。

track_script {

check_httpd

}

#调用vrrp_script模块,check_httpd为vrrp_script模块后面跟的名字。

virtual_ipaddress {

192.168.1.250

#虚拟地址,可以设置多个。它是以ip address add的方式加入地址。

}

#nopreempt

#不抢占功能,此功能只能用在state状态是backup的节点上,而且这个节点优先级要高于其他节点

#preempt_delay 300

#抢占延迟时间,单位是秒。例如:网络有抖动master节点向backup节点发送探测包不及时实际master节点没有问题,无需主备切换。重启服务或重启系统也是如此。

}

----------------vrrp配置附录-----------------

-----------------------------------vrrp配置附录--------------------------------------------


notify_master "/etc/keep/master.sh" 脚本实例如下:

#!/bin/bash

logfile=/var/log/keep/keep-http-statsu.log

echo "[MASTER]" >>$logfile

date >> $logfile

backup.sh和fault.sh 略过。

端口检查:

vrrp_script check_httpd {

script "

#这个方式是定义了对本机的80端口的状态检查。

interval 2

#检查的时间间隔,单位为秒。

fall 2

#表示检查到失败的最大次数

rise 1

#表示检查到一次成功,则认为节点恢复正常。

}

shell语句检查:

vrrp_script check_httpd {

script "if [ -f /var/run/httpd/httpd.pid ];hten exit 0; else exit 1; fi"

# 检查pid文件是否存在,如果返回0表示正常,返回1则表示异常。

interval 2

#检查的时间间隔,单位为秒。

fall 2

#表示检查到失败的最大次数

rise 1

#表示检查到一次成功,则认为节点恢复正常。

}

vrrp_script需要track_script模块调用我在演示时省略,但是不要忘记在vrrp_instance配置实例中调用。

------------------------------------------------------------------------------------------

LVS(负载均衡)配置实例:

virtual_server 192.168.1.250 {

#LVS配置实例已virtual_server表示开始

delay_loop 6

#设置健康检查的间隔,单位是秒。

lb_algo rr

#负载调度算法,有rr(轮巡)、wrr(加权轮询)、lc、wlc、lblc、sh、dh等

lb_kind NAT

#负载均衡机制,有NAT、TUN、DR。

nat_mask255.255.255.0

#不知道是什么意思,后续在查。

persistence_timeout50

#同一IP的连接50秒内被分配到同一台realserver

persistence_granularity255.255.255.0

#此选项是配合persistence_timeout,如果后面写的是4个255就代表单个ip,如果是255.255.255.0则代表客户端所在的整个网段的请求都会分配到同一台real_server上。

protocol TCP

#指定转发协议类型有tcp和udp。

sorry_server192.168.1.120 80

#相当一个备用节点,当所有real_server节点失效则启用备用节点

real_server192.168.1.108 80 {

# real_server段的开始标识,后面跟着的是后端节点真实ip地址。Ip和端口用空格分开。

weight 1

#权重。数值越大权重越高。为性能高的节点分配高权重。合理使用节点

notify_up/root/keepalived/keepup.sh

notify_down/root/keepalived/keepdown.sh

#表示在检测到real_server节点是up或是down时执行的脚本。

HTTP_GET |SSL_GET {

#Http和SSL检测方式实例

url {

#可以指定多个URL

path /index.html

#后面跟详细的路径

digestff20ad2481f97b1754ef3e12ecd3a9cc

#SSl检查后的摘要信息,这个摘要信息可以通过ganhash命令工具获取。例如:ganhash -s192.168.1.108 -p 80 -u /。

status_code 200

#返回的结果是200状态码。

}

connect_port80

#健康检查的端口,如果不指定,默认是real_server指定的端口

bindto192.168.1.108

#通过此地址发送请求检查服务器健康状态。

connect_timeout 3

#无响应时间,单位是秒。

nb_get_retry 3

#重试次数

delay_before_retry 3

#重试次数的间隔。

}

}

}

----------------LVS配置附录-----------------

-------------------------------------lvs配置附录------------------------------------------

除了HTTP_GET 、SSL_GET这两个real_server健康状态检查外还有TCP_CHECK、MISC_CHECK、SMTP_CHECK这三个。

接下来演示TCP_CHECK(端口检查)、MISC_CHECK(外部程序检查也就是脚本检查)

TCP_CHECK{

connect_port80

#健康检查的端口,如果不指定,默认是real_server指定的端口

connect_timeout 3

#无响应时间,单位是秒。

nb_get_retry 3

#重试次数

delay_before_retry 3

#重试次数的间隔。

}

MISC_CHECK{

misc_path "/usr/local/bin/script.sh 1.1.1.180 http://www.baidu.com"

#指定脚本的执行路径,后面可以带参数。跟普通方式执行脚本相同。

misc_timeout 5

#设定脚本的超时时间

! misc_dynamic

#表示不启用节点动态调整real_server权重。

#如果启用并且返回码是零则表示检查正常,权重不变。如果是1则表示节点异常权重降为零。如果返回值是2-255之间的数字则用返回值减2。如:返回值是10,权重则是8(10-2)

/usr/local/bin/script.sh 脚本如下:

cat/usr/local/bin/check_squidproxy.sh 1.1.1.1 80 http://www.baidu.com

#!/bin/bash

if [ $#-ne 3 ];then

echo"Warning: check_command error."

exit 1

else

PROXY_IP=$1

PROXY_PORT=$2

CHECK_URL=$3

CMD=`/usr/bin/curl-I -x ${PROXY_IP}:${PROXY_PORT} "${CHECK_URL}" 2>/dev/null | grep"200 OK" | wc -l`

if [ ${CMD} -ne 1];then

echo"CRITCAL: check proxy ${PROXY_IP} failed."

exit 1

else

echo"OK: check proxy ${PROXY_IP} OK."

echo0

fi

fi


检查 节点 配置 脚本 端口 单位 时间 模块 实例 权重 状态 次数 附录 服务 健康 标识 优先级 地址 方式 分配 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 科技赋能下的互联网金融 互联网科技有限公司图片 美国互联网科技巨头监管 金融科技 互联网金融 合肥互联网科技公司 上海喔噻互联网科技 广州互联网络科技有限公司 奇酷互联网络科技公司 润盈互联网科技 互联网科技生活的内容 恒生科技互联网指数分析 互联网科技公司招聘 银川新华互联网科技职业技术培训学校图片 广州恒生互联网科技有限 互联网对科技的发展 科技互联网大厂 互联网科技公司实习生 互联网科技和法律行业 武汉亿视互联网科技有限公司 手冲咖啡和咖啡机区别 广东万易互联网科技有限公司惠州分公司 网络科技有限互联网 广州互联网络科技有限公司 互联网科技股午盘股票涨跌 银川新华互联网科技职业技术培训学校图片 深圳市罗太互联网科技有限公司 为客找房互联网科技公司怎么样 互联网大会出现的黑科技 颐高云石互联网科技
0