目录
LVS调度器用的调度方法基本分为两类:
固定调度算法:rr,wrr,dh,sh
rr:轮询算法,将请求依次分配给不同的rs节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
wrr:加权轮训调度,依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。
sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。
动态调度算法:wlc,lc,lblc
wlc:加权最小连接数调度,假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS。
lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。
原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。
优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
- modprobe ip_vs
-
- cat /proc/net/ip_vs
-
- yum -y install ipvsadm
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-ens33 ifcfg-ens33:0
- vim ifcfg-ens33:0
- DEVICE=ens33:0
- ONBOOT=yes
- IPADDR=192.168.64.100
- NETMASK=255.255.255.255
- # 配置虚拟 IP 地址
-
- ifup ens33:0
- ifconfig ens33:0

- vim /etc/sysctl.conf
- # 编辑内核参数
- net.ipv4.ip_forward = 0
- net.ipv4.conf.all.send_redirects = 0
- net.ipv4.conf.default.send_redirects = 0
- net.ipv4.conf.ens33.send_redirects = 0
-
- sysctl -p
- # 刷新参数

- ipvsadm-save > /etc/sysconfig/ipvsadm
- systemctl start ipvsadm
-
-
- ipvsadm -C
- ipvsadm -A -t 192.168.64.100:80 -s rr
- ipvsadm -a -t 192.168.64.100:80 -r 192.168.64.40:80 -g
- ipvsadm -a -t 192.168.64.100:80 -r 192.168.64.50:80 -g
- ipvsadm
-
- ipvsadm -ln
- # 查看节点状态

- yum -y install nfs-utils rpcbind
- mkdir /opt/pc /opt/mo
- chmod 777 /opt/pc /opt/mo
-
- vim /etc/exports
-
- /usr/share *(ro,sync)
- /opt/pc 192.168.80.0/24(rw,sync)
- /opt/mo 192.168.80.0/24(rw,sync)
- # 配置nfs共享文件
-
- systemctl start rpcbind.service
- systemctl start nfs.service

给2个节点服务器配置虚拟网卡(两个节点进行以下操作)
- cd /etc/sysconfig/network-scripts/
- cp ifcfg-lo ifcfg-lo:0
-
- vim ifcfg-lo:0
-
- DEVICE=lo:0
- ONBOOT=yes
- IPADDR=192.168.64.100
- NETMASK=255.255.255.255
-
- systemctl restart network
- ifconfig lo:0
- route add -host 192.168.64.100 dev lo:0
-
- vim /etc/rc.local
- /sbin/route add -host 192.168.64.100 dev lo:0
- vim /etc/sysctl.conf
-
- net.ipv4.conf.lo.arp_ignore = 1
- net.ipv4.conf.lo.arp_announce = 2
- net.ipv4.conf.all.arp_ignore = 1
- net.ipv4.conf.all.arp_announce = 2
-
- sysctl -p
-
- yum -y install nfs-utils rpcbind httpd
- systemctl start rpcbind
- systemctl start httpd
第一个节点服务器
- mkdir /var/www/html -p
- mount.nfs 192.168.64.20:/opt/pc /var/www/html
- echo 'this is pc web!' > /var/www/html/index.html

第二个节点服务器
- mkdir /var/www/html -p
- mount.nfs 192.168.64.20:/opt/mo /var/www/html
- echo 'this is mo web!' > /var/www/html/index.html

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。
![]()
- yum install nfs-utils rpcbind -y
- # 安装nfs
-
- systemctl start rpcbind.service
- systemctl start nfs.service
- # 启动
-
- systemctl enable nfs.service
- systemctl enable rpcbind.service
- # 设为开机自启
- mkdir /opt/pc /opt/ben
- chmod 777 /opt/pc /opt/ben
- # 创建目录并给予权限
-
- echo 'this is pc web!' > /opt/pc/index.html
- echo 'this is ben web!' > /opt/ben/index.html
- # 设置网页内容
- vim /etc/exports
- # 输入以下内容
-
- /usr/share *(ro,sync)
- /opt/pc 192.168.64.0/24(rw,sync)
- /opt/ben 192.168.64.0/24(rw,sync)

- exportfs -rv
- # 发布共享

- yum install httpd -y
- # 安装httpd
-
- systemctl start httpd.service
- systemctl enable httpd.service
- # 启动并设为开机自启
- yum install nfs-utils rpcbind -y
- # 安装nfs
-
- showmount -e 192.168.64.50
- # 查询NFS服务器上已经导出的所有文件系统

- systemctl start rpcbind
- systemctl enable rpcbind
- # 启动并开机自启
- mount.nfs 192.168.64.50:/opt/pc /var/www/html
- # 将nfs服务器的pc目录挂载到/var/www/html
-
- vim /etc/fstab
- # 修改配置文件以永久挂载
- 192.168.64.50:/opt/pc /var/www/html nfs defaults,_netdev 0 0
- # nfs服务器共享目录 挂载到本地的位置 文件系统类型 挂载选项 转储频率 自检次序

- mount.nfs 192.168.64.50:/opt/ben /var/www/html
- # 将nfs服务器的ben目录挂载到/var/www/html
-
- vim /etc/fstab
- # 修改配置文件以永久挂载
- 192.168.64.50:/opt/ben /var/www/html nfs defaults,_netdev 0 0
- # nfs服务器共享目录 挂载到本地的位置 文件系统类型 挂载选项 转储频率 自检次序
- vim /etc/sysctl.conf
- # 修改配置文件
- net.ipv4.ip_forward = 1
-
- sysctl -p
- # 读取变量

- iptables -t nat -F
- # 清空nat表
-
- iptables -F
- # 删除默认链
-
- iptables -t nat -A POSTROUTING -s 192.168.64.0/24 -o ens36 -j SNAT --to-source 12.0.0.1
- # 设置snat链

- modprobe ip_vs
- # 加载 ip_vs模块
-
- cat /proc/net/ip_vs
- # 查看 ip_vs版本信息

- yum -y install ipvsadm
- # 安装ipvsadm 管理工具
-
- ipvsadm-save > /etc/sysconfig/ipvsadm
- # 启动服务前须保存负载分配策略
-
- systemctl start ipvsadm.service
- ipvsadm -C
- # 清除原有策略
-
- ipvsadm -A -t 12.0.0.1:80 -s rr
- ipvsadm -a -t 12.0.0.1:80 -r 192.168.64.30:80 -m -w 1
- ipvsadm -a -t 12.0.0.1:80 -r 192.168.64.40:80 -m -w 1
-
- ipvsadm
- # 启用策略

- ipvsadm -ln
- # 查看节点状态,Masq代表 NAT模式
- ipvsadm-save > /opt/ipvsadm
- # 保存策略
- ipvsadm-save > /etc/sysconfig/ipvsadm
