IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> LVS集群 -> 正文阅读

[系统运维]LVS集群

介绍

LVS:Linux Virtual Server

LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

LVS的模型中有两个角色:
调度器:Director,又称为Dispatcher,Balancer。调度器主要用于接受用户请求。
真实主机:Real Server,简称为RS。用于真正处理用户的请求。

而为了更好地理解,我们将所在角色的IP地址分为以下三种:

  • Director Virtual IP:调度器用于与客户端通信的IP地址,简称为VIP
  • Director IP:调度器用于与RealServer通信的IP地址,简称为DIP。
  • Real Server : 后端主机的用于与调度器通信的IP地址,简称为RIP。
    在这里插入图片描述

LVS工作原理

LVS-NAT
NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。

在这里插入图片描述
原理:基于ip伪装MASQUERADES,多目标DNAT。所有请求和响应都经由Director调度器。

LVS-TUN
在LVS(NAT)模式的集群环境中,由于所有的数据请求及响应的数据包都需要经过LVS调度器转发,如果后端服务器的数量大于10台,则调度器就会成为整个集群环境的瓶颈。我们知道,数据请求包往往远小于响应数据包的大小。因为响应数据包中包含有客户需要的具体数据,所以LVS(TUN)的思路就是将请求与响应数据分离,让调度器仅处理数据请求,而让真实服务器响应数据包直接返回给客户端。
在这里插入图片描述
原理:基于隧道封装技术。在IP报文的外卖再包一层IP报文。
当Director接收到请求的时候,选举出调度的RealServer
当接受到从Director而来的请求时,RealServer则会使用lo接口上的VIP直接响应CIP。
这样CIP请求VIP的资源,收到的也是VIP响应。

LVS-DR
在这里插入图片描述
原理:当Director接收到请求之后,通过调度方法选举出RealServer。
讲目标地址的MAC地址改为RealServer的MAC地址。
RealServer接受到转发而来的请求,发现目标地址是VIP。RealServer配置在lo接口上。
处理请求之后则使用lo接口上的VIP响应CIP。

LVS-NAT模式配置http负载均衡

,三台服务器分别配置了对应的本地静态地址DIP和RIP,且在一个内网中。

DR有两块网卡,一块IP是内网的DIP,另一块IP是公网IP的VIP

RS的网关指向DIP

配置ip地址信息

