负载均衡1_地址转换网关负载均衡_藕粉姜
负载均衡:就是分摊到多个操作单元上执行,例如web服务器,ftp服务器,企业关键应用服务器。
负载均衡有三种模式:路由模式,桥接模式,服务直接返回(DSR)模式。
路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。
常见的软件负载均衡技术有以下几种:
1、基于DNS的负载均衡
由于在DNS服务器中,可以为多个不同的地址配置相同的名字,最终查询这个名字的客户机将在解析这个名字时得到其中一个地址,所以这种代理方式是通过DNS服务中的随机名字解析域名和IP来实现负载均衡。
2、反向代理负载均衡(如Apache+JK2+Tomcat这种组合)
该种代理方式与普通的代理方式不同,标准代理方式是客户使用代理访问多个外部Web服务器,之所以被称为反向代理模式是因为这种代理方式是多个客户使用它访问内部Web服务器,而非访问外部服务器。
3、基于NAT(Network Address Translation)的负载均衡技术(如Linux VirtualServer,简称LVS)
该技术通过一个地址转换网关将每个外部连接均匀转换为不同的内部服务器地址,因此外部网络中的计算机就各自与自己转换得到的地址上的服务器进行通信,从而达到负载均衡的目的。其中网络地址转换网关位于外部地址和内部地址之间,不仅可以实现当外部客户机访问转换网关的某一外部地址时可以转发到某一映射的内部的地址上,还可使内部地址的计算机能访问外部网络。
进入页面只会
root
westos
systemctl disable --now firewalld
vi /etc/sysconfig/selinux
ip addr
cd /etc/sysconfig/network-scripts/
vi ifcfg-eth0
在我的实验中,
IPADDR=172.25.254.1
GATEWAY=172.25.254.50
systemctl restart network
systemctl restart networksystemctl disable --now NetworkManager #企业8中不可以关闭,企业7可以
yum repolist
yum install -y vim lftp
cd /var/lib/libvirt/images/
ls
df -h /
dnf install libguestfs-tools -y #要在rhel8镜像中下载
virt-sysprep -d base #清理base虚拟机
cd /var/lib/libvirt/images/
ls
du -h base.qcow2
virt-sparsify --compress base.qcow2 base-new.qcow2
du -h base-new.qcow2
rm -f base.qcow2
ll base-new.qcow2
qemu-img create -f qcow2 -b base-new.qcow2 vm1
qemu-img create -f qcow2 -b base-new.qcow2 vm2
qemu-img create -f qcow2 -b base-new.qcow2 vm3
vim /etc/sysconfig/network
NETWORK=yes #表示全局激活网络
A.负载均衡(load balance)设置
LVS有三种模式
基于NAT模式;基于隧道模式;基于DR模式
DR模式:直接路由模式。直接路由模式要求调度器与后端服务器必须在同一个局域网内,VIP地址需要在调度器与后端所有的服务器间共享,,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在的。由于多台计算机都设置了同样一个VIP地址,所以在直接路由模式中要求调度器的VIP地址是对外可见的,客户端需要将请求数据包发送到调度器主机,而所有的真实服务器的VIP地址必须配置在Non-ARP的网络设备上,也就是该网络设备并不会向外广播自己的MAC及对应的IP地址,真实服务器的VIP对外界是不可见的,但真实服务器却可以接受目标地址VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址。调度器根据算法在选出真实服务器后,在不修改数据报文的情况下,将数据帧的MAC地址修改为选出的真实服务器的MAC地址,通过交换机将该数据帧发给真实服务器。整个过程中,真实服务器的VIP不需要对外界可见。
DNS:域名解析
NAT:网络地址转换
设置了三台虚拟机,server1作为负载均衡节点,server2和server3作为opserver
lvs:开源软件
在1虚拟机中
dnf install ipvsadm #用户层面的工具
ip addr add 172.25.254.150/24 dev eth0 #添加vip服务,然后对策略进行书写,策略是在内存中的。
ip addr
ipvsadm --help
ipvsadm -A -t 172.25.254.150:80 -s rr #-s 是轮询调度(Round Robin 简称'RR')算法,十种调度算法
ipvsadm -a -t 172.25.254.150:80 -r 172.25.254.2:80 -g #172.25.254.2:80 真实的后端服务器 -g 直连
ipvsadm -a -t 172.25.254.150:80 -r 172.25.254.3:80 -g
ipvsadm -ln #查看策略 InActConn
#策略是防火墙之后,数据包先从网卡进来,然后在那条链上,对数据包过滤,当发现它是访问tcp虚拟服务的
在2和3虚拟机中
dnf install httpd -y
systemctl start httpd
echo server2/3 > /var/www/html/index.html
curl localhost
在真机中
curl 172.25.254.150
#如果访问不了,查看调度策略,如果有调度策略,则调度器没有问题,问题肯定在后端
在2和3虚拟机中,
ip addr add 172.25.254.150/32 dev eth0 #加VIP
在真机中
for i in {1..10};do curl 172.25.254.150;done
arp -an | grep 150 #查询172.25.254.150、
arp -d 172.25.254.150 #删除一个arp表项
在2和3虚拟机中
yum install arptables -y #arptables只针对arp协议,其他不管
arptables -A INPUT -d 172.25.254.150 -j DROP #-A链条,-d 目标地址,DROP丢弃
arptables -A OUTPUT -s 172.25.254.150 -j mangle --mangle-ip-s 172.25.254.2 #-s 源地址 --mangle-ip-s 转换为源地址
#源主机出去的,把源地址转换为172.25.254.2
arptables-save > /etc/sysconfig/arptables
#将以上的策略保存
arptables -nL #查看策略
arptables -F #删掉策略
systemctl start arptables.service
arp协议是广播
DR:client -->vs–>rs–>client
NAT:client–>vs–>rs–>vs–>client
调度器对后面的
内核中的连接调度算法
http://zh.linuxvirtualserver.org/node/35
DR/VS 调度器
调度器的单点
负载均衡lvs的弊端
调度器没有对后端的“roserver”进行权限检查,无法对出现故障的主机从调度列表中去掉
配置虚拟服务的目的是为了实现负载均衡
DNS没有抗攻击能力
rs:real server
vs:virtual server
在nginx.org上下载nginx-1.20.2
scp -r root@172.25.254.50:nginx地址 /nginx
cd nginx-1.20.2/
ls
./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx #这一步是为了校验操作系统依赖性,--prefix指定安装路径
yum install -y gcc #安装gcc
yum install -y pcre-devel #所有的开发包都是以-devel后缀来命名的。
VIP是虚拟IP,virtual IP,VIP在内网中,被动态地映射到不同的MAC地址上,也就是映射到不同的机器设备上。
当外网上的某个机器,通过域名访问公司内网资源时,内网的DNS服务器,会把域名解析到一个VIP上,当外网机器通过域名解析得到这个VIP时,就会将数据包发往这个VIP。在内网的过程中是通过ARP协议来完成的。
ARP协议:Address Resolution Protocol地址解析协议。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。
ipvsadm是管理LVS的策略规则。
相关文章
- 【Python爬虫】数据解析之bs4解析和xpath解析_程序喵正在路上_bs4获取xpath
- Postgresql忘记密码,如何重置密码_Xin学数据_pgsql密码
- Postgresql on conflict do update 设置当前值,原始值,当前值与原始值相加值_程序媛一枚~
- mac OS 10.15 配置homebrew_☆MOON
- 【postgresql 数据库运维文档】_sqlboy-yuzhenc
- 【Rust日报】2022-04-21 - Ruby 包管理工具已经支持 Rust 写扩展_Rust语言中文社区
- Appium-Screenshot(截图)_Aniona_appium screenshot
- 超级详细的PostgreSQL创建数据库操作并附带图文_SQL数据库运维
- (三)爬取一些网页图片_Kkh_8686
- java调用ruby_使用 java 调用 ruby 脚本的办法??_weixin_39943868
- 【工具篇】sonarqube介绍和安装步骤_傻啦猫@_@_sonarqube8 安装
- 在本地电脑安装sass_细牙兔_sass本地安装
- k8s的初始及搭建_RomanBesson_创建k8s
- 205 Ruby 初体验:数组、哈希和正则表达式【Rails后端开发训练营】_朋朋dev
- (持续更新...)Ruby 杂记_Fourier_xyz
- 有了这个库,这些爬虫都不用亲自写了!_VIP_CQCRE