LVS负载均衡集群(NAT模式部署)!

Posted handsomeboy-东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVS负载均衡集群(NAT模式部署)!相关的知识,希望对你有一定的参考价值。

LVS群集

群集概述

集群表示多个服务器的集合体,提供不同的功能,无论哪种集群,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机,根据群集所针对的目标差异,可分为以下三种类型:

  • 负载均衡群集:以提供应用系统的响应能力、尽可能处理更多的访问请求,减少演出为目标,获得高并发、高负载的整体性能,如DNS轮询,应用层交换,反向代理等
  • 高可用群集:以提高应用系统的可靠性、尽可能减少中断时间为目标,确保服务的连续性,达到高可用的容错效果,如:故障切换,双/多机热备的
  • 高性能运算集群:以提高应用系统的CPU运算速度,拓展硬件资源和分析能力为目标,获得想当于大型、超级计算机的高运算性能(HPC)能力

负载均衡群集架构

  • 负载调度器
  • 服务器池
  • 共享存储

负载均衡的三种工作模式

  • NAT地址转换:信息请求的流出和流入都由负载调度器控制(LVS),所有服务器在同一个物理网络内
  • IP隧道(TUN模式):服务器节点在公网环境(公网IP),LVS只接受请求,响应请求由对应接收的服务器节点以隧道形式直接响应
  • 直接路由(DR):接收请求由LVS处理,响应请求由real server处理,它们在同一物理网络(内网),响应请求是不同网段的,需要通过公共路由器实现

负载均衡三种工作模式的区别

工作模式			NAT模式				TUN模式				DR模式
节点数量			low10-20			high 100			high 100
真实网关			负载调度器			自由路由器			自由路由器
IP地址			公网+私网			公网					私网
优点				安全性高				安全、速度快			性能最好
缺点				效率低、压力大		需要隧道支持			不能跨越局域网

LVS虚拟服务器

概述:1998年5月,由我国的章文嵩博士创建,针对于Linux内核的负载均衡解决方案

LVS负载调度算法

  • 轮询:将收到的访问请求按顺序轮流分配给群集中的个节点
  • 加权轮询:更具调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多,保证性能强的服务器承担更多的访问流量
  • 最小连接:根据服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
  • 加权最小连接:在服务器节点的性能差异较大时,可以为真实服务器自动调整权重,性能高的节点将承担更大比例的活动连接负载

LVS的管理工具ipvsadm

ipvsadm工具选项
-A:添加虚拟服务器
-D:册除整个虚拟服务器
-s:指定负载调度算法(轮询::rr、加权轮询: wrr、最少连接:lc、加权最少连接: wlc )
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:表示使用NAT群集模式.
-g:表示使用DR模式
-i:表示使用TUN模式
-w:设置权重(权重为o 时表示暂停节点)
-p:60表示保持长连接60秒
-i:列表查看LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与"-l”选项组合使用

LVS负载均衡群集部署(NAT模式)

  • 设备:LVS负载调度器:ens33 :192.168.118.100 ens36:192.168.140.100,web节点服务器①192.168.118.50②192.168.118.55,NFS服务器:192.168.118.200,客户端(win10):ip192.168.140.50,网关192.168.140.100
  • 部署共享存储
[root@nfs ~]# systemctl stop firewalld.service
[root@nfs ~]# setenforce 0
[root@nfs ~]# yum install -y nfs-utils rpcbind
[root@nfs ~]# systemctl start nfs.service
[root@nfs ~]# systemctl start rpcbind.service
[root@nfs ~]# mkdir /opt/aaa /opt/bbb
[root@nfs ~]# chmod 777 /opt/aaa /opt/bbb
[root@nfs ~]# vim /etc/exports
/opt/aaa 192.168.118.0/24(rw,sync)
/opt/bbb 192.168.118.0/24(rw,sync)
[root@nfs ~]# exportfs -rv
exporting 192.168.118.0/24:/opt/bbb
exporting 192.168.118.0/24:/opt/aaa
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/bbb 192.168.118.0/24
/opt/aaa 192.168.118.0/24
  • 部署web服务器
web1:
[root@web1 ~]# yum install -y httpd
[root@web1 ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      100552/httpd
[root@web1 ~]# mount.nfs 192.168.118.200:/opt/aaa /var/www/html/
mount.nfs: access denied by server while mounting 192.168.118.200:/opt/aaa
[root@web1 ~]# echo "<h1>this is aaa</h1>" >> /var/www/html/index.html
<h1>this is aaa</h1> /var/www/html/index.html
[root@web1 ~]# vim /etc/fstab
192.168.118.200:/opt/aaa /var/www/html nfs defaults,_netdev 0 0
[root@web1 ~]# mount -a
mount.nfs: access denied by server while mounting 192.168.118.200:/opt/aaa
[root@web1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  #将网关设置为LVS服务器的ens33网卡ip
GATEWAY=192.168.118.100
[root@web1 ~]# systemctl restart network
[root@web1 ~]# ping 192.168.140.100
PING 192.168.140.100 (192.168.140.100) 56(84) bytes of data.
64 bytes from 192.168.140.100: icmp_seq=1 ttl=64 time=0.277 ms
64 bytes from 192.168.140.100: icmp_seq=2 ttl=64 time=0.234 ms



web2:
[root@web2 ~]# yum install -y httpd
[root@web2 ~]# systemctl start httpd.service
[root@web2 ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      99537/httpd 
[root@web2 ~]# mount.nfs 192.168.118.200:/opt/bbb /var/www/html
mount.nfs: access denied by server while mounting 192.168.118.200:/opt/bbb
[root@web2 ~]# echo "<h1>this is bbb</h1>" >> /var/www/html/index.html
<h1>this is bbb</h1> /var/www/html/index.html
[root@web2 ~]# vim /etc/fstab
192.168.118.200:/opt/bbb /var/www/html nfs defaults,_netdev 0 0
[root@web2 ~]# mount -a
mount.nfs: access denied by server while mounting 192.168.118.200:/opt/bbb
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 		#配置网关为LVS的ens33网卡IP
GATEWAY=192.168.118.100
[root@web2 ~]# systemctl restart network
[root@web2 ~]# ping 192.168.140.100		#测试是否与外网网卡通讯
PING 192.168.140.100 (192.168.140.100) 56(84) bytes of data.
64 bytes from 192.168.140.100: icmp_seq=1 ttl=64 time=0.233 ms
64 bytes from 192.168.140.100: icmp_seq=2 ttl=64 time=0.166 ms
  • 配置负载调度器LVS
添加网卡ens36:192.168.140.100(VMnet1仅主机模式)注意不要配置网关和DNS

##配置SNAT转发规则
[root@localhost ~]# vim /etc/sysctl.conf		
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost ~]# iptables -t nat -F
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination 
[root@localhost ~]# systemctl start firewalld.service 	#开启防火墙以实现nat地址转发
[root@localhost ~]#  iptables -t nat -A POSTROUTING -s 192.168.118.0/24 -o ens36 -j SNAT --to-source 192.168.140.100
[root@localhost ~]# modprobe ip_vs		#手动加载LVS内核信息
[root@localhost ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

[root@localhost ~]#  yum install -y ipvsadm		#下载ipvsadm
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm		#启动前必须先创建策略
[root@localhost ~]# systemctl status ipvsadm
● ipvsadm.service - Initialise the Linux Virtual Server
   Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
   Active: active (exited) since 星期日 2021-07-25 16:09:18 CST; 10s ago
………………

##清除原有策略,添加新策略
[root@localhost ~]# ipvsadm -A -t 192.168.140.100:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.118.50:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.140.100:80 -r 192.168.118.55:80 -m -w 1
  • 启动策略
[root@localhost ~]# ipvsadm 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.118.50:http          Masq    1      0          0         
  -> 192.168.118.55:http          Masq    1      0          0 

[root@localhost ~]# 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.140.100:80 rr
  -> 192.168.118.50:80            Masq    1      0          0         
  -> 192.168.118.55:80            Masq    1      0          0   

[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm		#保存策略

[root@localhost ~]# watch -n 1 ipvsadm			#持续刷新复制调度器,然后再win10上观察
Every 1.0s: ipvsadm                                                                             Sun Jul 25 19:33:41 2021

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.118.50:http          Masq    1	 0          0
  -> 192.168.118.55:http          Masq    1	 0          0
  • 在win10上观察

先设置号IP地址和网关

  • 在win10浏览器上查看,刷新显示


设置过程注意:

  • LVS复制调度器上的两个网卡的网关需要注释掉
  • 所有服务器的DNS不要设置

以上是关于LVS负载均衡集群(NAT模式部署)!的主要内容,如果未能解决你的问题,请参考以下文章

LVS负载均衡集群(NAT模式部署)!

LVS负载均衡!LVS-NAT模式部署!

LVS负载均衡集群--NAT模式部署

负载均衡集群之——LVS-NAT的部署

LVS负载均衡群集与NAT模式LVS负载均衡部署

LVS负载均衡群集与NAT模式LVS负载均衡部署