Centos7 LVS负载均衡DR模型单机以和高可用实践
1、负载均衡集群类型
负载均衡技术类型:基于 4 层负载均衡技术、基于 7 层负载均衡技术
负载均衡实现方式:硬件负载均衡设备、软件负载均衡
硬件负载均衡产品:F5 、深信服 、Radware
软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)
2、LVS 就是一个四层(传输层)负载均衡器,支持 TCP/UDP 的负载均衡
三层结构:负载调度器、服务器池、共享存储。
架构对象:
- VS:Virtual Server,也称为 Director,负载均衡服务器
- RS:Real Server,真正的服务器,集群中各节点
- VIP:Director 向外部提供服务的 IP
- DIP:Director 向内部与 RS 通信的 IP
- RIP:真实服务器的 IP
- CIP:客户端的 IP
3、LVS四种工作模式
LVS-NAT(NAT模式)
原理:客户端发送请求数据包到负载均衡器(CIP->VIP),负载均衡器改装数据包发送到服务器(CIP->RIP),服务端处理后返回数据包给负载均衡器(RIP->CIP),负载均器再进行数据包改装后返回给客户端(VIP->CIP),完成负载,该种模式无论流量进来还是出去都要经过负载均衡器。
LVS-DR(直接路由模式)
原理:DR模式的实现需要RS绑定LVS的vip,且保证该vip只是单个RS内部可见,对外不可见。一个请求打到负载均衡器(CIP->VIP),LVS 只需要将网络帧的 MAC 地址修改为某一台 RS 的 MAC,然后把该包转发到相应的RS处理,RS收到LVS转发过来的包,链路层发现MAC是自己的,到网络层,发现IP也是自己的(事先关联的LVS的ip),于是包被合法接收,响应时RS则直接向客户端返回,不再经过LVS。
DR模式流量不再经过lvs,且返回可以直接返回给客户端,只需要经过lvs一次,因此DR模式是性能最好的一种模式。
LVS-TUN(IP隧道(Tunnel)模式,不常用)
原理:负载均衡器把客户端发来的数据包(CIP->VIP),封装一个新的IP头标记(DIP-(CIP-VIP)-RIP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。
FULL-NAT模式(双向转换模式,不常用)
原理:客户端对负载均衡器VIP发起请求(CIP->VIP),负载均衡器接过请求发现是请求后端服务,对请求报文做full-nat,把源ip改为DIP{,把目标ip转换为任意后端RS的RIP,然后发往后端,RS接到请求后进行响应,响应源ip为RIP目标ip还是DIP,又内部路由路由到负载均衡器,负载均衡器接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP,返回给客户端。
4、LVS 负载均衡算法
静态负载均衡
-
rr(round robin,轮询 )
-
wrr(weight round robin,加权轮询)
-
sh(source hashing,源地址 HASH)
-
dh(destination hashing,目标地址 HASH)
动态负载均衡
-
lc(leash-connection,最少连接 )
- 简单算法:active * 256 inactive (谁的小选谁)
-
wlc(加权最少连接)
- 简单算法:(active * 256 inactive) / weight(谁的小选谁)
-
sed(最少期望延迟)
- 简单算法:(active 1) * 256 / weight (谁的小选谁)
-
nq(never queue,永不排队)
-
LBLC(基于局部性的最少连接 )
-
LBLCR(基于局部性的带复制功能的最少连接)
5、实现DR模型搭建
(1)、节点准备
node1:192.168.2.168 ----作为负载均衡器
node2:192.169.2.136
node3:192.168.2.134
(2)、开始搭建
配置lvs负载均衡器vip网络子接口(node1)
-
ifconfig enp0s3:2 192.168.2.100/24
-
# 撤掉命令
-
ifconfig enp0s3:2 down
配置RS服务器(node02、node03)
修改arp协议(arp_ignore、arp_announce)
-
cd /proc/sys/net/ipv4/conf/enp0s3
-
# 修改协议(注意不可使用vi进行修改)
-
echo 1 > arp_ignore
-
echo 2 > arp_announce
-
# 查看是否修改成功
-
cat arp_ignore
-
cat arp_announce
-
# 退回到all目录进行全局修改
-
cd ../all
-
echo 1 > arp_ignore
-
echo 2 > arp_announce
设置隐藏vip(node2\node3)
ifconfig lo:2 192.168.2.100 netmask 255.255.255.255
搭建http服务(node2\node3)
-
# 安装httpd服务
-
yum install httpd -y
-
# 启动服务
-
service httpd start
-
# 创建主页(用于测试服务)
-
vi /var/www/html/index.html
-
# index填充内容node2
-
node2:form 192.168.2.136
-
# index填充内容node3
-
node3:form 192.168.2.134
打开浏览器测试httpd服务是否成功
LVS服务配置(node01)
-
# 安装ipvsadm
-
yum install ipvsadm
-
# 配置LVS入口规则(采用轮询机制),IP为新创建的enp0s3:2对应ip
-
ipvsadm -A -t 192.168.2.100:80 -s rr
-
#配置出口规则(192.168.2.136\192.168.2.134 分别是node2、3的ip,分配权重为1)
-
ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.136 -g -w 1
-
ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.134 -g -w 1
查看配置是否成功
ipvsadm -ln
验证
浏览器访问192.168.2.100,疯狂F5,查看浏览器是否在node2、node3之间切换,在node1~3上分别使用命令 netstat -natp查看socket连接,会发现node1上没有socket记录,node2、node3上存在socket记录,进一步说明负载均衡器,不会和客服端建立连接。
6、DR keepalived高可用搭建
(1)、准备节点
node1:192.168.2.168 --lvs主机
node2:192.169.2.136
node3:192.168.2.134
node4:192.168.2.181 --lvs备机
注意:如果手动搭建过,lvs单机版本(node1)可先把安装的IP删掉
-
# 卸载ipvsadm
-
ipvsadm -C
-
# 这里安装过enp0s3:2
-
ifconfig enp0s3:2 down
node2和node3保持单机版导通的配置
安装keeplived(node1\node4)
-
# 安装keeplived服务
-
yum install keepalived ipvsadm -y
-
# 修改配置
-
cd /etc/keepalived/
-
# 备份配置文件
-
cp keepalived.conf keepalived.conf.bak
-
# 打开并修改配置文件
-
vi keepalived.conf
-
# 修改配置(node1为master配置,node4配置区别地方有特殊说明,其余地方和node相同)
-
# vrrp_strict # 注意一定要注解掉,否则配置的vip接口ping不通
-
vrrp_instance VI_1 {
-
state MASTER # node4 BACKUP
-
interface enp0s3 # 设置自己虚拟机使用的虚拟网络
-
virtual_router_id 51
-
priority 100 # node4 50
-
advert_int 1
-
authentication {
-
auth_type PASS
-
auth_pass root # 主备机服务器密码要设置一致
-
}
-
virtual_ipaddress {
-
192.168.2.100/24 dev enp0s3label enp0s3:2
-
}
-
}
-
-
# 注意virtual_server 只保留一个
-
virtual_server 192.168.2.100 80 {
-
delay_loop 6
-
lb_algo rr
-
lb_kind DR # 负载模式设置成DR
-
nat_mask 255.255.255.0 #设置子网掩码
-
persistence_timeout 0 # 多少秒内访问同一个服务器
-
protocol TCP
-
-
real_server 192.168.2.136 80 {
-
weight 1
-
HTTP_GET {
-
url {
-
path /
-
status_code 200
-
}
-
connect_timeout 3
-
nb_get_retry 3
-
delay_before_retry 3
-
}
-
}
-
real_server 192.168.2.134 80 {
-
weight 1
-
HTTP_GET {
-
url {
-
path /
-
status_code 200
-
}
-
connect_timeout 3
-
nb_get_retry 3
-
delay_before_retry 3
-
}
-
}
-
}
复制keepalived.conf到node4,并修改相应配置,参考上步骤(仅仅修改区分地方即可)
scp ./keepalived.conf root@node04:`pwd`
启动keepalived服务(node1\node4)
-
-
systemctl start keepalived
-
-
systemctl stop keepalived
验证:浏览器访问返回node2或者node3主页结果表示成功
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggbffi
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01