实现LVS+Keepalived高可用

一 LVS

1.1 lvs提供了多种调度算法

轮询调度(Round-Robin Scheduling)
加权轮询调度(Weighted Round-Robin Scheduling)
最小连接调度(Least-Connection Scheduling)
加权最小连接调度(Weighted Least-Connection Scheduling)
基于局部性的最少链接(Locality-Based Least Connections  Scheduling)
带 复 制 的 基 于 局 部 性 最 少 链 接  Locality-Based Least  Connections with Replication Scheduling
目标地址散列调度(Destination Hashing Scheduling)
源地址散列调度(Source Hashing Scheduling)
最短预期延时调度(Shortest Expected Delay Scheduling)
不 排 队 调 度 ( Never Queue Scheduling )对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

1.2 lvs三种转发规则

NAT:简单理解,就是数据进出都通过 LVS,性能不是很好。
TUNL:简单理解:隧道 
DR:最高效的负载均衡规则 

1.3 lvs 的体系结构

最底端的数据共享存储层,用 Shared Storage 表示
最前端的负载均衡层,用 Load Balancer 表示
中间的服务器集群层,用 Server Array 表示
在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服 务器提供的高性能服务

二 keepAlived 是什么?

因为所有的请求都要经过负载均衡,所以负载均衡必然是非常重要,不 能挂掉,说白了就是要 keep the lvs alived。
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

2.1 工作原理

Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层.
原理如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器
,发送一个ICMP的数据包(既我们平时用的Ping程序).
如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除.
这种情况的典型例子是某台服务器被非法关机。

Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。
Layer4主要以TCP端口的状态来决定服务器工作正常与否。
如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,
则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。
如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。
该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。
此功能使您能够检查应用程序服务器是否正常工作。
MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

2.2 lvs 的优点

抗负载能力强,因为 lvs 工作方式的逻辑是非常之简单,而且工作在网络 4 层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。
有完整的双机热备方案,当节点出现故障时,lvs 会自动判别,所以系统整体是非常稳定的。
基本上能支持所有应用,因为 lvs 工作在 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等等。

2.3 lvs 负载均衡机制

lvs 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之上
传输层上有 TCP/UDP,lvs 支持 TCP/UDP 的负载均衡
因为 LVS 是四层负载均衡,因此它相对于其它高层负载均衡的解决办法, 
比如 DNS 域名轮流解析、应用层负载的调度、客户端的调度等,它的效 率是非常高的

lvs 的转发可以通过修改 IP 地址实现(NAT 模式)
lvs 的转发还可以通过修改直接路由实现(DR 模式)

三 进行配置

3.1 环境准备

一:调度器两台(双机热备)
系统:Linux—CentOS 6
IP地址:192.168.9.45(主 )
IP地址:192.168.9.46(备 )
二:Web服务器两台
系统:Linux—CentOS 6
IP地址:192.168.8.216(web01 )
IP地址:192.168.8.218(web02)

三:win10测试 客户端
内网一台就可以。

3.2 用Keepalived搭建双机热备

第一步:配置主服务器的ipvsadm和keepalived

[root@dd01 ~]# modprobe ip_vs  //加载ip_vs模块
[root@dd01 ~]# yum install ipvsadm -y  //安装管理软件ipvsadm
[root@dd01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
//安装编译工具与插件
#将keepalived上传到目录中
[root@01 ~]# tar xzvf keepalived-1.2.13.tar.gz 
[root@01 ~]# cd keepalived-1.2.13/
[root@01 keepalived-1.2.13]# ./configure --prefix=/ 
[root@01 keepalived-1.2.13]# make && make install 
[root@01 keepalived-1.2.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/ 
 //加入系统管理服务,如果init.d已存在,那么就不需要复制
[root@01 keepalived-1.2.13]# systemctl enable keepalived 
//开机自启动

[root@01 keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf
//编辑配置文件

! Configuration File for keepalived
global_defs {
router_id LVS_01 //本服务器的名称
}
vrrp_instance VI_1 { //定义VRRP热备实例
state MASTER //热备状态,MASTER表示主服务器,BACKUP表示从服务器
interface eth1 //承载VIP地址的物理接口
virtual_router_id 51 //虚拟路由器的ID号,每个热备组保持一致
priority 110 //优先级,数值越大优先级越高
advert_int 1 //通告间隔秒数(心跳频率)
authentication { //热备认证信息,每个热备组保持一致
auth_type PASS //认证类型
auth_pass 123456 //密码字符串
}
virtual_ipaddress { //指定漂移地址(VIP),可以有多个
192.168.9.145
}
}
virtual_server 192.168.9.145 80 { //虚拟服务器地址(VIP)、端口
delay_loop 6 //健康检查的间隔时间(秒)
lb_algo rr //轮询(rr)调度算法
lb_kind DR //直接路由(DR)群集工作模式
persistence_timeout 60 //连接保持时间(秒)
protocol TCP //应用服务器采用的是TCP协议
real_server 192.168.8.216 80 { //第一个Web服务器节点的地址、端口
weight 1 //节点的权重
TCP_CHECK { //健康检查方式
connect_port 80 //检查的目标端口
connect_timeout 5 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 3 //重试间隔
}
}
real_server 192.168.8.218 80 { //第二个Web服务器节点的地址、端口
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@dd01 keepalived]# service keepalived start ##启动服务
[root@dd01 keepalived]# ip addr show dev eth1 //验证绑定了的虚拟地址
[root@localhost keepalived]# ip addr show dev eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:9f:07:31 brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.45/22 brd 192.168.11.255 scope global eth1
    inet 192.168.9.145/32 scope global eth1
    inet6 fe80::20c:29ff:fe9f:731/64 scope link 
       valid_lft forever preferred_lft forever

[root@dd01 keepalived-1.4.2]# ipvsadm –L //查看LVS虚拟服务器
在这里插入图片描述

第二步:配置从服务器

和主调度器 192.168.8.146 一样的步骤
vi /etc/keepalived/keepalived.conf //编辑配置文件

! Configuration File for keepalived
global_defs {
router_id LVS_02
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.9.145
}
}
virtual_server 192.168.9.145 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.8.216 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.8.218 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}

[root@dd02 keepalived]# service keepalived start
[root@dd02 keepalived]# ipvsadm –L

第三步:验证结果

主服务器keepalived服务开启状态,验证从服务器状态
[root@dd02 keepalived-1.4.2]# ip addr show dev eth1
在这里插入图片描述

模拟主服务器故障,将dd01主服务器keepalived服务关闭,验证dd02从服务器状态
状态如下
在这里插入图片描述
双机热备搭建完成

扫描二维码关注公众号,回复: 10768775 查看本文章

3.3 配置Web节点服务器

第一步:配置192.168.8.216 192.168.8.218 配置nginx服务,可以正常访问。
这里就不写了。
在这里插入图片描述

第二步: 进行DR配置,分别在两台web服务器上进行配置

#!/bin/bash
#Author:zhang
#Date:2020.3
vip=192.168.9.145
mask='255.255.255.255'
dev=lo:1
case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask #broadcast $vip up
    route add -host $vip dev $dev
    echo "The RS Server is Ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "The RS Server is Canceled!"
    ;;
*) 
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;
esac
sysctl -p &>/dev/null

ifconfig //查看虚拟接口
在这里插入图片描述

3.4 测试LVS+Keepalived高可用群集

在客户端的浏览器中,能够通过LVS+Keepalived群集的漂移地址(192.168.80.100)正常访问web页面内容,则验证群集构建成功。

验证两台Web服务器轮询工作
客户端访问http://192.168.8.145
//由于设置了连接保持时间为60秒,一分钟后再重新访问该地址

//自动轮询交给另一台Web服务器

3.5 模拟主调度器故障,验证结果

[root@dd01 keepalived-1.4.2]# systemctl stop keepalived
//主调度器keepalived停止工作

//从调度器自动切换,继续工作
加粗样式
访问http://192.168.9.145,查看结果
在这里插入图片描述
//双机热备显示运行。

四 模拟Web服务器故障

[root@bb ~]# service nginx stop
访问http://192.168.9.145
在这里插入图片描述
可以看到是成功的。

最后
LVS+Keepalived已成功搭建并测试完成

发布了77 篇原创文章 · 获赞 0 · 访问量 3232

猜你喜欢

转载自blog.csdn.net/liaowunonghen/article/details/105069272