目录

1. lvs负载均衡

lvs负载均衡

一、集群技术概述

1、集群技术类型

负载均衡集群, Load Balance LB

高可用集群, High Avalibility HA

2、负载均衡技术

3、高可用技术

避免关键业务的单点故障

通过优先级选择主备角色,主负责转发客户端流量 ,同时会向备发送心跳信息,备一段时间内接收不到心跳,会认为主宕机故障,自动会接替主的工作继续转发流量

二、负载均衡 LVS

1、LVS介绍

LVS Linux Virtual Service Linux虚拟服务

集成在内核中负载均衡模块

国内章文嵩博士研发

2、负载均衡策略/算法

1、rr 轮询, 解决会话持久的问题

2、wrr 加权轮询,为后端服务器设置不同的权重值

3、lc 最少连接

4、wlc 加权最少连接, 【默认】

5、sh 源hash,一段时间内, 同一个客户端的访问请求会转发到同一个后端服务器

3、LVS设计模式

  • NAT模式
    请求、响应都是要经过调度器
  • DR直接路由模式
    请求经过调度器,响应由后端服务器直接响应给客户端
  • TUN隧道模式

3.1 NAT模式的注意事项

1、VIP、DIP要属于两个不同的网络

2、负载均衡器要开启路由转发功能

3、所有real server的网关要指向DIP

3.2 DR 直接路由模式的注意事项

1、所有的real server必须要配置VIP,目的是为了可以正常接收请求

2、所有的real server修改两个参数

arp_ignore=1, 避免VIP产生冲突

arp_announce=2, 避免客户端直接访问后端的real server,失去负载均衡的效果

三、LVS nat模式的实现

1、确认后端服务器网关正确

bash 复制代码
[root@web01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.171.100 0.0.0.0         UG    100    0        0 ens33
192.168.171.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

网关指向DIP 

2、安装ipvsadm软件

bash 复制代码
[root@lvs ~]# yum install -y ipvsadm 

3、开启路由转发

bash 复制代码
[root@lvs ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1

[root@lvs ~]# sysctl -p

4、创建虚拟服务

bash 复制代码
[root@lvs ~]# ipvsadm -A -t 192.168.146.100:80 -s rr

5、添加后端real server

bash 复制代码
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.171.10:80 -m
[root@lvs ~]# ipvsadm -a -t 192.168.146.100:80 -r 192.168.171.20:80 -m

查看虚拟服务

bash 复制代码
[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.146.100:80 rr
  -> 192.168.171.10:80            Masq    1      0          0         
  -> 192.168.171.20:80            Masq    1      0          0      

6、测试访问

bash 复制代码
C:\Users\admin>curl 192.168.146.100
web02

C:\Users\admin>curl 192.168.146.100
web01

C:\Users\admin>curl 192.168.146.100
web02

C:\Users\admin>curl 192.168.146.100
web01

查看连接

bash 复制代码
[root@lvs ~]# ipvsadm -L -n -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:24  TIME_WAIT   192.168.146.1:57818 192.168.146.100:80 192.168.171.10:80
TCP 01:25  TIME_WAIT   192.168.146.1:57820 192.168.146.100:80 192.168.171.10:80
TCP 01:22  TIME_WAIT   192.168.146.1:57813 192.168.146.100:80 192.168.171.20:80
TCP 01:24  TIME_WAIT   192.168.146.1:57816 192.168.146.100:80 192.168.171.10:80
TCP 01:22  TIME_WAIT   192.168.146.1:57812 192.168.146.100:80 192.168.171.10:80
TCP 00:47  TIME_WAIT   192.168.146.1:57796 192.168.146.100:80 192.168.171.20:80
TCP 01:20  TIME_WAIT   192.168.146.1:57808 192.168.146.100:80 192.168.171.20:80
TCP 00:46  TIME_WAIT   192.168.146.1:57795 192.168.146.100:80 192.168.171.10:80
TCP 01:21  TIME_WAIT   192.168.146.1:57811 192.168.146.100:80 192.168.171.20:80

四、DR模式配置

1、所有real server配置VIP

bash 复制代码
[root@web01 ~]# ip addr add dev lo 192.168.140.100/32

32位掩码代码没有主机位,网络中只有这一个IP 

2、所有real server修改arp系统参数

bash 复制代码
[root@web01 ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@web01 ~]# sysctl -p

3、创建虚拟服务

bash 复制代码
[root@lvs ~]# ip addr add dev lo 192.168.140.100/32
[root@lvs ~]# 
[root@lvs ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.140.100/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
bash 复制代码
[root@lvs ~]# ipvsadm -A -t 192.168.140.100:80 -s rr

4、添加后端的real server

bash 复制代码
[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.11:80 -g 
[root@lvs ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.140.12:80 -g 

[root@lvs ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr
  -> 192.168.140.11:80            Route   1      0          0         
  -> 192.168.140.12:80            Route   1      0          0       

5、测试访问

bash 复制代码
C:\Users\admin>curl 192.168.140.100
web02

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web02

C:\Users\admin>curl 192.168.140.100
web01

五、持久性连接

一段时间内,同一个客户端请求会转发到同一个后端服务器

解决会话持久问题

bash 复制代码
[root@lvs ~]# ipvsadm -E -t 192.168.140.100:80 -s rr -p 300

[root@lvs ~]# ipvsadm -L -n 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.140.100:80 rr persistent 300
  -> 192.168.140.11:80            Route   1      0          0         
  -> 192.168.140.12:80            Route   1      0          0     
bash 复制代码
C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01

C:\Users\admin>curl 192.168.140.100
web01
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
Archie_IT14 分钟前
修图自由!自建IOPaint服务器,手机平板随时随地远程调用在线P图
运维·服务器·前端·git·深度学习·npm·conda
行思理29 分钟前
centos crontab 设置定时任务访问链接
linux·运维·centos
再玩一会儿看代码1 小时前
[特殊字符] 深入理解 WSL2:在 Windows 上运行 Linux 的极致方案
linux·运维·windows·经验分享·笔记·学习方法
bingbingyihao2 小时前
接口请求控制工具
java·nginx·负载均衡
我是小木鱼3 小时前
浅析Centos7安装Oracle12数据库
linux·运维·服务器·数据库
Pluto & Ethereal3 小时前
新手宝塔部署thinkphp一步到位
运维·服务器·阿里云·php·腾讯云
东枫落定3 小时前
泛微ECOLOGY9 记 数据展现集成 自定义开窗测试中对SQL 的IN语法转换存在BUG
运维·泛微·ecology9·自定义开窗·数据展示集成
wusam4 小时前
Linux系统管理与编程12: FTP服务配置
linux·运维·服务器
Thenunaoer4 小时前
【Ubutun】 在Linux Yocto的基础上去适配4G模块
linux·运维·chrome
无极程序员4 小时前
远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件
android·java·运维·服务器·php