目录
LVS负载均衡群集部署
1.DR模式
1.配置负载调度器
2.部署共享存储nfs服务器
3.配置节点服务器
2.NAT模式
0.虚拟机预览
1.部署共享存储(NFS服务器)
2.web节点服务器
1.第一台web节点服务器
2.第二台web节点服务器
3.配置负载调度器 NAT
1.配置SNAT转发规则
2.加载LVS内核模块
3. 安装ipvsadm 管理工具
4.配置负载分配策略
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