• Linux虚拟服务器LVS了解使用


    Linux虚拟服务器(LVS)了解使用

    LVS术语

    DIP:调度器连接后端节点服务器的IP地址
    VIP:虚拟IP地址一公布给用户访问的虚拟IP地址
    RIP:真实IP地址一集群节点上使用的IP地址
    Director Server: 调度服务器,将负载分发到RealServer的服务器
    Real Server: 真实服务器,真正提供应用服务的服务器
    
    • 1
    • 2
    • 3
    • 4
    • 5

    LVS工作模式

    NAT -通过网络地址转换实现的虚拟服务器,-大并发访问时,调度器的性能成为瓶颈
    DR  -直接使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意忽略MAC地址广播
    TUN -通过隧道方式实现虚拟服务器
    
    • 1
    • 2
    • 3

    LVS目前实现了10种调度算法常用调度算法有4种

    -轮询(Round Robin)
    -加权轮询(Weighted Round Robin)
    -最少连接(Least Connections)
    -加权最少连接(Weighted Least Connections)
    -源地址散列(Source Hashing)
    -目标地址散列(Destination Hashing)
    -基于局部性的最少链接
    -带复制的基于局部性最少链接
    -最短的期望的延迟
    -最少队列调度
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    部署LVS-NAT集群

    client proxy web1 web2 配置ip 网关如下

    [root@client ~]# ifconfig ens33
            inet 192.168.1.11  netmask 255.255.255.0  broadcast 192.168.1.255
    [root@client ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.100   0.0.0.0         UG    100    0        0 ens33
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    [root@proxy ~]# ifconfig ens33
            inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
    [root@proxy ~]# ifconfig ens37
            inet 192.168.4.100  netmask 255.255.255.0  broadcast 192.168.4.255
    
    • 1
    • 2
    • 3
    • 4
    [root@web1 ~]# ifconfig ens33
            inet 192.168.4.11  netmask 255.255.255.0  broadcast 192.168.4.255
    [root@web1 ~]#  route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.4.100   0.0.0.0         UG    100    0        0 ens33
    [root@web1 html]# ip route show   #也可以查看网关
    default via 192.168.4.100 dev ens33 proto static metric 100  #网关
    192.168.4.0/24 dev ens33 proto kernel scope link src 192.168.4.11 metric 100
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    [root@web2 ~]# ifconfig ens33
            inet 192.168.4.12  netmask 255.255.255.0  broadcast 192.168.4.255
    [root@web2 ~]#  route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.4.100   0.0.0.0         UG    100    0        0 ens33
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    设置Web服务器

    [root@web1 ~]# yum -y install httpd    #安装软件,web2 同web1操作
    [root@web1 ~]# echo "192.168.4.11" > /var/www/html/index.html   #创建网页文件
    [root@web2 ~]# systemctl restart httpd
    [root@proxy ~]# curl http://192.168.4.11
    192.168.4.11
    
    • 1
    • 2
    • 3
    • 4
    • 5

    部署LVS-NAT模式调度器proxy

    [root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward  #开启转发
    [root@proxy ~]# sysctl -p
    [root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward
    1
    [root@proxy ~]# yum -y install ipvsadm
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2)创建集群服务器

    [root@proxy ~]# ipvsadm -A -t 192.168.1.100:80 -s wrr
    # -A(add)是创建添加虚拟服务器集群
    # -t(tcp)后面指定集群VIP的地址和端口,协议是tcp协议    -u是UDP
    # -s后面指定调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等等
    
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.11:80 -w 1 -m
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.12:80 -w 1 -m
    #-a(add)往虚拟服务器集群中添加后端真实服务器IP,指定往-t 192.168.1.100:80这个集群中添加
    #-r(real)后面跟后端真实服务器的IP和端口,这里不写端口默认是80端口
    #-w(weight)指定服务器的权重,权重越大被访问的次数越多,英语词汇:weight(重量,分量)
    #-m指定集群工作模式为NAT模式,如果是-g则代表使用DR模式,-i代表TUN模式
    
    [root@proxy ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.1.100:80 wrr
      -> 192.168.4.11:80              Masq    1      0          0
      -> 192.168.4.12:80              Masq    1      0          0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    [root@client ~]# curl 192.168.1.100
    192.168.4.12
    [root@client ~]# curl 192.168.1.100
    192.168.4.11
    [root@client ~]# curl 192.168.1.100
    192.168.4.12
    [root@client ~]# curl 192.168.1.100
    192.168.4.11
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.4 ipvsadm命令用法

    使用命令增、删、改LVS集群规则

    [root@proxy ~]# ipvsadm -A -t 192.168.1.100:80 -s wrr
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.11:80 -w 1 -m
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.12:80 -w 1 -m
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.4.13:80 -w 2 -m
    [root@proxy ~]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.1.100:80 wrr
      -> 192.168.4.11:80              Masq    1      0          0
      -> 192.168.4.12:80              Masq    1      0          0
      -> 192.168.4.13:80              Masq    2      0          0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3)修改调度器算法,-E -s将加权轮询修改为轮询)

    [root@proxy ~]# ipvsadm -E -t 192.168.1.100:80 -s rr
    [root@proxy ~]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.1.100:80 rr ...  #之前是wrr
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    修改模式为DR模式 -e -t web真机 -g

    [root@proxy ~]# ipvsadm -e -t 192.168.1.100:80 -r 192.168.4.11 -g
    (使用-g为DR模式、-m为NAT模式、-i为tun)
    
    • 1
    • 2

    6)创建另一个集群(算法为最少连接算法;使用-m选项,设置工作模式为NAT模式)

    [root@proxy ~]# ipvsadm -A -t 192.168.1.100:3306 -s lc
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:3306 -r 192.168.4.11:3306 -m
    [root@proxy ~]# ipvsadm -a -t 192.168.1.100:3306 -r 192.168.4.12:3306 -m
    
    • 1
    • 2
    • 3

    7)清空所有规则ipvsadm -C

    [root@proxy ~]# ipvsadm -C
    
    • 1

    8)永久保存所有规则(非必须的操作)一般不这么操作

    [root@proxy ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
    注意:ipvsadm只能临时生成。关机后会失效。永久规则需要确保ipvsadm服务为开机启动服务才可以。
    (systemctl enable ipvsadm)。
    
    • 1
    • 2
    • 3

    ipvsadm命令用法

    虚拟服务器

    ipvsadm -A		(add)添加盘拟服务器
    ipvsadm -E		(edit)修改虚拟服务器
    ipvsadm -D		(delete)删除虚拟服务器
    ipvsadm -C		(clear)清空所有
    ipvsadm -L		(list)查看LVS 规则表
    -s [rwrr|le|wlc|sh]		(scheduler)指定集群算法
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    ipvsadm -A -t|u 192.168.4.5:80 -s [算法]   #添加虚拟服务器,协议为tcp (-t) 或者udp (-u)
    ipvsadm -E -t|u 192.168.4.5:80 -s [算法]   #修改虚拟服务器,协议为tcp或udp
    ipvsadm -D -t|u 192.168.4.5:80	[算法]  	#删除虚拟服务器,协议为tcp或udp
    ipvsadm -C		#清空所有添加真实服务器
    
    • 1
    • 2
    • 3
    • 4

    真实服务器

    ipvsadm -a		(add)添加真实服务器
    ipvsadm -e		(edit)修改真实服务器
    ipvsadm -d		(delete)删除真实服务器
    
    • 1
    • 2
    • 3
    ipvsadm -a -t|u 192.168.4.5:80 -r 192.168.2.100 [-g|i|m] [-w权重]  #一般是-m(NAT模式) -g(DR模式),-i(隧道模式)
    ipvsadm -e -t|u 192.168.4.5:80 -r 192.168.2.100 [-g|i|m] [-w权重]  #修改真实服务器
    ipvsadm -d -t|u 192.168.4.5:80 -r 192.168.2.100  #删除真实服务器
    ipvsadm -Ln  #查看LVS 规则表
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Flutter笔记:build方法、构建上下文BuildContext解析
    故障分析 | DROP 大表造成数据库假死
    QT串口通信
    经典Oracle表。包括联接查询示例。
    什么是GPIO的推挽输出和开漏输出
    1)SpringBoot简介
    无法打开文件(xxx.apk)(无法成功完成提作,因为文件包含病毒或潜在的垃圾软件。) 问题解决
    【Web前端面试】葵花宝典(2022版本)——Vue篇
    化繁为简,国内知名期货交易所依托 MogDB 数据库促信创改造项目提速
    Tensorflow亲妈级安装教程(CPU和GPU版)
  • 原文地址:https://blog.csdn.net/weixin_60092693/article/details/126151468