网站建设属于,网站开发和推广的不同,2017网站趋势,吉林省建设工程安管人员管理系统一.lvs概述
1.1什么是lvs LVS#xff08;Linux Virtual Server#xff09;是一个基于Linux操作系统的虚拟服务器技术#xff0c;用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上#xff0c;从而提高整体服务的处理能力和可靠性。LVS主要有两个组…一.lvs概述
1.1什么是lvs LVSLinux Virtual Server是一个基于Linux操作系统的虚拟服务器技术用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上从而提高整体服务的处理能力和可靠性。LVS主要有两个组件IPVSIP Virtual Server和LVS-NAT、LVS-DR、LVS-TUN三种工作模式。
1.2lvs的优点
高性能LVS工作在内核层性能高效能够处理大量并发请求。 高可用性通过配置Keepalived等工具LVS可以实现高可用性确保服务的持续运行。 灵活性强支持多种负载均衡算法和工作模式适应不同的应用场景。
二.lvs架构
2.1lvs整体架构
LVS的整体架构主要包括负载均衡器Load Balancer、后端服务器Real Server和客户端三部分。客户端的请求首先到达负载均衡器然后由负载均衡器根据一定的调度算法将请求转发到后端服务器进行处理处理结果再返回给客户端。
2.2lvs工作模式
LVS支持三种主要的工作模式
LVS-NATNetwork Address Translation在该模式下负载均衡器不仅需要修改请求报文的目标地址还需要修改响应报文的源地址适用于小规模集群。 LVS-DRDirect Routing在该模式下负载均衡器只修改请求报文的目标MAC地址而不修改IP地址后端服务器直接将响应报文发回客户端适用于大规模集群。 LVS-TUNIP Tunneling该模式通过IP隧道将请求转发到后端服务器后端服务器直接将响应报文发回客户端适用于地理位置分散的集群。
三.lvs调度算法
3.1调度算法类型
根据其调度时是否考虑各RS当前的负载状态被分为两种静态方法和动态方法。静态方法仅根据算法本身进行调度不考虑RS的负载情况。动态方法主要根据每RS当前的负载状态及调度算法进行调度。
3.2静态算法
1. 轮询Round RobinRR将请求依次分配给各个真实服务器依次循环。
2. 加权轮询Weighted Round RobinWRR给每个真实服务器设置一个权重根据权重的比例将请求分配给服务器。权重越高分配到的请求越多。
3.目标地址散列Destination Hashing, DH根据请求的目标 IP 地址进行哈希运算将请求分配到固定的服务器。
4.源地址散列Source Hashing, SH根据请求的源 IP 地址进行哈希运算将请求分配到固定的服务器。
3.3动态算法
1. 最少连接Least ConnectionsLC将新的请求分配给当前连接数最少的真实服务器。
2. 加权最少连接Weighted Least ConnectionsWLC为真实服务器设置权重综合考虑服务器的权重和当前连接数来分配请求。
3. 基于局部性的最少连接Locality-Based Least ConnectionsLBLC主要考虑请求的目标 IP 地址优先将请求分配给同一 IP 地址对应的真实服务器。
4. 带复制的基于局部性最少连接Locality-Based Least Connections with ReplicationLBLCR结合了 LBLC 和复制功能对于目标 IP 地址相同的请求如果对应的真实服务器没有活动连接则可以在有活动连接的真实服务器中选择一个并复制该连接。
四.lvs的nat模式 nat模式需要三个虚拟机完成实验。其中lvs需要两个网络适配器其中一个为nat模式一个为仅主机模式。而server1和server2均为仅主机模式。 配置ip
lvs主机
[rootlvs ~]# cat /etc/NetworkManager/system-connections/eth1.connection
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanualnmcli c reload
nmcli c up eth1
server1主机
[rootwebserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.10/24,192.168.0.100
methodmanualnmcli c reload
nmcli c up eth0
server2主机 [rootwebserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.20/24,192.168.0.100
methodmanualnmcli c reload
nmcli c up eth0在lvs主机打开配置
vim /etc/sysctl.conf
net.ipv4.ip_forwaed 1 #在最后一行添加 sysctl -p #使配置生效
下载ipvsadm
yum install ipvsadm 在lvs主机中配置规则 ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10 -m
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20 -mipvsadm -Ln
watch -n 1 ipvsadm -Ln --rate分别在server1和server2中配置 yum install httpd -y #都要下载httpdecho webserver1-192.168.0.10 /var/www/html/index.html #server1中配置echo webserver1-192.168.0.20 /var/www/html/index.html #server2中配置
结果 五.lvs的dr模式 lvs的dr模式需要五个虚拟机。其中客户端主机为nat模式。路由器主机需有两个网络适配器一个为nat模式一个为仅主机模式。其它三个均为仅主机模式。
配置ip
client [rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1172.25.254.200/24,172.25.254.100
methodmanualnmcli c reload
nmcli c up eth0router [rootrouter ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1172.25.254.100/24,172.25.254.2
dns114.114.114.114;
methodmanual[rootrouter ~]# cat /etc/NetworkManager/system-connections/eth1.connection
[connection]
ideth1
typeethernet
interface-nameeth1[ipv4]
address1192.168.0.100/24
methodmanualnmcli c reload
nmcli c up eth0
nmcli c up eth1
配置lvs‘主机vip使用环回来创建 [rootlvs ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.50/24,192.168.0.100
methodmanualnmcli connection reload
nmcli connection up eth0
[rootlvs ~]# ip addr add dev lo 192.168.0.200/32
配置server1主机vip使用环回来创建 [rootserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.10/24,192.168.0.100
methodmanualnmcli c reload
nmcli c up eth0[rootserver1 ~]# ip addr add dev lo 192.168.0.200/32
配置server2主机vip使用环回来创建 [rootserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.connection
[connection]
ideth0
typeethernet
interface-nameeth0[ipv4]
address1192.168.0.20/24,192.168.0.100
methodmanualnmcli c reload
nmcli c up eth0[rootserver2 ~]# ip addr add dev lo 192.168.0.200/32
修改Linux内核参数。server1和server2上面都要做 echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 /proc/sys/net/ipv4/conf/lo/arp_ignore 配置ipvsadm
在lvs主机上
ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2启用ip转发
在router上 vim /etc/sysctl.conf
net.ipv4.ip_forward 1 #在最后一行添加ipvsadm -p
配置web服务
在server1和server2上配置 yum install httpd -yecho 11111111 /var/www/html/index.html #server1中配置echo 22222222 /var/www/html/index.html #server2中配置
测试结果