阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LVS+Keepalived使用总结

471次阅读
没有评论

共计 17337 个字符,预计需要花费 44 分钟才能阅读完成。

一、lvs 简介和推荐阅读的资料 二、lvs 和 keepalived 的安装 三、LVS VS/DR 模式搭建 四、LVS VS/TUN 模式搭建 五、LVS VS/NAT 模式搭建 六、keepalived 多种 real server 健康检测实例 七、lvs 持久性工作原理和配置 八、lvs 数据监控 九、lvs+keepalived 故障排除

一、LVS 简介和推荐阅读的资料

      学习 LVS+Keepalived 必须阅读的三个文档。

1、《Keepalived 权威指南》下载见 http://www.linuxidc.com/Linux/2012-05/60951.htm

2、《LVS 手册》http://www.linuxidc.com/Linux/2016-03/129233.htm

3、《Red_Hat_Enterprise_Linux-5-Virtual_Server_Administration-zh-CN》http://www.linuxidc.com/Linux/2016-03/129234.htm

这三个文档是官方文档,介绍了大部分原理和基础知识。下面我主要记录一些使用的案例,方便查阅。

LVS/DR + Keepalived 搭建负载均衡集群 http://www.linuxidc.com/Linux/2015-06/118647.htm

LVS+Keepalived 实现四层负载及高可用  http://www.linuxidc.com/Linux/2015-02/112695.htm

LVS+Keepalived 高可用负载均衡集群架构实验  http://www.linuxidc.com/Linux/2015-01/112560.htm

Heartbeat+LVS 构建高可用负载均衡集群  http://www.linuxidc.com/Linux/2014-09/106964.htm

搭建 LVS 负载均衡测试环境  http://www.linuxidc.com/Linux/2014-09/106636.htm

一个针对 LVS 的压力测试报告 http://www.linuxidc.com/Linux/2015-03/114422.htm

      他们负责什么工作?

在 LVS+Keepalived 环境里面,lvs 主要的工作是提供调度算法,把客户端请求按照需求调度在 real 服务器,keepalived 主要的工作是提供 lvs 控制器的一个冗余,并且对 real 服务器做健康检查,发现不健康的 real 服务器,就把它从 lvs 集群中剔除,real 服务器只负责提供服务。

二、lvs 和 keepalived 的安装

      环境规划

      2*(lvs+keepalived 服务器)+n*real-server,一般 lvs+keepalived 是这样的架构。

      开始安装

1、下载软件包

在 http://www.linuxvirtualserver.org/ 下载 lvs 的软件包

在 http://www.keepalived.org/ 下载 keepalived 软件包

2、先编译安装 lvs,再安装 keepalived,安装 lvs 需要内核源码

下载 lvs 源码的时候,一定要选择你内核版本对应的源码包。

# uname  -r
2.6.18-164.el5PAE
#yum install kernel-devel -y  // 安装内核源码包
#ln -s /usr/src/kernels/2.6.18-164.el5PAE-i686/ /usr/src/linux
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz  //ipvsadm 包就是 lvs 软件包,别觉得名字不一样
# tar -zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
#make && make install

检查 lvs 是否安装成功:

#ipvsadm // 查看是否有输出

#lsmod | grep ip_vs  // 如果 ipvsadm 有输出,那么使用这个命令查看是否加载 ip_vs 模块,如果加载,那么 lvs 算安装成功。

2、编译安装 keepalived,一定在安装完 lvs 以后在安装 keepalive

#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz // 不建议选择最新的版本
#tar -zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/  --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/linux/
Keepalived version       : 1.1.15
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : Nod

 

看见如上输入,注意 yes 和 no 的值,如果一样,证明配置成功,如果 lvs 为 no,那么证明你的 lvs 没有安装成功,需要从新安装 lvs 再安装 keepalived。

#make && make install

如果没有报错,那么就安装成功了,检查一下是否生成了 keepalived 命令。

三、LVS VS/DR 模式搭建

环境介绍

主机 IP

角色

安装软件

122.225.32.134

Lvs+keepalived MASTER

Ipvsadm keepalived

122.225.32.135

Lvs+keepalived BACKUP

Ipvsadm keepalived

122.225.32.136

Real server

Lvs_real 脚本

122.225.32.137

Real server

Lvs_real 脚本

122.225.32.142

VIP

 

注意:所有机器都在一个交换机,并且在一个网段。

1、在 134 和 135 上安装 ipvsadm 和 keepalived 软件。

2、修改 keepalived 的配置文件

122.225.32.134

# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {lr@isadba.com}
   notification_email_from lvs@isadba.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {122.225.32.142}
}
virtual_server 122.225.32.142 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0             // 此值为 0,主要是为了方便测试,每次刷新页面结果会不一样
    protocol TCP
    real_server 122.225.32.136 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 122.225.32.137 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 

122.225.32.135

和 122.225.32.134 相比,值需要删除 state MASTER 和 修改priority 的值小于 master 的。

real server

在所有 real server 上添加下面脚本,名执行# cat  /sbin/lvs_real

#!/bin/bash
#description:start realserver
vip=122.225.32.157
source /etc/rc.d/init.d/functions
case $1 in
start)
        echo "Start Realserver"
        /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
        echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
        echo "Stop Realserver"
        /sbin/ifconfig lo:0 down
        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
        echo "Usage: $0 (start | stop)"
exit 1
esac

执行脚本以后,使用 ip add 命令查看 lo 接口是否添加了虚拟 ip 地址。

当然,real server 上面需要安装 http 服务,并启动,在 index.html 里面添加自己的 IP 地址,方便客户端访问时候辨别访问的是哪个主机。

3、配置完成以后,开始测试:

在 122.225.32.134 和 122.225.32.135 上使用 ip add 检查,虚拟 IP 应该配置在 134 上面。

测试 1{主要测试 lvs}:访问虚拟 IP 是否可以访问真实服务器,是否轮询 real server

在 master 上使用 ipvsadm 命令查看 lvs 状态。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          0        
  -> 122.225.32.136:http          Route   1      0          0

在客户端访问虚拟 IP 122.225.32.142,看是否可以访问。每次刷新,应该会换一个 real server。访问数次后,通过 ipvsadm 观察 lvs 状态。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          6        
  -> 122.225.32.136:http          Route   1      0          6

测试 2{主要测试 keepalived}:lvs 服务器的 HA,当 keepalived master 挂掉后,keepalived backup 会不会接管虚拟 IP。

关闭 master 主机上的 keepalived 进程。

在 backup 上 ip add 查看是否添加虚拟 IP,通过 /var/log/message 查看相关转换日志。

 

测试 3{测试 backup 的 lvs}:使用客户端访问现在虚拟 ip,查看是否一切正常

      测试完成后,开启 master 的 keepalived 进程,等虚拟 ip 转移到 master 以后,在从客户端访问,查看是否存在问题。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/129232p2.htm

四、LVS VS/TUN 模式搭建

环境介绍

主机 IP

角色

安装软件

122.225.32.134

Lvs+keepalived MASTER

Ipvsadm keepalived

122.225.32.135

Lvs+keepalived BACKUP

Ipvsadm keepalived

122.225.32.155

Real server

 

122.225.32.156

Real server

 

122.225.32.142

VIP

 

注意:虚拟 ip,master 和 backup 在同意网段和交换机,realserver 在不同网段,但是同属于外网 IP

1、在 134 和 135 上安装 ipvsadm 和 keepalived 软件。

2、修改 keepalived 的配置文件