#DR需两块网卡
[root@DR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2f:dc:34 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.129/24 brd 192.168.8.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:dc34/64 scope link 
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2f:dc:3e brd ff:ff:ff:ff:ff:ff
    inet 192.168.46.129/24 brd 192.168.46.255 scope global dynamic noprefixroute ens224
       valid_lft 1787sec preferred_lft 1787sec
    inet6 fe80::2667:64f9:f55f:29ce/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#RS-1网关指向DR
[root@RS-1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
GATEWAY=192.168.8.129
[root@RS-1 ~]# systemctl restart NetworkManager
[root@RS-1 ~]# ifdown ens160 ;ifup  ens160
[root@RS-1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.129   0.0.0.0         UG    100    0        0 ens160
192.168.8.0     0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@RS-1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:13:fa:e6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.131/24 brd 192.168.8.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe13:fae6/64 scope link 
       valid_lft forever preferred_lft forever

#RS-2网关指向DR
[root@RS-2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
GATEWAY=192.168.8.129
[root@RS-2 ~]# systemctl restart NetworkManager
[root@RS-2 ~]# ifdown ens160 ;ifup  ens160
[root@RS-2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.129   0.0.0.0         UG    100    0        0 ens160
192.168.8.0     0.0.0.0         255.255.255.0   U     100    0        0 ens160

[root@RS-2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:0c:d0:dc brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.132/24 brd 192.168.8.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe0c:d0dc/64 scope link 
       valid_lft forever preferred_lft forever

DR上开启IP转发

[root@DR ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
[root@DR ~]# sysctl -p
net.ipv4.ip_forward = 1

DR上配置lvs-nat的转发机制

#LVS依赖于ipvsadm来进行配置,所以我们首先先安装ipvsadm
[root@DR ~]# yum -y install ipvsadm

[root@DR ~]# ipvsadm -At 192.168.46.129:80 -s rr
[root@DR ~]# ipvsadm -at 192.168.46.129:80 -r 192.168.8.131:80 -m
[root@DR ~]# ipvsadm -at 192.168.46.129:80 -r 192.168.8.132:80 -m

#保存配置信息并查看规则
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# 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.46.129:80 rr
  -> 192.168.8.131:80             Masq    1      0          0         
  -> 192.168.8.132:80             Masq    1      0          0  

RS上安装httpd并启动

[root@RS-1 ~]# yum -y install httpd
[root@RS-1 ~]# echo 'this is RS-1' > /var/www/html/index.html
[root@RS-1 ~]# systemctl restart httpd

[root@RS-2 ~]# yum -y install httpd
[root@RS-2 ~]# echo 'this is RS-2' > /var/www/html/index.html
[root@RS-2 ~]# systemctl restart httpd

在这里插入图片描述

LVS-DR模式配置http负载均衡

LVS服务器配置要点

LVS是被编译进内核中,主要分为两部分ipvs和ipvsadm,ipvs是LVS软件核心,是运行在LB上的,这是个基于ip层的负载均衡;ipvsadm是用户空间的集群管理工具。

要想起到负载均衡效果,那么所有请求报文必须发往LVS服务器(DS),然后DS根据指定算法分发到后端服务器上,因此DS必须配置VIP地址,VIP是与公网client通信地址,这样DS才能接受到请求报文进行分发。

一定要先设置好内核参数在配置VIP,如果先配置VIP,VIP配置好后会立即通告给所有人,而修改内核参数就是为了不通告

LVS-DR模式的注意情况:

DR的VIP 和 RS 必须在同一个网段,不然广播后所有的包都会丢掉: 提前确认LVS/硬件LB 是什么模式,是否需要在同一个网段 所有的RS都必须绑定VIP的IP地址,否则RS收到package后发现dst 不是自己的IP,所有包都会丢掉。 RS处理完包后直接把package 通过dst IP 发送给 client ,不通过LVS/迎接IP 了这样的LVS /VIP 效率会更高一点。

DR上配置IP

[root@DR ~]# ip address add 192.168.8.50/24 dev ens160
[root@DR ~]# ip a
ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:2f:dc:34 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.129/24 brd 192.168.8.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.8.50/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe2f:dc34/64 scope link 
       valid_lft forever preferred_lft forever


RS上配置arp内核参数

#两台RS都需做此操作。 添加下列两行内容
[root@RS-1 ~]# cat /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS-1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@RS-2 ~]# cat /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS-2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


RS上配置VIP

一定要先设置好内核参数在配置VIP,如果先配置VIP,VIP配置好后会立即通告给所有人,而修改内核参数就是为了不通告

DR服务器的网卡的IP:192.168.8.50作为VIP

[root@RS-1 ~]# ip addr add 192.168.8.50/24 dev ens160
[root@RS-2 ~]# ip addr add 192.168.8.50/24 dev ens160

DR上配置lvs-dr转发规则

[root@DR ~]# yum -y install ipvsadm

[root@DR ~]# ipvsadm -A -t 192.168.8.50:80 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.8.50:80 -r 192.168.8.131:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.8.50:80 -r 192.168.8.132:80 -g
[root@DR ~]# ipvsadm -Sn
-A -t 192.168.8.50:80 -s rr
-a -t 192.168.8.50:80 -r 192.168.8.130:80 -g -w 1
-a -t 192.168.8.50:80 -r 192.168.8.132:80 -g -w 1

[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm

RS上安装httpd并启动

[root@RS-1 ~]# yum -y install httpd
[root@RS-1 ~]# echo 'RS-1' > /var/www/html/index.html
[root@RS-1 ~]# systemctl restart httpd

[root@RS-2 ~]# yum -y install httpd
[root@RS-2 ~]# echo 'RS-2' > /var/www/html/index.html
[root@RS-2 ~]# systemctl restart httpd

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 12:08:50  更:2021-10-15 12:10:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:25:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码