02.部署LVS-DR群集

技能展示:

  • 了解LVS-DR群集的工作原理
  • 会构建LVS-DR负载均衡群集

2.1 LVS-DR 集群

        LVS-DR( Linux Virtual Server Director Server )工作模式,是生产环境中最常用的一种工作模式。

2.1.1LVS-DR 工作原理

        LVS-DR 模式, Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问, Director Server Real Server 都需要配置 VIP 地址,工作原理如图 2.1 所示。

2.1 DR 模式工作原理

2.1.2.数据包流向分析

以下为数据包流向分析步骤。
  1. 客户端发送请求到 Director Server,请求的数据报文(源 IP CIP,目标 IP VIP)到达内核空间。
  2. Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。
  3. 内核空间判断数据包的目标 IP 是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改变,然后将数据包发送给 Real Server。
  4. 到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(IP 地址为 VIP,目标 IP CIP),将响应报文通过 lo 接口传送给物理网卡然后向外发出。
  5. Real Server 直接将响应报文传送到客户端。

2.1.3LVS-DR 模式特点

下面是 LVS-DR 模式的特点:
  • Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director Server
  • Director Server 和 Real Server 必须在同一个物理网络中。
  • Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
  • 所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server
  • Real Server 上的 lo 接口配置 VIP IP 地址。

