七层模型
软件“工程”学:有分层、解耦的概念,因此我们有七层模型。
安装VM虚拟机
参考csdn地址https://blog.csdn.net/m0_50519965/article/details/116175873
激活码ZF3R0-FHED2-M80TY-8QYGC-NPKYF
VMware软件下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
CentOS 7 下载映像文件地址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云
su - root 切换到根目录
#cd /proc/$$/fd
#pwd
#exec 8<> /dev/tcp/www.baidu.com/80
建立sockect连接
# echo -e ‘GET / HTTP/1.0\n’ >& 8
发送GET请求
#cat 0<& 8
读取请求打印到8文件的内容
#exec 8<& -
清除8文件
Ping不通外网解决方法
#第一步
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
把no 改为yes
service network restart后就能ping通外网啦
解决ifconfg不存在
yum upgrade
yum install net-tools
netstart查看表格
(网络层)下一跳概念
有2个连接节点node3和node4
在node3增加虚拟网卡
#ifconfig eth0:3 192.168.88.88/24
其中eth0是网卡名称,需要ifconfig查看现有的网卡名称
#ifconfig查看
我在node4中ping是ping不通的
因为路由表给了默认网关192.168.150.2
在node4中添加路由条解决
#route add 查看添加格式
#route add -host 192.168.88.88 gw 192.168.150.13
-host:不需要掩码位
-route:需要掩码位
#route add -route 192.168.88.88/24 gw 192.168.150.13
我们在node04中ping就可以成功了
相应在node03中可以看到直连ip地址,因为node03的网卡就是192.168.88.88
快和慢
通信慢:因为客服端调用服务器应用层需要7层,服务器还是jvm的还需要用来切换耗时;
通信快: 数据3层设备,到3层又没到4层,做包的转发,不需要握手。
负载均衡
拓扑图
oIS 负载均衡服务器层:浏览接入层4层,负载均衡是浏量,服务器是镜像的
Negix:负载是7层,转发,服务器是微服务模块,不是镜像的
验证
192.168.1.8是私有地址,6.6.6.6是公网地址,私人地址不会出现在公网中
其中路由器记录
#netstat -natp查看自己连接的网络
D-NAT弊端
瓶颈:客户端-》服务器端 数据量小
服务器端-》客户端 数据量大
下行服务器带宽有瓶颈,消耗算力,优点可以实现负载均衡
DR路由
Ip是端到端的,mac地址是下一跳的节点直接的
负载均衡服务器和server是同一个局域网络,在同一个交换机下面,不能跨网络
Server中的VIP是隐藏的不对外暴露,封装包的时候用到,因网络中不能有相同的IP
D-NAT和DR优缺点
D-NAT需要换ip地址,要求rs的默认网关指向我们的负载均衡服务器,带宽瓶颈
DR模式,需要动链路层,负载均衡服务器和server必须在同一局域网,物理位置约束
隧道技术
在CIP->VIP外面包裹一层DIP->RIP地址,这样数据包就可以顺利的从负载均衡服务器被发送到server1
server1收到这个数据包之后,把外层的DIP->RIP撕掉,就能看到真正的CIP->VIP,自己处理之后,根据CIP->VIP直接返回给客户端。
我们以往用到的PPPOE这种协议就是这种技术。
VPN,翻的围墙就是这种技术
隐藏VIP的方法
实验操作手册
第一步 在node1中配置 #ifconfig eth0:2 192.168.150.100/24 注:等同于#ifconfig eth0:2 192.168.150.100 netmask 255.255.255.0;上面24代码 #ifconfig eth0:2 down(如果删除就用这条语句) |
第二步: 在node2和node3配置隐藏ip时要先修改协议 #cd /proc/sys/net/ipv4/conf/ #cd eth0 #ls 修改的是arp_ignore和arp_announce文件 #cat arp_ignore #echo 1 > arp_ignore #echo 2 > arp_announce 设置隐藏的vip,配置环卫虚拟接口 #ifconfig lo:2 192.168.115.100 netmask 255.255.255.255 这里必须是4个255,不能是3个 因为如果ping 192.168.115.1就会到lo:2不会走ens:33就出不去 |
第三步同node2设置一样Node3设置 #echo 1 > /proc/sys/net/ipv4/conf/ens33(自己的网卡名称)/arp_ignore #echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore #echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce #echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 设置隐藏的vip #ifconfig lo:8 192.168.115.100 netmask 255.255.255.255 |
第四步:node2和node3安装httpd静态的服务类似tomcat动态并启动 #yum install httpd -y #service httpd start(如果失败用这个centos7的命令:bin/systemctl start httpd.service) #vi /var/www/html/index.html 在文件中写入 from 192.168.node2 测试: 浏览器访问虚拟机ip成功返回From 192.168.150.1x 上面测试可能遇到的问题: 网页访问不通问题解决 #systemctl status firewalld查看防火墙状态 #systemctl stop firewalld关闭防火墙 |
LVS配置 node1 #yum install ipvsadm -y #ipvsadm -A -t 192.168.115.100:80 -s rr #ipvsadm -a -t 192.168.115.100:80 -r 192.168.115.138 -g -w 1 #ipvsadm -a -t 192.168.115.100:80 -r 192.168.115.137 -g -w 1 配置好后就可以向192.168.115.137和192.168.115.138负载了 验证 浏览器 页面刷新交替出现负载的地址 Node01: #netstat -natp 看不到socket连接 Node02: #nestat -natp 看到很多socket连接 Node1: Ipvsadm -lnc 查看偷窥记录本 FIN_WAIT:连接过,偷窥了所有的包 SYN_RECV:连接 ESTABLISHED:连接已建立 |
实验手册2-keepalived
问题:
1:Lvs会挂,业务下线,单点故障
2:Reserver会挂,一部分用户请求异常,lvs还存着这个reserver的负载记录
问题解决
单点故障解决方式:一变多 a:主备b:主主
Reserver挂了怎么确定?
ping是不对的方法,正确是验证的是http协议,发请求判断返回200
Ok
Keepalived的功能:
- 监控自己服务
- Master通告自己还活着,Backup监听Master状态,Master挂了,一堆Backup推举出新的Master
- 配置:vip,添加ipvs,keepalived是有配置文件
- 对后端server健康检查
- Keeplived是一个通用的工具,主要作为HA实现
Nginx可以作为公司的负载均衡来用,ngnix成为了单点故障,也可以用keepalived来解决
服务节点node1,node2,node3,node4 Node3和node4配置安装 # yum install keepalived ipvsadm -y 配置: /etc/keepalived/keepalived.conf # cp keepalived.conf keepalived.conf.bak//备份一下 # Vi keepalived.conf //打开如下一个表格中的配置 新创建窗口 #yum install man #man 5 keepalived.conf // 5号文件 /virtual_ipaddress//查找到下面配置方法 192.168.150.100/24 dev ens33 label ens33:3 192.168.150.100虚拟的vip /24 dev ens33物理网卡 label ens33:3 取别名 |
Keepalived实验准备:node0,node1作为主备的主机,node2和node3作为server 如果手动配置过,先清理掉主机node1的配置 # ipvsadm -ln 查看 # ipvsadm -C 清理掉 #ifconfig ens33:8 down 之前配置的node2和node3保持不变 增加一台node0 |
在node0和node1上安装 #yum install keepalived ipvsadm -y(要用ipvsadm的命令) 配置文件修改 #cd /etc/keepalived/keepalived.conf #cp /etc/keepalived/keepalived.conf.bak #vi keepalived.conf vrrp虚拟路由冗余协议 #yum install man安装帮助文档,可以查看帮助文档修改 #man 5 keepalived.conf 按/输入查找的virtual_ipaddress 获得 |
Node0 global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_1 { state MASTER // 主 node1 BACKUP 备 interface ens33 virtual_router_id 51 //keeplived的标识id priority 100 //权重值越大越高 node1 50 advert_int 1 authentication { auth_type PASS auth_pass 1111//权限认证 } virtual_ipaddress {//vip
192.168.115.100/24 dev ens33 label ens33:3 } }
virtual_server 192.168.115.100 80 {//虚拟vip的配置 delay_loop 6 lb_algo rr lb_kind persistence_timeout protocol TCP real_server Real_server 192.168.115.165 80{ 本地的ip加端口 weight 1 url { path / status_code 200 }
connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } Real_server 192.168.115.167 80{ 本地的ip加端口 weight 1 url { path / status_code 200 }
connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } } |