一、概述
1、lvs
LVS是Linux Virtual Server的缩写,是一种基于Linux内核的高性能、高可用性的
负载均衡软件。它可以将多台服务器组成一个虚拟的服务器集群,通过负载均衡算法将
客户端请求分发到不同的服务器上,从而提高系统的可用性和性能。LVS支持多种负载
均衡算法,包括轮询、加权轮询、最少连接数等,同时还支持会话保持和健康检查等功
能。LVS是开源软件,广泛应用于互联网、电子商务、游戏等领域。
2、keepalived
keepalived是一个开源的高可用性软件,它可以在多个服务器之间提供负载均衡
和故障转移。它可以监控服务器的状态,并在服务器出现故障时自动将流量转移到其他
可用的服务器上,以确保服务的连续性和可用性。keepalived支持多种负载均衡算法,
包括轮询、加权轮询、最小连接数等。它还支持多种协议,包括TCP、HTTP、SMTP
等。keepalived可以在Linux和Unix操作系统上运行,并且可以与其他软件集成,如
HAProxy、Nginx等。
二、工作原理
lvs
1. 客户端向LVS发送请求,请求被LVS接收。
2. LVS根据负载均衡算法(如轮询、加权轮询、源地址哈希等)选择一台真实服务器。
3. LVS将请求转发给选中的真实服务器。
4. 真实服务器处理请求并将响应返回给LVS。
5. LVS将响应返回给客户端。
keepalived
1. keepalived在每个节点上运行,每个节点都有一个虚拟IP地址和一个实际IP地址。
2. 当主节点出现故障时,备份节点会接管主节点的虚拟IP地址,从而保证服务的高可用性。
3. keepalived使用VRRP协议来实现节点之间的通信和状态同步。VRRP协议定义了一个虚拟路由器,由多个节点共同维护,其中一个节点为主节点,其他节点为备份节点。
4. 主节点会定期发送VRRP广告包,告知其他节点自己的状态和优先级。备份节点会监听这些广告包,如果主节点出现故障或者优先级比备份节点低,备份节点会接管虚拟IP地址。
5. keepalived还支持健康检查功能,可以定期检查服务的可用性,如果服务不可用,就会将节点的优先级降低,从而避免将故障节点作为主节点。
三、准备工作
1、五台服务器
2、关闭防火墙
3、lvs主从服务器安装keepalived ipvsadm
4、web1 web2 服务器安装http
5、nfs文件共享服务器安装nfs
四、部署安装web服务(两台同时部署)
1、配置临时IP
cd /etc/sysconfig/network-scripts/ 进入网卡配置文件夹
cp ifcfg-lo ifcfg-lo:666 复制虚拟网卡配置文件
vim ifcfg-lo:666 配置虚拟网卡
DEVICE=lo:666 设备名称
IPADDR=192.168.1.234 虚拟网卡IP
NETMASK=255.255.255.255 虚拟网卡子网掩码
ONBOOT=yes 是否开机自启
NAME=loopback:666 虚拟网卡名称
systemctl restart network 重启网卡
route add -host 192.168.1.234/32 dev lo:666 添加本地回环
vim /etc/sysctl.conf 调整ARP参数
net.ipv4.conf.all.arp_ignore=1 表示当接收到ARP请求时,忽略所有接口的IP地址与请求中的目标IP地址不匹配的情况。
net.ipv4.conf.all.arp_announce=2 表示当发送ARP请求时,使用接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。
net.ipv4.conf.default.arp_ignore=1 表示当接收到ARP请求时,忽略默认接口的IP地址与请求中的目标IP地址不匹配的情况。
net.ipv4.conf.default.arp_announce = 2 表示当发送ARP请求时,使用默认接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。
net.ipv4.conf.lo.arp_ignore = 1 表示当接收到ARP请求时,忽略回环接口的IP地址与请求中的目标IP地址不匹配的情况。
net.ipv4.conf.lo.arp_announce=2 表示当发送ARP请求时,使用回环接口的IP地址作为源IP地址,并将目标IP地址设置为请求中的目标IP地址。
2、安装http
yum -y install httpd 安装http
echo "syh1" >/var/www/html/index.html 在首页文件中写入内容 方便测试
五、部署LVS主服务器
vim /etc/sysctl.conf 调整ARP参数
net.ipv4.conf.all.send_redirects = 0 禁止所有网络接口发送 ICMP 重定向报文
net.ipv4.conf.default.send_redirects=0 禁止默认网络接口发送 ICMP 重定向报文
net.ipv4.conf.ens33.send_redirects = 0 禁止名为 ens33 的网络接口发送 ICMP 重定向报文
touch /etc/sysconfig/ipvsadm 创建lvs负载均衡配置文件
yum install -y keepalived ipvsadm 安装keepalived ipvsadm
vim /etc/keepalived/keepalived.conf 进入keepalived配置文件
global_defs {
router_id LVS_DEVEL1 指定了LVS的路由器ID
}
vrrp_instance master { 定义了一个VRRP,用于实现高可用性
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { 指定了虚拟IP地址
192.168.1.234
}
}
virtual_server 192.168.1.234 80 { 定义了一个虚拟服务器,用于实现负载均衡
delay_loop 6 指定了LVS的延迟时间,lb_algo指定了负载均衡算法
lb_algo rr
lb_kind DR 指定了负载均衡的方式,protocol指定了虚拟服务器使用的协议
#persistence_timeout 50
protocol TCP
real_server 192.168.1.211 80 { 定义了实际的服务器
weight 1 指定了服务器的权重
HTTP_GET { 指定了健康检查的方式
url { url指定了健康检查的URL路径
path /
}
connect_timeout 3 指定了连接超时时间
nb_get_retry 3 指定了重试次数
delay_before_retry 3 指定了重试前的延迟时间
}
}
real_server 192.168.1.220 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
六、部署lvs备份服务器
vim /etc/sysctl.conf 调整ARP参数
net.ipv4.conf.all.send_redirects = 0 禁止所有网络接口发送 ICMP 重定向报文
net.ipv4.conf.default.send_redirects=0 禁止默认网络接口发送 ICMP 重定向报文
net.ipv4.conf.ens33.send_redirects = 0 禁止名为 ens33 的网络接口发送 ICMP 重定向报文
touch /etc/sysconfig/ipvsadm 创建lvs负载均衡配置文件
yum install -y keepalived ipvsadm 安装keepalived ipvsadm
vim /etc/keepalived/keepalived.conf 进入keepalived配置文件
global_defs {
router_id LVS_DEVEL2 这个地方需要将ID修改为2
}
vrrp_instance master {
state backup 将这里修改为备份服务器
interface ens33
virtual_router_id 51
priority 99 将这里修改为99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.234
}
}
virtual_server 192.168.1.234 80 {
delay_loop 6
lb_algo rr
lb_kind DR
#persistence_timeout 50
protocol TCP
real_server 192.168.1.211 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.220 80 {
weight 1
HTTP_GET {
url {
path /
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
七、测试
systemctl start keepalived 启动keepalived
systemctl start ipvsadm 启动ipvsadm
modprobe ip_vs 加载ip_vs模块
ipvsadm -ln 查看lvs节点状态