vanturman 2019-11-04
负载均衡集群:LVS haproxy
高可用集:keepalived RHCS(主要用于金融机构)
一、LVS配置负载均衡集群
两种模式:
1、LVS/NAT模式负载均衡集群
2、LVS/DR模式负载均衡集群
三种工作模式
1、NAT网络地址转换模式,运用的时NAT地址转换
2、TUN模式:隧道模式,工作中不常用
3、DR模式:路由模式,不用做地址转换
1、配置LVS/NAT模式负载均衡集群
LVS服务器对客户端访问应用服务器时,对客户端到应用服务器的链接进行负载均衡,确保
应用服务器按照LVS算法进行负载分配,例如:用轮询的方式,这样应用服务器平均分配来自
客户端的访问压力
搭建步骤
LVS集群服务器配置
1、开启内核路由转发功能,使其能够收发来自不同网段的IP包
[ ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1------------------------------------新加内容。开启内核的路由IP包转发功能
[ ~]# sysctl -p----------------------------------查看是否配置成功
net.ipv4.ip_forward = 1
配置LVS服务(NAT模式)
安装软件包
[ ~]# yum -y install ipvsadm------------------安装服务
[ ~]# rpm -q ipvsadm
ipvsadm-1.27-7.el7.x86_64
添加虚拟服务
[ ~]# ipvsadm -A -t 192.168.10.10:80 -s rr
ip:192.168.10.10地址为LVS服务器的外联接口地址,也就是虚拟IP,当外界要访问192.168.1.11或是192.168.1.12服务器时,输入192.168.10.10即可访问,不用输入真是服务器的ip
80:表示正式服务器开放的端口,即对外开放的服务
rr:表示用轮询的方式对真实服务器进行负载分担
查看策略:
添加realserver,即真实应用服务器
[ ~]# ipvsadm -a -t 192.168.10.10:80 -r 192.168.1.11:80 -m
[ ~]# ipvsadm -a -t 192.168.10.10:80 -r 192.168.1.12:80 -m
192.168.1.11:80:真实服务器ip地址及端口
-m:表示用NAT模式,没有-m是DR模式
-g:DR模式
-i:TUN模式
查看策略
保存配置,使其永久生效
[ ~]# ipvsadm-save
2、web-server运行王网站服务并配置,
2台都需要安装httpd服务
[ ~]# yum -y install httpd
[ ~]# systemctl start httpd
设置网关地址
[ ~]# route add default gw 192.168.1.10------该地址为和LVS服务对接的接口地址
配好后测试:
测试:
查看访问状态信息
LVS调度算法(10种 ) man ipvsadm
常用的有4中
rr:轮询
wrr:根据权重俩轮询,权重值不同
lc:
wlc:
ipvsadm命令选项
修改调度算法:[ ~]# ipvsadm -E -t 192.168.10.10:80 -s wrr
修改真是服务器的权重值:ipvsadm -e -t 192.168.10.10:80 -r 192.168.1.11:80 -w 3 ----修改权重值为3
删除真实服务器:ipvsadm -d -t 192.168.10.10:80 -r 192.168.1.11:80
清除虚拟服务:ipvsadm -C
查看状态:[ ~]# ipvsadm -Ln --stats
如果是启动报错,处理方法:
[ ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[ ~]# systemctl start ipvsadm
2、配置LVS/DR模式负载均衡集群(负载均衡集群作为旁挂使用)生产环境中应用较多
LVS服务器对客户端访问应用服务器时,对客户端到应用服务器的链接进行负载均衡,确保
应用服务器按照LVS算法进行负载分配,例如:用轮询的方式,这样应用服务器平均分配来自
客户端的访问压力
2.1、搭建环境
给真实应用服务器realserver绑定虚拟IP(VIP)地址,并设置网络接口帮兄弟接口收发IP包,且忽略arp广播包
给分发器(LVS服务器)绑定虚拟IP(VIP)地址
真实服务器必须和虚拟IP在同一网段
LVS/DR通信原理:当客户端访问web应用服务器时,需要访问LVS/DR服务器上的虚拟IP(192.168.1.100),然后LVS服务器启动策略后通过真实IP(192.168.1.10)将客户端请求转发给web应用服务器的真实IP(192.168.1.11/192.168.1.12),真实应用服务器接受到请求后,将应答文件通过兄弟接口lo:1直接回复给客户端,不再由LVS转发。
注:
客户端发起请求的地址时LVS服务器的eth0:1的IP地址,请求到达LVS服务器后,调用负载分发策略后,再通过eth0的ip地址向真实web应用服务器转发请求,真实web应用服务器从自己的eth0网卡收到请求后,将应答数据包提交给eth0:1的ip地址直接转发给客户端,为了保证真实web服务器应答文件能够不经过LVS服务器直接转发给客户端,因此就需要真实应用服务器的teh0:1的地址和LVS服务上的虚拟地址eth0:1的地址一样,也就是让客户端发送和接收文件的源、目地址一致。
对于真实web应用服务器上只能选择lo口配置ip,因为lo上的ip只能和自己的主机通信,不能和其他主机通信,这样就避免了IP冲突,同时要让lo接口能够替本地的网卡eth0接收和发送数据包,就需要对lo口进行相应配置,又要避免ip冲突。这就需要要启用忽略arp广播包,这样当外界有向192.168.1.100的arp请求时,这样真实的web服务器就不会有响应,而是由LVS服务器上的eth0:1上的IP 192.168.1.100来响应,
lo:1的ip地址要和LVS服务器上的虚拟IP地址一样,这样真实web应服务器在应答客户端请求时就不需要在经过LVS服务器转发,为了让客户端的数据包收发正常,即客户端在发送请求时的目的地址(192.168.1.100)和收到服务端的应答文件的源地址需要一致都是(192.168.1.100),所以ip地址需要配成一致的。
1、给真实服务器配置虚拟IP,此时lo网卡上有两个IP地址,下面的配置只是临时生效
让本机的lo网卡和eth0网卡成为兄弟接口,让lo网卡替eth0收发包
[ ~]# cd /proc/sys/net/ipv4/conf/
[ conf]# cd lo/
[ lo]# ls
[ ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore -------------------arp_ignore该文里面的值默认0,改为1,表示让lo网卡忽略arp广播包,0表示不忽略
[ ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ---------------帮助兄弟网卡eth0接收和发送数据包
[ ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[ ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
重启网卡
[ ~]# ifconfig lo:1 192.168.1.100/32
[ ~]# ifconfig lo:1 192.168.1.100/32
让子网卡永久生效:
法一、
在给文件/etc/rc.local里面添加ifconfig eth0:0 192.168.36.110 netmask 255.255.255.0 up,然后开机就会自动自行,但这个方法最方便,但不太可靠,有时会失灵。
法二:
cd /etc/sysconfig/network-scripts/
cp -r ifcfg-lo ifcfg-lo:1
vim ifcfg-lo:1
DEVICE=lo:1 //虚拟网络接口,随意
ONBOOT=yes //系统启动时激活
BOOTPROTO=static //使用静态ip地址
IPADDR=192.168.1.100 //该虚拟网络接口的ip别名,随意
NETMASK=255.255.255.255 //子网掩码,对应ip别名
GATEWAY=192.168.1.1 //网关,对应ip别名
HWADDR=00:10:5A:5E:B1:E4 //网卡MAC地址,无需更改
USERCTL=no //是否给予非root用户设备管理权限
2、配置LVS服务器(分发服务器)
[ ~]# ifconfig eno16777736:1 192.168.1.100/32
[ ~]# yum -y install ipvsadm
添加策略:
[ ~]# ipvsadm -A -t 192.168.1.100:80 -s wrr---------------------添加虚拟服务,该IP为客户端访问时的地址
[ ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -w 3 -g-------添加真实应用服务器,"-g"表示用DR模式, -w表示权重
[ ~]# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.12:80 -g------------ 添加真实应用服务器,"-g"表示用DR模式
前言:在涉及到对外项目,经手许多小中型网站的架构,F5、LVS及Nginx都比较多,我想一种比较通俗易懂的语气跟大家说明下何谓负载均衡,何谓Linux集群,帮助大家走出这个误区,真正意义上来理解它们。