2.2 案例:直接路由模式(LVS-DR

2.2.1.准备案例环境

        在 DR 模式的群集中, LVS 负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入 Internet ,发送给客户机的 Web 响应数据包不需要经过LVS 负载调度器,如图 2.2 所示。
        这种方式入站、出站访问数据被分别处理,因此 LVS 负载调度器和所有的节点服务器都需要配置 VIP 地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络中。

2.2 基于 DR 模式的 LVS 负载均衡群集

2.2.2.配置负载调度器

下面是 配置负载调度器的具体步骤。

1. 配置虚拟 IP 地址(VIP

        采用虚接口的方式(ens33 0 ),为网卡 ens33 绑定 VIP 地址,以便响应群集访问。配置结果为 ens33 192.168.8.10/24 ens33 0 192.168.8.100/24
[root@node0 ~]# cd /etc/sysconfig/network-scripts/
[root@node0 network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0
[root@node0 network-scripts]# vim ifcfg-ens33:0
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.8.100
NETMASK=255.255.255.255[root@node0 network-scripts]# ifup ifcfg-ens33:0
[root@node0 network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.8.10  netmask 255.255.255.0  broadcast 192.168.8.255inet6 fe80::aa3a:d990:b5ee:10  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:5b:2b:c3  txqueuelen 1000  (Ethernet)RX packets 816  bytes 88977 (86.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 641  bytes 72042 (70.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.8.100  netmask 255.255.255.255  broadcast 192.168.8.100ether 00:0c:29:5b:2b:c3  txqueuelen 1000  (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 32  bytes 2592 (2.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 32  bytes 2592 (2.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:de:25:dd  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@node0 network-scripts]# 

2. 调整/proc响应参数

  • 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核重定向参数响应
  • 服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
[root@node0 network-scripts]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0[root@node0 network-scripts]# sysctl -p
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@node0 network-scripts]# 

3. 配置负载分配策略

[root@node0 ~]# modprobe ip_vs
[root@node0 ~]# 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@node0 ~]# 
[root@node0 ~]# yum -y install ipvsadm[root@node0 ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@node0 ~]# [root@node0 ~]# ipvsadm -A -t 192.168.8.100:80 -s rr
[root@node0 ~]# ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.11:80 -g -w 1
[root@node0 ~]# ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.12:80 -g -w 1
[root@node0 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@node0 ~]# cat /etc/sysconfig/ipvsadm
-A -t node0:http -s rr
-a -t node0:http -r 192.168.8.11:http -g -w 1
-a -t node0:http -r 192.168.8.12:http -g -w 1
[root@node0 ~]# systemctl start ipvsadm
[root@node0 ~]# systemctl enable ipvsadm

4. 配置存储服务器192.168.8.13

[root@node3 ~]# yum -y install nfs-utils rpcbind
[root@node3 ~]# mkdir -p /opt/wwwroot
[root@node3 ~]# vim /etc/exports
/opt/wwwroot    192.168.8.0/24(rw,sync,no_root_squash)
[root@node3 ~]# systemctl restart rpcbind
[root@node3 ~]# systemctl restart nfs
[root@node3 ~]# systemctl enable rpcbind
[root@node3 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@node3 ~]# netstat -anpt | grep rpcbind
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      8004/rpcbind        
tcp6       0      0 :::111                  :::*                    LISTEN      8004/rpcbind        
[root@node3 ~]# 

5. 配置节点服务器192.168.8.11

[root@node1 ~]# yum -y install httpd
###配置虚拟IP地址
[root@node1 ~]# cd /etc/sysconfig/network-scripts/
[root@node1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo
DEVICE=lo:0
IPADDR=192.168.8.100
NETMASK=255.255.255.255
ONBOOT=yes[root@node1 network-scripts]# ifup lo:0
[root@node1 network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.8.11  netmask 255.255.255.0  broadcast 192.168.8.255inet6 fe80::7457:78b3:7f51:9a01  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:6c:32:f2  txqueuelen 1000  (Ethernet)RX packets 21487  bytes 29790262 (28.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 2877  bytes 246265 (240.4 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 32  bytes 2592 (2.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 32  bytes 2592 (2.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 192.168.8.100  netmask 255.255.255.255loop  txqueuelen 1000  (Local Loopback)virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:0b:33:85  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@node1 network-scripts]# ###调整/proc响应参数
[root@node1 network-scripts]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2[root@node1 network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@node1 network-scripts]# ###配置httpd 挂载测试页
[root@node1 ~]# showmount -e 192.168.8.13
Export list for 192.168.8.13:
/opt/wwwroot 192.168.8.0/24
[root@node1 ~]# 
[root@node1 ~]# mount 192.168.8.13:/opt/wwwroot /var/www/html/
[root@node1 ~]# vim /etc/fstab 
192.168.8.13:/opt/wwwroot      /var/www/html    nfs     defaults,_netdev   0 0[root@node1 ~]# systemctl start httpd
[root@node1 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node1 ~]# 
[root@node1 ~]# vim /var/www/html/index.html
<h1>www.bdqn.com</h1>

6. 配置节点服务器192.168.8.12

[root@node2 ~]# yum -y install httpd###配置虚拟IP地址
[root@node2 ~]# cd /etc/sysconfig/network-scripts/
[root@node2 network-scripts]# 
[root@node2 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.8.100
NETMASK=255.255.255.255
ONBOOT=yes[root@node2 network-scripts]# ifup lo:0
[root@node2 network-scripts]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.8.12  netmask 255.255.255.0  broadcast 192.168.8.255inet6 fe80::e986:8b82:f6f3:b650  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:59:ba:dd  txqueuelen 1000  (Ethernet)RX packets 22691  bytes 31861771 (30.3 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3769  bytes 307582 (300.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 32  bytes 2592 (2.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 32  bytes 2592 (2.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 192.168.8.100  netmask 255.255.255.255loop  txqueuelen 1000  (Local Loopback)virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255ether 52:54:00:7f:56:52  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@node2 network-scripts]# ###调整/proc响应参数
[root@node2 network-scripts]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2[root@node2 network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@node2 network-scripts]# ###httpd 挂载测试页
[root@node2 ~]# showmount -e 192.168.8.13
Export list for 192.168.8.13:
/opt/wwwroot 192.168.8.0/24
[root@node2 ~]# mount 192.168.8.13:/opt/wwwroot /var/www/html
[root@node2 ~]# vim /etc/fstab 
192.168.8.13:/opt/wwwroot           /var/www/html/     nfs   defaults,_netdev 0 0[root@node2 ~]# systemctl start httpd
[root@node2 ~]# systemctl enable httpd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/344410.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算:连接实时数据的力量与未来发展之路

边缘计算是一种分布式计算范式&#xff0c;它旨在将数据处理、存储和应用服务带到数据源的近端&#xff0c;即网络的“边缘”。在边缘计算模型中&#xff0c;算力和存储资源距离末端用户或数据源更近&#xff0c;这减少了数据在网络中传输的距离&#xff0c;从而降低延迟&#…

无心剑中译卡明斯《从未游历之地》

Somewhere I Have Never Travelled 从未游历之地 Edward Estlin Cummings 爱德华埃斯特林卡明斯 somewhere i have never traveled, gladly beyond any experience, your eyes have their silence: in your most frail gesture are things which enclose me or which i can…

DBeaverEE for Mac:强大的数据库管理工具

在当今数字化时代&#xff0c;数据库已成为企业信息管理的核心工具。为了更高效地管理和操作数据库&#xff0c;选择一个强大且易用的数据库管理工具是非常重要的。而DBeaverEE for Mac&#xff08;数据库管理工具&#xff09;正是一款值得推荐的选择。 DBeaverEE for Mac 是一…

智能分析网关V4基于AI视频智能分析技术的周界安全防范方案

一、背景分析 随着科技的不断进步&#xff0c;AI视频智能检测技术已经成为周界安全防范的一种重要手段。A智能分析网关V4基于深度学习和计算机视觉技术&#xff0c;可以通过多种AI周界防范算法&#xff0c;实时、精准地监测人员入侵行为&#xff0c;及时发现异常情况并发出警报…

【JAVA】concurrentHashMap和HashTable有什么区别

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 同步性质&#xff1a; 性能&#xff1a; 允许空键值&#xff08;Allow Nulls&#xff09;&#xff1a; 迭代器&#xff08;Iter…

【Emgu.CV教程】5.1、几何变换之平移

图像的几何变换对于图像处理来说&#xff0c;也是最基础的那一档次&#xff0c;包括平移、旋转、缩放、透视变换等等&#xff0c;也就是对图像整理形状的改变&#xff0c;用到的函数都比较简单&#xff0c;理解起来也很容易。但是为了凑字数&#xff0c;还是一个函数一个函数的…

InternLM第3次课作业

部署 参考github教程&#xff1a;https://github.com/InternLM/tutorial/tree/main/langchain 问题1&#xff1a; windows端口映射过程命令 ssh -i C:\\Users\\breat/.ssh/id_rsa.pub -CNg -L 7860:127.0.0.1:7860 rootssh.intern-ai.org.cn -p 3 4145 中&#xff0c;提示找不…

JavaScript数据类型、判断、检测

JavaScript数据类型 number、string、boolean、null、undefined、symbol、bigint Object【Array、RegExp、Date、Math、Function】 存储方式 1. 基础类型存储在栈内存中&#xff0c;被引用或者拷贝时&#xff0c;会创建一个完全相同的变量。 2. 引用类型存放在堆内存中&…

Linux基础工具的使用(yum,vim,gcc,g++,gdb,make/makefile)【详解】

目录 linux软件包管理器-yum什么是软件包&#xff1f;查找软件包如何安装软件卸载软件 linux编辑器 - vimvim的基本概念vim模式之间的切换vim命令模式各命令汇总vim底行模式各命令汇总 Linux编译器 - gcc/ggcc/g的作用gcc/g选项预处理编译汇编链接静态库与动态库 Linux调试器 -…

四川古力未来科技有限公司:抖音小店的崛起之路

随着互联网的飞速发展&#xff0c;电子商务已经成为人们日常生活中不可或缺的一部分。作为一家以科技为核心的公司&#xff0c;四川古力未来科技有限公司在电子商务领域中崭露头角&#xff0c;特别是其抖音小店的发展引人注目。 四川古力未来科技有限公司的抖音小店自开业以来&…

066:vue中实现二维数组的全选、全不选、反选、部分全选功能(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeM…

【LeetCode:30. 串联所有单词的子串 | 滑动窗口 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…