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.hqwc.cn/news/64035.html

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

相关文章

【数据结构】复杂度

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、什么是数据结构 二、什么是算法 三、算法的效率 四、时间复杂度 4.…

SpringSecurity环境搭建

AOP思想&#xff1a;面向切面编程 导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

springboot开发的悠点装饰后台管理系统java公司装修设计jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 springboot开发的悠点装饰后台管理系统 系统有1权限&…

源码分析——HashMap(JDK1.8)源码+底层数据结构分析

文章目录 HashMap 简介底层数据结构分析JDK1.8之前JDK1.8之后 HashMap源码分析构造方法put方法get方法resize方法 HashMap常用方法测试 HashMap 简介 HashMap 主要用来存放键值对&#xff0c;它基于哈希表的Map接口实现&#xff0c;是常用的Java集合之一。 JDK1.8 之前 HashM…

数据可视化(八)堆叠图,双y轴,热力图

1.双y轴绘制 #双Y轴可视化数据分析图表 #add_subplot() dfpd.read_excel(mrbook.xlsx) x[i for i in range(1,7)] y1df[销量] y2df[rate] #用来正常显示负号 plt.rcParams[axes.unicode_minus]False figplt.figure() ax1fig.add_subplot(1,1,1)#一行一列&#xff0c;第一个区域…

395. 至少有 K 个重复字符的最长子串

395. 至少有 K 个重复字符的最长子串 C代码&#xff1a;滑动窗口 ---- 不是吧&#xff0c;阿sir&#xff0c;这也能滑&#xff1f; // 返回滑动窗口的长度 // 满足条件的种类数量的可能为 [1, 26], 所以需要遍历26中情况的窗口长度 // 当 区间内所有种类数量 满足要求的种类数…

MySQL函数

1. 字符串函数 -- concat(str1,str2) 字符串拼接 select concat(Hello ,World!);-- lower(str) 字符串转小写 select lower(concat(Hello ,World!));-- upper(str) 字符串转大写 select upper(concat(Hello ,World!));-- LPD(str1,n,str2) 填充字符串,从左边给str1填充str2字符…

消息队列(3) -封装数据库的操作

前言 上一篇博客我们写了, 关于交换机, 队列,绑定, 写入数据库的一些建库建表的操作 这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用 , 并在写完该类之后, 测试代码是否完整 实现封装 在写完上述的接口类 与 xml 后, 我们想要 创建一个类 ,来调用…

Spring MVC静态资源映射

Spring MVC静态资源映射 静态资源映射。使用容器的默认Servletlocationmapping&#xff1a;cache-periodorder Spring MVC需要对RESTful风格的URL提供支持&#xff0c;而真正的RESTful风格的URL不应该带有任何后缀&#xff0c;因此将Spring MVC拦截的URL改为“/”&#xff08;正…

tidevice+appium在windows系统实施iOS自动化

之前使用iOS手机做UI自动化都是在Mac电脑上进行的&#xff0c;但是比较麻烦&#xff0c;后来看到由阿里开源的tidevice工具可以实现在windows上启动WDA&#xff0c;就准备试一下&#xff0c;记录一下过程。 tidevice的具体介绍可以参考一下这篇文章&#xff1a;tidevice 开源&…

【单片机毕业设计】【hj-001】温度控制 | 恒温箱 | 保温箱 | 恒温孵化器 | 环境检测 | 温度检测

一、基本介绍 项目名&#xff1a; 基于单片机的温度控制系统设计 基于单片机的恒温箱系统设计 基于单片机的保温箱系统设计 基于单片机的恒温孵化器系统设计 基于单片机的环境检测系统设计 基于单片机的温度检测系统设计 项目编号&#xff1a;mcuclub-hj-001 单片机类型&…

2023年新手如何学剪辑视频 想学视频剪辑如何入门

随着短视频、vlog等媒体形式的兴起&#xff0c;视频剪辑已经成为了热门技能。甚至有人说&#xff0c;不会修图可以&#xff0c;但不能不会剪视频。实际上&#xff0c;随着各种智能软件的发展&#xff0c;视频剪辑已经变得越来越简单。接下来&#xff0c;一起来看看新手如何学剪…