六章——LVS负载均衡群集(应用——linux防护与群集)

2023-11-09 08:59

本文主要是介绍六章——LVS负载均衡群集(应用——linux防护与群集),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三期总目录链接

目录

 一、LVS群集应用基础

(一)群集技术概述

1、群集类型 

2、负载均衡的分成介绍

 3、负载均衡的工作模式

 (二)LVS虚拟服务器相关介绍

LVS的负载调度算法

 二、构建LVS负载均衡群集

(一)案例:地址转换模式(LVS-NAT)

1、准备环境

2、在c-1机器:LVS服务器上操作

3、NFS服务器:共享目录

3、web服务器池

4、验证

(二)案例:直接路由路由(VLS-DR)

1、LVS服务器

2、配置节点服务器

3、NFS服务器不用做配置

4、测试

 复习题


 一、LVS群集应用基础

(一)群集技术概述

由多台主机(至少两台节点服务器)构成,但对外只表现为一个整体,只提供一个访问接口(域名或ip) 

1、群集类型 

1)、负载均衡(Load Balancer)群集:提高应用系统的响应能力。获得高并发、高负载(LB)的整体性能。例(DNS轮询、应用层交换、反向代理)等。
2)、高可用(High Available)群集:提高应用系统的可靠性。例(故障切换、双击热备、多机热备)工作方式:双工:所有节点同时在线;主从:主节点在线,从节点在主节点发生故障时自动切换为主节点。
3)、高性能运算(High Performance Computer)群集(用的较少):提高应用系统的CPU运算速度,扩展硬件资源和分析能力。例(云计算、网格计算),依赖于‘分布式计算’‘并行计算’。

必要时可以合并使用几种群集模式

2、负载均衡的分成介绍

 

第一层

负载调度器(Load Balancer或Director)(至少一个)

   访问这个群集系统的唯一入口。对外为VIP地址(虚拟ip/群集ip地址)。通常配置主、从双机热备,确保高可用性

第二层

服务器池(Server Pool)(大量真实服务器)

    每个节点都有独立的rip(真实ip),只处理调度器分发的客户机请求。
   某个节点暂时失效时,负责调度器的容错机制将其隔离。错误排除后再重新纳入服务器池

第三层

共享存储(Share Storage)

为服务器池提供稳定、一致的文件存取服务,确保群集的统一性
可使用NAS设备或提供NFS共享服务的专用服务器

 3、负载均衡的工作模式

地址转换(NAT)模式1、调度器为服务器节点的网关,客户机的访问入口和各节点的回应出口
2、服务器和调度器使用私有ip,在同一物理网络。安全性优于下两个
IP隧道(TUN)模式1、开放式网络结构
2、调度器为客户机访问入口
3、节点服务器都具有独立的公网ip,分散在不同的地方,直接回应客户机
4、通过专用ip隧道与调度器互相通信
直接路由(DR)模式

1、半开放式

2、调度器只为客户机访问入口

3、节点服务器集中在一起,和调度器在同一物理网络。通过本地连接

4、节点服务器直接回应客户机

nat和DE、TUN的区别nat只需要一个公网ip,最易用,安全性好,许多硬件负载均衡设备采用
DR和TUN,负载能力更强大,适用范围更广,节点安全性稍差

 (二)LVS虚拟服务器相关介绍

    Linux Virtual Server是针对Linux内核开发的一个负载均衡项目,由我国的章文嵩博士在1998年5月创建,LVS上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块。

LVS的负载调度算法

