WEB集群——负载均衡集群

目录

一、 LVS-DR 群集。

1、LVS-DR工作原理

2、LVS-DR模式的特点

3、部署LVS-DR集群

3.1 配置负载调度器(192.168.186.100) 

3.2 第一台web节点服务器(192.168.186.103)

3.3 第二台web节点服务器(192.168.186.102) 

3.4 客户端测试

3.5 测试

二、nginx负载均衡。

1、反向代理工作过程

 2、反向代理服务配置

2.1 安装Nginx

2.2 配置反向代理

2.3 配置hosts文件

2.4 在web1服务器和web2服务器编写index.html

3、负载均衡

4、负载均衡地配置


一、 LVS-DR 群集。

1、LVS-DR工作原理

LVS-DR(Linux Virtual Server Director Server)

名称缩写说明

虚拟IP地址(Virtual IP Address)

VIPDirector用于向客户端计算机提供服务的IP地址
真实IP地址(Real Server IP Address)RIP在集群下面节点上使用IP地址
Director的IP地址(Director IP Address)DIPDirector用于连接内外网络的IP地址
客户端主机IP地址(Client IP Address)CIP客户端用户计算机请求集群服务器的IP地址,该地址用作发送集群的请求的源IP地址  

首先,来自客户端计算机 CIP 的请求被发送到 Director VIP
接着,Director 使用相同的 VIP 目的 IP 地址将 请求发送到集群节点或真实服务器。
然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过director ),并且以此回复数据包使用的目的 VIP 地址作为源 IP 地址。
因此,实际上 是客户计算机被“ 欺骗 了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数 据包给一台计算机(LB ),并从另一台计算机( RS )接收回复的数据包。 

 2、LVS-DR模式的特点

1 )所有集群节点 RS 必须和 Director 在相同的物理网段(即同一个局域网中);
2 )所有客户端入站(而不是出站)请求由 Director 首先接收,并转发给集群节点 RS
3 )集群节点 RS 通常来说最好带外部 IP ,而不使用 Director 及某固定机器作为默认网关,以便将数据包直 接回复给客户端计算机,且不会产生回包的瓶颈;
4 )所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,以便验证通过目的 IP RS 的数据包;
5 )由于所有集群节点 RS 上必须在 lo 网卡上绑定 VIP 地址,因此,带来 arp 问题,即集群节点 RS 默认会相 应发往Director VIP 的数据包。因此要对所有集群节点 RS ARP 抑制处理,把响应 VIP 的请求交给 LVS Director;
6 )很多操作系统都可以用在集群内部的 RS 真实服务器上只要该操作系统能够实现 ARP 隐藏,如: Windows, linux unix
7 LVS/DR 模式不需要开启调度器转发功能,这点和 LVS/NAT 模式是不同的。
8 LVS/DR Director (服务器数量 100 台)可以比 LVS-NAT Director (服务器数量 10-20 台)承受更多的 并发请求和转发更多的服务器数量。

3、部署LVS-DR集群

主机IP地址
DR服务器192.168.186.100
web服务器1192.168.186.103
web服务器2192.168.186.102
客户端192.168.206.100
vip(虚拟换回)192.168.186.200

3.1 配置负载调度器(192.168.186.100) 