122.225.32.134

 # cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {lr@isadba.com}
   notification_email_from lvs@isadba.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {122.225.32.142}
}
virtual_server 122.225.32.142 80 {
    delay_loop 6
    lb_algo rr
    lb_kind TUN
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 122.225.32.155 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 122.225.32.156 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 

122.225.32.135

和 122.225.32.134 相比,值需要删除 state MASTER 和 修改priority 的值小于 master 的。

 

real server

在所有 real server 上添加下面脚本,名执行。

# cat /sbin/lvs_real_tun
#!/bin/sh
# description: Config realserver tunl port and apply arp patch
VIP=122.225.32.142
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "Tunl port starting"
ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev tunl0
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
echo "Tunl port closing"
ifconfig tunl0 down
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0" {start|stop}
exit 1
esac

3、配置完成以后,开始测试:

测试方法和 DR 方法一样。

 

五、LVS VS/NAT 模式搭建

环境介绍

主机 IP

角色

安装软件

122.225.32.134

Lvs+keepalived MASTER

Ipvsadm keepalived

122.225.32.135

Lvs+keepalived BACKUP

Ipvsadm keepalived

10.1.1.9

Real server

Lvs_real 脚本

10.1.1.10

Real server

Lvs_real 脚本

122.225.32.142

VIP eth0

外网虚拟 IP

10.1.1.118

VIP eth1

内网虚拟 IP

注意:所有机器都在一个交换机,并且在一个网段,LVS 服务器端最好开启数据包转发 net.ipv4.ip_forward。

1、在 134 和 135 上安装 ipvsadm 和 keepalived 软件。

2、修改 keepalived 的配置文件

注意:这里由于需要内外网 IP 的同时漂移,所以需要用到 vrrp 同步组,并且需要同时开启两个 vrrp 实例。

122.225.32.134

经过上面的配置,大家应该比较熟悉了,相对于 TUN 和 DR 模式,NAT 的配置文件主需要做一下修改。

! Configuration File for keepalived
global_defs {
   notification_email {lr@isadba.com}
   notification_email_from lvs@isadba.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_sync_group G1 {
  group {
    VI_1
    VI_2
  }
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {122.225.32.142}
}
vrrp_instance VI_2 {
    state MASTER
    interface eth1
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {10.1.1.118}
}
virtual_server 122.225.32.142 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 10.1.1.251 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 10.1.1.8 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

122.225.32.135

和 122.225.32.134 相比,值需要删除 state MASTER 和 修改priority 的值小于 master 的。

real server

10.1.1.9 和 10.1.1.10 的网关需要指定的 lvs 的内网虚拟 IP 也就是 10.1.1.118,不需要其他设置。

 

六、keepalived 多种 real server 健康检测实例

keepalived 对 lvs 的 real server 检测方式主要有以下几种,HTTP_GET,SSL_GET,TCP_CHECK,SMTP_CHECK,MISC_CHECK.

其中 TCP_CHECK 是最常用的方式,一般内容在 keepalived 手册中都可以查到,值得提一下的就是关于 digest 和 genhash 的用法。

HTTP_GET | SSL_GET {
url {
path /
digest <string> ##genssh 工具算出的。status_code 200
}
connect_port 80
bindto <IPADD>
connect_timeout 10
nb_get_retry 3
delay_before_retry 2
}

 

这里需要注意的就是 digest 的值如何算,一般在安装 keepalived 后,会生成一个 genhash 的工具。

可以使用

#genhash -h 查看帮助

常见的使用方法如下

# genhash  -s 10.1.1.8 -p 80 -u index.html 如果你是 ssl 连接,需要加 -S 参数,算出的值贴到配置文件中就可以了。

 

七、lvs 持久性工作原理和配置

一、LVS 持久连接技术

lvs 的持久性连接有两方面。

1、把同一个 client 的请求信息记录到 lvs 的 hash 表里,保存时间使用 persistence_timeout 控制,单位为秒。persistence_granularity 参数是配合 persistence_timeout 的,在某些情况特别有用,他的值是子网掩码,表示持久连接的粒度,默认是 255.255.255.255,也就是单独的 client ip,如果改成,255.255.255.0 就是 client ip 一个网段的都会被分配到同一个 real server。

2、一个连接创建后空闲时的超时时间,这个时间为 3 种

a、tcp 的空闲超时时间

b、lvs 收到客户端 tcp fin 的超时时间

c、udp 的超时时间

如何查看这些值?

# ipvsadm  // 可以查看连接空闲的超时时间,红色标记。

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port          Forward Weight ActiveConn InActConn

TCP  122.225.32.142:http rr persistent 10

-> 122.225.32.137:http          Route  1      0          1

-> 122.225.32.136:http          Route  1      0          0

# ipvsadm -l –timeout  // 查看 tcp tcpfin udp 的超时时间

Timeout (tcp tcpfin udp): 900 120 300

他们是如何工作的?

我们通过

# ipvsadm -Lcn

IPVS connection entries

pro expire state      source            virtual            destination

TCP 00:57  NONE        110.184.96.173:0  122.225.32.142:80  122.225.32.136:80

TCP 01:57  FIN_WAIT    110.184.96.173:54568 122.225.32.142:80  122.225.32.136:80

当一个 client 访问 vip 的时候,ipvs 或记录一条状态为 NONE 的信息,红色的值的初始值是 persistence_timeout 的值,然后根据时钟主键变小,在以下记录存在期间,同一 client ip 连接上来,都会被分配到同一个后端。

FIN_WAIT 的值就是 tcp tcpfin udp 的超时时间,当 NONE 的值为 0 时,如果 FIN_WAIT 还存在,那么 NONE 的值会从新变成 60 秒,再减少,直到 FIN_WAIT 消失以后,NONE 才会消失,只要 NONE 存在,同一 client 的访问,都会分配到统一 real server。

 

如何设置这些值?

persistence_timeout 可以通过以下两种方法设置

1、ipvsadm -A -t 192.168.20.154:80 -s rr -p 60

注意:上面命令中红色标记的 80 端口,表示同一客户端访问服务器的 80 端口,会被定义到同一个 real server,如果把 80 端口改为 0,那么同一客户端访问服务器的任何服务都会被转发到同一 real server。

2、修改 keepalived 配置文件在虚拟服务器配置下面加入 persistence_timeout 60

 

tcp tcpfin udp 的配置

#ipvsadm –set tcp tcpfin udp

# ipvsadm –set 120 50 50 // 实例

建议:tcpfin 的值最好小于 persistence_timeout 的值,这样比较方便计算。

lvs 持久性参考资料:

http://www.linuxvirtualserver.org/docs/persistence.html

二、防火墙标记

http://www.linuxidc.com/Linux/2016-03/129235.htm

三、conn_syncd

lvs 负载调度器在进行切换的时候,还是会影响服务的,因为备用的调度器上没有已经建立的连接信息,当这些已经建立的连接通过备用的调度器的时候,连接会被 reset 掉,从而导致连接中断,这个时候就该 conn_syncd 上场了。详细信息请参见(http://www.linuxvirtualserver.org/docs/sync.html),lvs 中文手册也提到过这个问题。

解决方案:

Here is simple intructions to use IPVS connection synchronization. On the primary load balancer, run
#ipvsadm --start-daemon=master --mcast-interface=eth0
On the backup load balancers, run
#ipvsadm --start-daemon=backup --mcast-interface=eth0
To stop the daemon, run
#ipvsadm --stop-daemon

注意:这个命令需要手工启用,并且如果主 lvs 挂掉,切换到备用的时候,连接信息是同步的,但是主恢复,抢占 vip 后,连接信息是不会被反同步回去的。配置不抢占是使用 nopreempt,只能配置在 backup 状态的主机,并且优先级必须比另外一台高,也就是配置在主 lvs 上,但是主 lvs 不能配置 state master 值。

八、lvs 数据监控

可以使用 lvs-rrd 工具和 cacti 来监控,具体请 google。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129232.htm

一、lvs 简介和推荐阅读的资料 二、lvs 和 keepalived 的安装 三、LVS VS/DR 模式搭建 四、LVS VS/TUN 模式搭建 五、LVS VS/NAT 模式搭建 六、keepalived 多种 real server 健康检测实例 七、lvs 持久性工作原理和配置 八、lvs 数据监控 九、lvs+keepalived 故障排除

一、LVS 简介和推荐阅读的资料

      学习 LVS+Keepalived 必须阅读的三个文档。

1、《Keepalived 权威指南》下载见 http://www.linuxidc.com/Linux/2012-05/60951.htm

2、《LVS 手册》http://www.linuxidc.com/Linux/2016-03/129233.htm

3、《Red_Hat_Enterprise_Linux-5-Virtual_Server_Administration-zh-CN》http://www.linuxidc.com/Linux/2016-03/129234.htm

这三个文档是官方文档,介绍了大部分原理和基础知识。下面我主要记录一些使用的案例,方便查阅。

LVS/DR + Keepalived 搭建负载均衡集群 http://www.linuxidc.com/Linux/2015-06/118647.htm

LVS+Keepalived 实现四层负载及高可用  http://www.linuxidc.com/Linux/2015-02/112695.htm

LVS+Keepalived 高可用负载均衡集群架构实验  http://www.linuxidc.com/Linux/2015-01/112560.htm

Heartbeat+LVS 构建高可用负载均衡集群  http://www.linuxidc.com/Linux/2014-09/106964.htm

搭建 LVS 负载均衡测试环境  http://www.linuxidc.com/Linux/2014-09/106636.htm

一个针对 LVS 的压力测试报告 http://www.linuxidc.com/Linux/2015-03/114422.htm

      他们负责什么工作?

在 LVS+Keepalived 环境里面,lvs 主要的工作是提供调度算法,把客户端请求按照需求调度在 real 服务器,keepalived 主要的工作是提供 lvs 控制器的一个冗余,并且对 real 服务器做健康检查,发现不健康的 real 服务器,就把它从 lvs 集群中剔除,real 服务器只负责提供服务。

二、lvs 和 keepalived 的安装

      环境规划

      2*(lvs+keepalived 服务器)+n*real-server,一般 lvs+keepalived 是这样的架构。

      开始安装

1、下载软件包

在 http://www.linuxvirtualserver.org/ 下载 lvs 的软件包

在 http://www.keepalived.org/ 下载 keepalived 软件包

2、先编译安装 lvs,再安装 keepalived,安装 lvs 需要内核源码

下载 lvs 源码的时候,一定要选择你内核版本对应的源码包。

# uname  -r
2.6.18-164.el5PAE
#yum install kernel-devel -y  // 安装内核源码包
#ln -s /usr/src/kernels/2.6.18-164.el5PAE-i686/ /usr/src/linux
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz  //ipvsadm 包就是 lvs 软件包,别觉得名字不一样
# tar -zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
#make && make install

检查 lvs 是否安装成功:

#ipvsadm // 查看是否有输出

#lsmod | grep ip_vs  // 如果 ipvsadm 有输出,那么使用这个命令查看是否加载 ip_vs 模块,如果加载,那么 lvs 算安装成功。

2、编译安装 keepalived,一定在安装完 lvs 以后在安装 keepalive

#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz // 不建议选择最新的版本
#tar -zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/  --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/linux/
Keepalived version       : 1.1.15
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
Use VRRP Framework       : Yes
Use LinkWatch            : No
Use Debug flags          : Nod

 

看见如上输入,注意 yes 和 no 的值,如果一样,证明配置成功,如果 lvs 为 no,那么证明你的 lvs 没有安装成功,需要从新安装 lvs 再安装 keepalived。

#make && make install

如果没有报错,那么就安装成功了,检查一下是否生成了 keepalived 命令。

三、LVS VS/DR 模式搭建

环境介绍

主机 IP

角色

安装软件

122.225.32.134

Lvs+keepalived MASTER

Ipvsadm keepalived

122.225.32.135

Lvs+keepalived BACKUP

Ipvsadm keepalived

122.225.32.136

Real server

Lvs_real 脚本

122.225.32.137

Real server

Lvs_real 脚本

122.225.32.142

VIP

 

注意:所有机器都在一个交换机,并且在一个网段。

1、在 134 和 135 上安装 ipvsadm 和 keepalived 软件。

2、修改 keepalived 的配置文件

122.225.32.134

# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {lr@isadba.com}
   notification_email_from lvs@isadba.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {122.225.32.142}
}
virtual_server 122.225.32.142 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0             // 此值为 0,主要是为了方便测试,每次刷新页面结果会不一样
    protocol TCP
    real_server 122.225.32.136 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 122.225.32.137 80{
        weight 1
        TCP_CHECK {
            connect_port    80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

 

122.225.32.135

和 122.225.32.134 相比,值需要删除 state MASTER 和 修改priority 的值小于 master 的。

real server

在所有 real server 上添加下面脚本,名执行# cat  /sbin/lvs_real

#!/bin/bash
#description:start realserver
vip=122.225.32.157
source /etc/rc.d/init.d/functions
case $1 in
start)
        echo "Start Realserver"
        /sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
        echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
        echo "Stop Realserver"
        /sbin/ifconfig lo:0 down
        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
        echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
        echo "Usage: $0 (start | stop)"
exit 1
esac

执行脚本以后,使用 ip add 命令查看 lo 接口是否添加了虚拟 ip 地址。

当然,real server 上面需要安装 http 服务,并启动,在 index.html 里面添加自己的 IP 地址,方便客户端访问时候辨别访问的是哪个主机。

3、配置完成以后,开始测试:

在 122.225.32.134 和 122.225.32.135 上使用 ip add 检查,虚拟 IP 应该配置在 134 上面。

测试 1{主要测试 lvs}:访问虚拟 IP 是否可以访问真实服务器,是否轮询 real server

在 master 上使用 ipvsadm 命令查看 lvs 状态。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          0        
  -> 122.225.32.136:http          Route   1      0          0

在客户端访问虚拟 IP 122.225.32.142,看是否可以访问。每次刷新,应该会换一个 real server。访问数次后,通过 ipvsadm 观察 lvs 状态。

# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  122.225.32.142:http rr
  -> 122.225.32.137:http          Route   1      0          6        
  -> 122.225.32.136:http          Route   1      0          6

测试 2{主要测试 keepalived}:lvs 服务器的 HA,当 keepalived master 挂掉后,keepalived backup 会不会接管虚拟 IP。

关闭 master 主机上的 keepalived 进程。

在 backup 上 ip add 查看是否添加虚拟 IP,通过 /var/log/message 查看相关转换日志。

 

测试 3{测试 backup 的 lvs}:使用客户端访问现在虚拟 ip,查看是否一切正常

      测试完成后,开启 master 的 keepalived 进程,等虚拟 ip 转移到 master 以后,在从客户端访问,查看是否存在问题。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/129232p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计17337字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984145
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...