轮询(Round Robin)按照顺序轮流分配,不管实际连接数和系统负载
加权轮询(Weighted Round Robin)自动查询各节点的负载情况,动态调整其权重
最少连接(Least Connections)优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)服务器节点性能差异大时,自动调整权重。权重高的承担更大比例的活动连接负载
ipvsadm管理工具选项说明
-A添加虚拟服务器节点
-D删除虚拟服务器节点
-a添加真实服务器
-d删除真实服务器
-C清空所有配置
-c显示ipvs中目前存在的连接
-L | -l查看LVS虚拟服务(可结合-n使用
-R 或--restore恢复虚拟服务规则
-n以数字的形式显示地址、端口等信息
-tvip地址及tcp端口
-s负载调度算法(轮询rr 、加权轮询wrr 、最少连接lc 、加权最少连接 wlc)
-S或--save保存虚拟服务器规则
-rrip地址及端口()
-g | -m | -iDR 模式   |   nat模式    |    TUN模式
-w设置权重(0时暂停节点)
--stats显示历史转发消息统计(累加值)
--timeout显示配置的tcp/tcpfin/udp超时时间

 二、构建LVS负载均衡群集

(一)案例:地址转换模式(LVS-NAT)

1、准备环境

 本次实验使用5台CentOS7服务器:C-1、web1、web2、web3、NFS地址如上图

LVS调度器作为Web服务器池的网关(web服务需要设置网关:192.168.1.1

使用轮询(rr)调度算法

全网ping通设置过程省略

2、在c-1机器:LVS服务器上操作

[root@C-1 ~]# modprobe ip_vs           #加载模块
[root@C-1 ~]# cat /proc/net/ip_vs      #确认内核对LVS的支持
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn[root@C-1 ~]# vim /etc/sysctl.conf    #启用路由转发
......
..
net.ipv4.ip_forward = 1               #添加内容;保存退出[root@C-1 ~]# sysctl -p
net.ipv4.ip_forward = 1

2.2、使用ipvsadm工具:LVS群集管理工具

[root@C-1 ~]# yum -y install ipvsadm    #安装ipvsadm工具
.......
...
已安装:ipvsadm.x86_64 0:1.27-7.el7                                                                                                                 完毕![root@C-1 ~]# ipvsadm -v    #查看版本信息
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

创建虚拟服务器,VIP必须是本机真实ip地址

[root@C-1 ~]# ipvsadm -A -t 200.1.1.1:80  -s rr
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.4:80 -m -w 1   #添加节点服务器web1
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.6:80 -m -w 1   #添加节点服务器web2
[root@C-1 ~]# ipvsadm -a -t 200.1.1.1:80 -r 192.168.1.7:80 -m -w 1   #添加节点服务器web3

 删除节点服务器

[root@C-1 ~]# ipvsadm -d -r 192.168.1.4:80 -t 200.1.1.1:80    #删除节点服务器web1
[root@C-1 ~]# ipvsadm -d -r 192.168.1.6:80 -t 200.1.1.1:80    #删除节点服务器web2

删除整个虚拟服务器

[root@C-1 ~]# ipvsadm -D -t 200.1.1.1:80    #删除整个虚拟服务器

保存策略

[root@C-1 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm    # 把ipvsadm的输出结果保存到/etc/sysconfig/ipvasdm文件中
[root@C-1 ~]# cat /etc/sysconfig/ipvsadm               #查看
-A -t C-1:http -s rr
-a -t C-1:http -r 192.168.1.4:http -m -w 1
-a -t C-1:http -r 192.168.1.6:http -m -w 1
-a -t C-1:http -r 192.168.1.7:http -m -w 1

 查看群集节点状态     Masq----地址伪装NAT模式   Route---DR模式

[root@C-1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.1.1.1:80 rr-> 192.168.1.4:80               Masq    1      0          0         -> 192.168.1.6:80               Masq    1      0          0         -> 192.168.1.7:80               Masq    1      0          0   
[root@C-1 ~]# systemctl enable ipvsadm    #开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@C-1 ~]# systemctl start ipvsadm     #启动服务

3、NFS服务器:共享目录

NFS:是一种基于TCP/IP传输的网络文件系统协议,最初由Sun公司开发。通过使用NFS协议.客户机可以像访问本地目录一样访问远程服务器中的共享资源。对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法,NFS也是NAS存储设备必然支持的一种协议;依赖于RPC(远端过程调用),需安装nfs-utils(NFS共享发布和访问)、rpcbind(rpc支持)软件包,系统服务:nfs、rpcbind,共享配置文件:/etc/exports

[root@NFS ~]# yum -y install nfs-utils rpcbind   #安装nfs-utils、rpcbind软件包
......
... 
[root@NFS ~]# systemctl enable nfs      #开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@NFS ~]# systemctl enable rpcbind  #开机自启动

设置共享目录

文件内容默认为空(无任何共享) 语法结构: 目录位置    客户机地址(权限操作)注意标点符号

[root@NFS ~]# mkdir -p /opt/web1 /opt/web2 /opt/web3   #创建共享目录
[root@NFS ~]# vim /etc/exports                     #配置nfs共享文件/opt/web1 192.168.1.4(rw,sync,no_root_squash)    #rw:读写;sync:同步写入;no_root_squash:客户机以root身份访问时赋予本地root权限
/opt/web2 192.168.1.6(rw,sync,no_root_squash)
/otp/web3 192.168.1.7(rw,sync,no_root_squash)    #保存退出[root@NFS ~]# systemctl start rpcbind          #先启动rpcbind
[root@NFS ~]# systemctl start nfs              #在启动nfs[root@NFS ~]# netstat -anput | grep rpcbind
udp        0      0 0.0.0.0:620             0.0.0.0:*                           2141/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2141/rpcbind        
udp6       0      0 :::620                  :::*                                2141/rpcbind        
udp6       0      0 :::111                  :::*                                2141/rpcbind     [root@NFS ~]# showmount -e  查看本机发布的NFS共享目录
Export list for NFS:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4

查看格式: showmount -e 服务器ip

[root@C-1 ~]# showmount -e 192.168.1.8   从LVS服务器上查看服务器的共享情况
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4

3、web服务器池

3.1 web1上安装

[root@web1 ~]# yum -y install httpd rpcbind nfs-utils   #安装http和rpcbind nfs-utils

配置nfs共享存储客户端

[root@web1 ~]# systemctl enable rpcbind
[root@web1 ~]# systemctl start rpcbind
[root@web1 ~]# showmount -e 192.168.1.8
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4

与挂载本地文件系统有所不同 mount   NFS的ip地址:NFS共享路径   本地路径(设备位置处应指出NFS地址)

[root@web1 ~]# mount 192.168.1.8:/opt/web1 /var/www/html    #将NFS服务器共享的/opt/web1目录挂载到本地目录/var/www/html
[root@web1 ~]# tail -l /etc/mtab            #确认挂载结果
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos-root / xfs rw,relatime,attr2,inode64,noquota 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12937 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
/dev/sr0 /media/cdrom iso9660 ro,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=48364k,mode=700 0 0
192.168.1.8:/opt/web1 /var/www/html nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.4,local_lock=none,addr=192.168.1.8 0 0[root@web1 ~]# echo "<h1>web1 192.168.1.4399小游戏</h1>" > /var/www/html/index.html  #编辑web1测试首页
[root@web1 ~]# vim /etc/fstab     #设置自动挂载
......
....
192.168.1.8:/opt/web1 /var/www/html nfs defaults,_netdev 0 0    #在最后输入

文件系统为: nfs  ;挂载中的参数:_netdev 设备需要网络 ;若添加 soft intr参数可以实现软挂载,允许在网络中断时放弃挂载

[root@web1 ~]# systemctl enable httpd   #开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@web1 ~]# systemctl start  httpd  #启动http

3.2 web2上安装(同web1)

[root@web2 ~]# yum -y install httpd rpcbind nfs-utils   #安装http和rpcbind nfs-utils

配置nfs共享存储客户端

[root@web2 ~]# systemctl enable rpcbind
[root@web2 ~]# systemctl start  rpcbind
[root@web2 ~]# showmount -e 192.168.1.8
Export list for 192.168.1.8:
/opt/web3 192.168.1.7
/opt/web2 192.168.1.6
/opt/web1 192.168.1.4

与挂载本地文件系统有所不同 mount   NFS的ip地址:NFS共享路径   本地路径(设备位置处应指出NFS地址)

[root@web2 ~]# mount 192.168.1.8:/opt/web2 /var/www/html    #挂载
[root@web2 ~]# tail -l /etc/mtab
configfs /sys/kernel/config configfs rw,relatime 0 0
/dev/mapper/centos_c--06-root / xfs rw,relatime,attr2,inode64,noquota 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=35,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=13107 0 0
/dev/sr0 /media/cdrom iso9660 ro,relatime 0 0
/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0
tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=48364k,mode=700 0 0
192.168.1.8:/opt/web2 /var/www/html nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.6,local_lock=none,addr=192.168.1.8 0 0[root@web2 ~]# echo "<h1>web2 192.168.1.6今天是大太阳</h1>" > /var/www/html/index.html  #编辑首页web2
[root@web2 ~]# vim /etc/fstab
......
....
192.168.1.8:/opt/web1 /var/www/htm2 nfs defaults,_netdev 0 0    #在最后输入

文件系统为: nfs  ;挂载中的参数:_netdev 设备需要网络 ;若添加 soft intr参数可以实现软挂载,允许在网络中断时放弃挂载

[root@web2 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@web2 ~]# systemctl start  httpd

web3(同web1、2步骤略)

4、验证

 使用本机访问http://200.1.1.1   每一次刷新都会切换一次

[root@C-1 ~]# ipvsadm -ln     #查看负载分配情况
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.1.1.1:80 rr-> 192.168.1.4:80               Masq    1      0          1         -> 192.168.1.6:80               Masq    1      0          2         -> 192.168.1.7:80               Masq    1      0          1   

 ActiveConn:活动连接数

 InActConn:指除了ESTABLISHED以外的,所有的其它状态的tcp连接  ESTABLISHED:意思建立连接。表示两台机器正在通信。

(二)案例:直接路由路由(VLS-DR)

在DR模式的群集中,LVS负载调度器作为群集的访问入口,不作为网关使用,web池中的所有节点服务器都各自接入lnternet,发送给web响应数据包不需要经过LVS负载调度器,继上面的实验修

使用上次实验环境:ip地址部署

内网地址配置外网地址配置群集地址配置
C-1:ens33192.168.1.1/24C-1:ens37200.1.1.1/24C-1:ens37:0200.1.1.100
web1:ens33192.168.1.4/24web1:ens37200.1.1.10/24web1:lo:0200.1.1.100
web2:ens33192.168.1.6/24web2:ens37200.1.1.20/24web2:lo:0200.1.1.100
web3:ens33192.168.1.7/24web3:ens37200.1.1.30/24web3:lo:0200.1.1.100
NFS:ens33192.168.1.8/24NFS:ens37没有地址NFS没有地址

1、LVS服务器

外网ens37 200.1.1.1/24 ; 群集  ens37:0   200.1.1.100

[root@C7--01 ~]# cd /etc/sysconfig/network-scripts/
[root@C7--01 network-scripts]# cp ifcfg-ens37 ifcfg-ens37:0
[root@C7--01 network-scripts]# vim ifcfg-ens37:0TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37:0                        #修改网卡名称
DEVICE=ens37:0                      #修改网卡名称
ONBOOT=yes
IPADDR=200.1.1.100                  #修改为群集地址
PREFIX=24
GATEWAY=200.1.1.254                 #网关可有可无
IPV6_PRIVACY=no保存退出[root@C7--01 network-scripts]# ifup ens37:0
[root@C7--01 network-scripts]# ifconfig ens37:0
ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 200.1.1.100  netmask 255.255.255.0  broadcast 200.1.1.255ether 00:0c:29:6d:c2:fc  txqueuelen 1000  (Ethernet)

1.1、对于 DR 集群来说,由于由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应

[root@C7--01 ~]# vi /etc/sysctl.conf.......
...
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0保存退出[root@C7--01 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0

1.2  配置LVS-DR群集策略

[root@C7--01 ~]# ipvsadm -C     #清除原有策略
[root@C7--01 ~]# ipvsadm -ln    #查看
[root@C7--01 ~]# ipvsadm -A -t 200.1.1.100:80 -s rr
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.10 -g -w 1   #添加节点服务器200.1.1.10
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.20 -g -w 1
[root@C7--01 ~]# ipvsadm -a -t 200.1.1.100:80 -r 200.1.1.30 -g -w 1[root@C7--01 ~]# ipvsadm-save   #保存配置
-A -t C7--01.1:http -s rr
-a -t C7--01.1:http -r 200.1.1.10:http -g -w 1
-a -t C7--01.1:http -r 200.1.1.20:http -g -w 1
-a -t C7--01.1:http -r 200.1.1.30:http -g -w 1
[root@C7--01 ~]# systemctl enable ipvsadm[root@C7--01 ~]# ipvsadm -ln   #查看节点状态,Route代表 DR模式
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.1.1.100:80 rr-> 200.1.1.10:80                Route   1      0          0         -> 200.1.1.20:80                Route   1      0          0         -> 200.1.1.30:80                Route   1      0          0         

2、配置节点服务器

内网web1:ens33192.168.1.4/24外网web1:ens37200.1.1.10/24群集web1:lo:0200.1.1.100

web1:确认ens33网卡确认ens37网卡是否已经配置完成

[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0    #直接新建lo:0虚拟接口DEVICE=lo:0
ONBOOT=yes
IPADDR=200.1.1.100        #群集vip虚拟ip
NETMASK=255.255.255.255   #必须为32位全1掩码保存退出[root@web1 ~]# ifup lo:0
[root@web1 ~]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 200.1.1.100  netmask 255.255.255.255loop  txqueuelen 1  (Local Loopback)

2.1  调整/proc内核参数,关闭ARP响应

[root@web1 ~]# vi /etc/sysctl.conf......
....
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1保存退出[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

解释:

arp_ignore

通常client和我们的主机不在同一网段中,当request到达路由器后,路由器就会发送arp广播寻找vip对应的mac地址,由于rs的lo:vip也绑定了vip,那么所有的rs都会受到arp广播,这是不应该的,因为我们的目的是只让vip收到

0:表示对于arp请求,任何配置在本地的目的IP地址都会回应,不管你有多少网卡,虚拟接口等等,只要在同一网段都会回应。这也是linux中默认的

1:表示如果arp请求的目的地址ip,不是该arp请求包进入的接口的ip地址,那么就不回应,显然arp包是从eth37口进来的,所以lo:vip就不回回应了

arp_announce

当rs向client发送reply包时,肯定要经过内网的路由器,那么它就会发送一个arp请求包给路由器来获取路由器的mac地址。关键就在这个arp请求包里,这个arp请求包里会包含rs自己的ip和mac,注意这个ip是之前client的request包的目的ip(因为rs在处理完请求后将source和destination对调返回给client),也就是vip。路由器在收到这arp请求后就会更新自己的缓存,此时arp缓存vip对应的就是rs的mac,在有client进来的request就找不到调度器了。而正确的应该vip对应调度器的mac

0:表示用ip包的source地址来设置arp请求的source地址

1:表示不适用ip包的source地址来设置arp请求的source地址,如果ip包source地址和端口的ip在同一网段,仍然使用ip包的source地址

2:不使用ip包的source地址来设置arp请求的source地址,而是由系统选择最好的接口来发送


 2.2  添加到群集IP地址的本地路由记录

[root@web1 ~]# vi /etc/rc.local    #添加VIP本地访问路由......
...
/sbin/route add -host 200.1.1.100 dev lo:0   #添加内容 群集ip地址  本地虚拟网卡lo:0 保存退出[root@web1 ~]# route add -host 200.1.1.100 dev lo:0

2.3、web2:确认ens33网卡确认ens37网卡是否已经配置完成

web2:ens33192.168.1.6/24web2:ens37200.1.1.20/24web2:lo:0200.1.1.100
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0    #直接新建lo:0虚拟接口DEVICE=lo:0
ONBOOT=yes
IPADDR=200.1.1.100        #群集vip虚拟ip
NETMASK=255.255.255.255   #必须为32位全1掩码保存退出[root@web1 ~]# ifup lo:0
[root@web1 ~]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 200.1.1.100  netmask 255.255.255.255loop  txqueuelen 1  (Local Loopback)

2.4、 调整/proc内核参数,关闭ARP响应

[root@web1 ~]# vi /etc/sysctl.conf......
....
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1保存退出[root@web1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

 2.5  添加到群集IP地址的本地路由记录

[root@web1 ~]# vi /etc/rc.local    #添加VIP本地访问路由......
...
/sbin/route add -host 200.1.1.100 dev lo:0   #添加内容 群集ip地址  本地虚拟网卡lo:0 保存退出[root@web1 ~]# route add -host 200.1.1.100 dev lo:0

2.6、web3同:web1 web2

3、NFS服务器不用做配置

4、测试

访问   http://200.1.1.100

[root@C7--01 ~]# ipvsadm -ln          #查看节点状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  200.1.1.100:80 rr-> 200.1.1.10:80                Route   1      0          3         -> 200.1.1.20:80                Route   1      1          3         -> 200.1.1.30:80                Route   1      1          3         

 复习题

1. 常见的群集类型包括哪几种?

三种:负载均衡群集、高可用群集、高性能运算群集

2. 图示负载均衡群集的分层结构

3. 简述LVS负载均衡群集的NAT模式和DR模式的区别?

NAT模式:只需要一个公网ip,最易用,安全性好,许多硬件负载均衡设备采用

DR模式:DR和TUN,负载能力更强大,适用范围更广,节点安全性稍差

4. LVS负载均衡群集的常用调度算法包含哪几种?

四种:轮询、加权轮询、 最少连接、 加权最少连接

5. 在Linux系统中执行ipvsadm -A -t 172.16.16.172:80 -s rr命令的作用是什么?

对TCP80端口提供负载分流服务,使用的调度为轮询

6. 在使用ipvsadm命令添加集群节点时使用-m、-g、-i分别表示什么含义?

分别表示:  -g  使用DR 模式   |  -m 使用nat模式    |   -i  使用TUN模式

7. 在Linux系统中执行showmount -e 192.168.7.250命令的作用是什么

查看NFS服务器共享了哪些目录

8. 在 /etc/sysctl.conf配置文件中添加net.ipv4.ip_forward = 1配置项的作用是?

启用路由转发

9. 在Linux系统中执行什么命令可以清除ipvsadm所设置的负载分配策略?

执行  ipvsadm -C  可以清空所有的负载分配策略

10. 构建LVS-DR群集时,在调度器与节点服务器中的/proc参数调整有何区别? 

DR群集模式:LVS负载调度器和节点需要共同VIP地址,应关闭Linux内核的重定向参数响应

 节点服务器:同样要有VIP地址,但此地址仅用作发送Web响应数据包的原地址,不需要监听客户机的访问请求(改由调度器监听毕分发)

这篇关于六章——LVS负载均衡群集(应用——linux防护与群集)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/375192

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py