#关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0#安装ipvsadm工具
[root@localhost ~]# yum install ipvsadm -y#配置虚拟IP地址(VIP:192.168.186.200)
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0[root@localhost network-scripts]# vim ifcfg-ens33:0
#删除UUID,dns与网关,注意子网
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.186.200
NETMASK=255.255.255.255#重启网络服务、启动网卡
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifup ifcfg-ens33:0##调整/proc响应参数 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
[root@localhost network-scripts]# 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#刷新配置
[root@localhost network-scripts]# sysctl -p
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#加载模块
[root@localhost network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# 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@localhost network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm#手工执行配置添加LVS服务并增加两台RS
##添加真实服务器-a  
##指定VIP地址及TCP端口-t   
##指定RIP地址及TCP端口 -r 
##指定DR模式-g
[root@localhost network-scripts]# ipvsadm -C
[root@localhost network-scripts]# ipvsadm --set 30 5 60
[root@localhost network-scripts]# ipvsadm -A -t 192.168.186.200:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.103:80 -g
[root@localhost network-scripts]# ipvsadm -a -t 192.168.186.200:80 -r 192.168.186.102:80 -g#保存设置
[root@localhost network-scripts]# 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.186.200:80 wlc-> 192.168.186.103:80           Route   1      0          0        -> 192.168.186.102:80           Route   1      0          0         

3.2 第一台web节点服务器(192.168.186.103)

#关闭防火墙
[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0#安装httpd,开启服务
[root@web1 ~]# yum install httpd -y
[root@web1 ~]# systemctl start httpd #创建一个站点文件并写入内容
[root@web1 ~]# echo "this is 192.168.186.103" > /var/www/html/index.html #添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.186.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#重启网络
[root@web1 network-scripts]# systemctl restart network##添加路由
[root@web1 network-scripts]# ifup lo:0
[root@web1 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 192.168.186.200  netmask 255.255.255.255loop  txqueuelen 1000  (Local Loopback)
[root@web1 network-scripts]# route add -host 192.168.169.200 dev lo:0##调整proc相应参数
[root@web1 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[root@web1 network-scripts]sysctl -p

3.3 第二台web节点服务器(192.168.186.102) 

#关闭防火墙
[root@web2 ~]# systemctl stop firewalld           
[root@web2 ~]# setenforce 0#安装httpd,开启服务
[root@web2 ~]# yum install httpd -y
[root@web2 ~]# systemctl start httpd#创建站点文件
[root@web2 ~]# echo "this is 192.168.186.102" > /var/www/html/index.html#添加环回网卡,修改环回网卡名,IP地址,子网掩码
[root@web2 ~]# cd /etc/sysconfig/network-scripts/
[root@web2 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web2 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.185.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0#设置路由
[root@web2 network-scripts]# route add -host 192.168.186.200 dev lo:0
[root@web2 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.186.2   0.0.0.0         UG    100    0        0 ens33
192.168.186.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.186.200 0.0.0.0         255.255.255.255 UH    0      0        0 lo#开机执行命令
[root@web2 network-scripts]# vim /etc/rc.d/rc.local 
/usr/sbin/route add -host 192.168.59.188 dev lo:0#调整 proc 响应参数
[root@web2 network-scripts]# vim /etc/sysctl.conf 
[root@web2 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

 3.4 客户端测试

3.5 测试

 

 

二、nginx负载均衡。

1、反向代理工作过程

         从图 6-2可知,若用户A 、用户B 、用户C 同时对反向代理服务器发送请求,反向代理服务器则根据其内部的具体配置,将用户的请求分发给后端服务器进行处理,并将后端服务器处理后的响应结果作为自己的响应结果返回给用户。 反向代理服务器的整个处理过程,用户并不知情 。因此,从上述对代理和反向代理的介绍可以总结出两者的特性,主要有以下几点:

(1)、安全性: 正向代理的客户端能够在隐藏自身信息的同时访问任意网站,这给网络安 全带来了极大的威胁。因 此, 在使用时必须采取安全措施以确保仅为经过授权的客 户端用户提供服务 而反向代理的客户端用户只能通过外网来访问代理服务器,并且用户并不知道自己访问的是一个代理服务器,好处就是反向代理将真正的处理放在内网中,有效地提高了网络安全性。
(2)、功能性 : 向代理的主要用途是为在防火墙内的局域网用户提供访问 Int rnet途径 而反向代理的主要用途是将防火墙后的服务器提供给 Internet 用户访问,还可以为多个后端服务器提供负载均衡功能、缓存功能等。

 2、反向代理服务配置

主机IP地址
反向代理服务器192.168.186.100
web服务器1192.168.186.101
web服务器2192.168.186.102

2.1 安装Nginx

#配置虚拟机ip,网卡等
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33#安装C语言编译库和依赖包,使用gcc
[root@localhost ~]# yum install gcc gcc-c++ -y
[root@localhost ~]# yum install pcre-devel openssl-devel -y#解压,执行安装即可
[root@localhost ~]# tar zxvf nginx-1.22.0.tar.gz 
[root@localhost nginx-1.22.0]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.22.0]# make 
[root@localhost nginx-1.22.0]# make install#启动nginx及配置nginx开机启动
[root@localhost nginx-1.22.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx #编写一个脚本称谓系统服务
[root@localhost sbin]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload	#重启nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop	#停止
ExecQuit=/usr/local/nginx/sbin/nginx -s quit	#优雅停止nginx
PrivateTmp=true[Install]
WantedBy=multi-user.target#重新加载系统服务
[root@localhost sbin]# systemctl daemon-reload #启动服务
[root@localhost sbin]# systemctl status nginx

 2.2 配置反向代理

[root@localhost sbin]# vim /etc/nginx/conf.d/vhost.conf
#配置域名为www.wangp.com的虚拟主机
server {listen  80;server_name www.wangp.com;#域名www.wangp.com的请求全部转发到Web服务器192.168.186.101location / {proxy_pass http://192.168.186.101;}
}#配置域名为www.openlab.com的虚拟主机
server {listen  80;server_name www.openlab.com;#域名www.openlab.com的请求全部转发到Web服务器192.168.186.102location / {proxy_pass http://192.168.186.102;}
}

 2.3 配置hosts文件

编辑 C: \ Window s\Sys t em32\drivers \etc 目录下的 hosts 文件,实现网站的域名访问

 2.4 在web1服务器和web2服务器编写index.html

[root@web1 ~]# mkdir /www/
[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /www/index.html
[root@web1 ~]# cd /www/
[root@web1 www]# ls
index.html
[root@web1 www]# cat index.html 
Welcome to web1 server:192.168.186.101[root@web2 ~]# mkdir /www/
[root@web2 ~]# echo "Welcome to web2 server:192.168.186.102" > /www/index.html
[root@web2 ~]# cd /www/
[root@web2 www]# ls
index.html
[root@web2 www]# cat index.html 
Welcome to web2 server:192.168.186.102

3、负载均衡

        负载均衡( load balance )就是将负载分摊到多个操作单元上执行,从而提高服务的可用
性和响应速度,带给用户更好的体验。
        图6-5演示了负载均衡服务器地工作方式,其中客户端用户A和B同时请求了域名为test. ng. test 的网站,负载均衡服务器 (192. 168. 78. )会根据具体配置进行不同的分配。
        这里假设用户 的请求被分配到 Web 服务器 1(192. 168. 78. 128 )中处理,用户 的请求被 分配到另一个闲置的 Web 服务器 2(192. 168. 78. 200 )中处理 通过负载均衡,可以将一台 服务器的工作扩展到多台服务器中执行,提高整个网站的负载能力

4、负载均衡地配置

1)、准备服务器

主机IP地址
负载均衡服务器192.168.186.100
web服务器1192.168.186.101
web服务器2192.168.186.102

2)、配置一般轮询负载均衡

#配置域名为www.openlab1.com的虚拟主机
[root@localhost ~]# vim /etc/nginx/conf.d/nginx.confserver{listen 80;server_name www.openlab1.com;location /{proxy_pass http://web_server;}
}
#配置负载均衡服务器组
upstream web_server{server 192.168.186.101;server 192.168.186.102;
}

3)、在web1服务器和web2服务器编写index.html

[root@web1 ~]# echo "Welcome to web1 server:192.168.186.101" > /root/index.html
[root@web1 ~]# echo "Welcome to web2 server:192.168.186.102" > /root/index.html

4)、配置hosts文件

 5)、完成后测试

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

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

相关文章

LeetCode96. 不同的二叉搜索树

96. 不同的二叉搜索树 文章目录 [96. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)一、题目二、题解 一、题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的…

喆啡酒店十周年丨啡越时间限,ALL BY 10VE!

啡越时光热爱为伴 十年前&#xff0c;秉持对咖啡馆文化及复古风格的喜爱&#xff0c;喆啡酒店创造全新的Coffetel品类&#xff0c;将充满「温暖」「愉悦」「咖啡香」的格调体验带给消费者&#xff0c;成为无数人「旅途中的啡凡存在」。 十年间&#xff0c;喆啡酒店以热爱化为…

Dev控件 Gridcontrol,gridview 实现多选功能

在网上看了好多实现dev控件GridControl多选功能的方法&#xff0c;都很麻烦&#xff0c;其实GridControl有一个自带的实现多选功能的控件&#xff0c;很简单。 实现效果如下 无需代码代码&#xff0c;使用GridControl中自带的多选功能&#xff0c;在界面直接设置即可 1.找到要…

Redis的安装方法与基本操作

目录 前言 一、REDIS概述 二、REDIS安装 1、编译安装 2.yum安装 三、Redis的目录结构 四、基础命令解析 五、在一台服务器上启动多个redis 六、数据库的基本操作 &#xff08;一&#xff09;登录数据库 &#xff08;二&#xff09;基础命令 七、Redis持久化 &#xff08;一&…

84. 柱状图中最大的矩形

题目描述 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a;最…

分立式BUCK电路原理与制作持续更新

一、分立式BUCK电路总体原理图 下面改图包含了电压环和电流环。 二、BUCK电路与LDO的区别 LDO不适合在压差大的环境下使用&#xff0c;因为三极管因为CE极承受了压差&#xff0c;压差越大损耗的功率就越大&#xff0c;将三极管换成MOS管&#xff0c;MOS管两端的压差很小所以效…

【Spring专题】手写简易Spring容器过程分析

前置知识 《【Spring专题】Spring底层核心原理解析》 思路整理 我们在上一节《【Spring专题】Spring底层核心原理解析》课里面有简单分析过一个Spring容器的一般流程&#xff0c;所以&#xff0c;本节课我们这里尝试写一下简易的Spring容器。 手写源码示例 一、手写前的准…

Llama 2:开放基础和微调聊天模型

介绍 大型语言模型(llm)作为高能力的人工智能助手,在复杂的推理任务中表现出色,这些任务需要广泛领域的专家知识,包括编程和创意写作等专业领域。它们可以通过直观的聊天界面与人类进行交互,这在公众中得到了迅速而广泛的采用。 法学硕士的能力是显著的考虑到训练的表面上…

重生之我要学C++第七天(匿名对象、内部类)

构造函数的隐式类型转化 1.单参数构造函数隐式类型转换 来看下面的代码 #include<iostream> using namespace std; class A { public:A(int x){_a x;} private:int _a; }; int main() {A a 3;return 0; } 此处这句代码 A a 3; 对于这里&#xff0c;编译完全正确&…

Mac M1 安装Oracle Java 与 IEDA

文章目录 1 官网下载2 安装IDEA参考 1 官网下载 https://www.oracle.com/ 使用finder中的拖拽进行安装即可 2 安装IDEA https://www.jetbrains.com/zh-cn/idea/download/?sectionmac 同样的&#xff0c;下载完后拖拽安装即可 参考 Mac M1 安装Java 开发环境 https://blog.…

HTML 元素的 class 和 id 属性有何区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 唯一性⭐ 选择器权重⭐ JS操作⭐ CSS和JavaScript引用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏…

python+vue生成条形码码并展示

需求 最近想做一个小工具&#xff0c;大概要实现这样的效果&#xff1a;后端生成条形码后&#xff0c;不保存到服务器&#xff0c;直接返回给前端展示。 大概思路是&#xff0c;通过 python-barcode库 生成条码的字节流&#xff0c;生成字节流后直接编码成base64格式返回给前…

SpringBoot MDC全局链路解决方案

需求 在访问量较大的分布式系统中&#xff0c;时时刻刻在打印着巨量的日志&#xff0c;当我们需要排查问题时&#xff0c;需要从巨量的日志信息中找到本次排查内容的日志是相对复杂的&#xff0c;那么&#xff0c;如何才能使日志看起来逻辑清晰呢&#xff1f;如果每一次请求都…

XML基础知识讲解

文章目录 1. xml简介2. xml快速入门3. xml的元素(标签)定义4. xml标签的命名规范5. xml的属性定义和注释6. 转义字符7. CDATA区8. xml的处理指令9. xml的约束 1. xml简介 XML&#xff08;eXtensible Markup Language&#xff09;是一种用于描述数据的标记语。 它以纯文本的方…

使用 Etcher 制作U盘系统盘

Etcher 资料&#xff1a; https://github.com/balena-io/etcher/blob/master/SUPPORT.md

司徒理财:8.9黄金早盘低多,黄金走势分析操作建议

黄金早盘1923现价做多看涨&#xff0c;黄金将开启反弹&#xff0c;低多&#xff0c;上方压力1945一线&#xff01;黄金4小时周期下跌macd指标已经背离&#xff0c;昨日虽然破位新低&#xff0c;但没有延续&#xff0c;形成小双底结构&#xff01;弱不再弱必转强&#xff01;今日…

基于 eclipse-temurin 镜像部署spring boot 应用

基于 eclipse-temurin 镜像部署spring boot 应用 使用场景示例项目 使用场景 在CI流程中&#xff0c;一般都会集成 打包&#xff0c;构建镜像&#xff0c;分发&#xff0c;启动容器之类的流程&#xff1b; 这里提供一个示例&#xff0c;进攻参考 示例项目 项目结构如下 run…

【网络安全】网络安全威胁实时地图 - 2023

文章目录 [TOC] ① 360 安全大脑360 APT全景雷达 ② 瑞星杀毒瑞星云安全瑞星网络威胁态势感知平台 ③ 比特梵德 Bitdefender④ 飞塔防火墙 FortiGuard⑤ 音墙网络 Sonicwall⑥ 捷邦 Check Point⑦ AO卡巴斯基实验室全球模拟隧道模拟 ⑧ 数字攻击地图⑨ Threatbutt互联网黑客攻击…

从少年变成恶龙的平台经济

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦midjourney 产品统筹 / bobo 录音间 / 声湃轩北京站 东方甄选和抖音的“矛盾”再一次暴露出平台经济与入驻者之间微妙的关系。 平台经济&#xff0c;从一个引领时代…

无涯教程-Perl - bless函数

描述 此函数告诉REF引用的实体,它现在是CLASSNAME包中的对象,如果省略CLASSNAME,则为当前包中的对象。建议使用bless的两个参数形式。 语法 以下是此函数的简单语法- bless REF, CLASSNAMEbless REF返回值 该函数返回对祝福到CLASSNAME中的对象的引用。 例 以下是显示其…