37LVS集群.docx
- 文档编号:8937469
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:15
- 大小:636.45KB
37LVS集群.docx
《37LVS集群.docx》由会员分享,可在线阅读,更多相关《37LVS集群.docx(15页珍藏版)》请在冰豆网上搜索。
37LVS集群
37_01_Linux集群系列之四——LVSDR详解及配置演示
37_02_Linux集群系列之五——脚本实现LVS后端服务健康状态检查
37_03_Linux集群系列之六——LVS持久连接
第一章:
LVS,DR详解以及配置演示
Ipvs一旦发现是集群的服务,本来数据包到达input之后进入用户空间,不会经过forward链,而是直接到了postrouting链
LVS监听在INPUT链
IPNUT-》postrouting,不经过forward
Ipvsadm:
管理服务:
-A,-E,-D
管理RS:
-a,-e,-d
查看:
-L|-l
-n;--stat,--rate,--timeout,--sort,--daemon
规则管理
-C;-S,-R
CIP/VIP
CIP/VIP
Director:
主管,领导,导演
到达DR后,DR不会修改原有的tcp首部以及ip首部,
也就是:
CIP/VIP都没有动,以及tcp首部端口都没有动
通过封装新的帧首部(源MAC为Director的MAC,目标MAC为挑选出的RS的MAC)完成调度。
RS和DR都有VIP,而请求进入时必须最先发送给DR,所以,在DR类型中,首先通过ARP广播确认DR主机,其他RS主机不响应,这就确定了哪一个是DR主机
但是在linux主机中,IP地址不属于网卡而是属于内核,就是说无论一个linux主机有多少个IP地址,它在接入的各个网络中都会公布它拥有的所有地址,这就给ARP广播的响应制造了困难,所以就需要修改内核参数来保证router发出ARP广播时,DR会响应RS不予响应,这里所说的内核参数分别为:
#arp_announce:
定义arp通知级别;
0:
默认级别,在各个网络中通告本机所含有的所有地址
1:
尽量不在各个网络中通告本机中含有的不属于该网络的地址
//尽可能仅向目标网络通告与其目标网络匹配的地址
2:
不在各个网络中通告本机中含有的不属于该网络的地址
//仅仅将与本地借口匹配的网络地址通告,只通告直连的,
#arp_ignore:
定义arp忽略arp请求或arp通告的级别;
0:
(默认值):
回应任何网络接口上对任何本地IP地址的arp查询请求
1:
只回答目标IP地址是来访网络接口本地地址的ARP查询请求 //目标iip相同
2:
只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在p和income借口该网络接口的子网段内
3:
不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
4-7:
保留未使用
8:
不回应所有(本地地址)的arp查询
实现vip解析方法:
一:
在路由器上绑定VIP的mac为director的mac,这样,就直接发送给director
VIP:
MAC(DVIP),前提:
路由设备必须能够操作
二.Arptables,定义arptables规则,即可,在real-server上定义,请求本机的vip,不予响应
三.使用内核参数,arp_ignore,arp_announce,定义而,响应arp和通告arp的参数
一般使用第三种方式,
可以把rip:
eth0,Lo:
vip
有人请求vip地址的时候,real的lo对应vip,会用自己的mac,一定会通过eth0进行响应,
可以这样配置,
//可以配置,从eth0进来的,请求的地址不是eth0对应的地址,不予响应,
Arp_ignore对此,1:
代表目标ip进来的ip即eth0,2:
和1一样,但是必须在同一个网络中
Arp_announce:
向别人告诉自己的,mac和ip,通告级别默认0//尽可能响应或通告
Arp_ignore:
接收到arp请求时的响应级别;默认0
注意:
默认情况下,real-s响应报文的源地址为流出的接口的地址,即eth0,不是lo//添加一条路由即可
VIP一定是公网地址,rip和dip可以是内网地址,r1,r2,r3的vip对外是不可见得,
响应的时候DR可以使用vip响应,然后转发个rip,封装新的MAC首部,源mac是自己的,目标mac是real的
Real返回的时候,VIP和CIP都没有变,使用real自己的mac(eth0)进行返回,路由器需要解析real的mac,解析出来的ip是rip,但是real得ip和client的ip不在同一个网段,这样是出不去的
解决方法:
使用另外一个路由器,或者网关出去
或者:
路由器的黑色接口一定适合VIP是在同一个网段的,而和rip不在同一个网段
Rip的网关是路由器的白色接口
VIP和rip一定不在同一个网段,
Vip和路由器对外的接口都是公网地址,可以对外通信的
实验拓扑:
三台主机,都只需要一个网卡就可以了;三个网卡都在同一个网络中,都是用的是桥接
Rip必须先配置,arp_anounce,和arp_ignore以后才能配置vip
使用setup配置,rs1,rs2,以及director地址,rs1和rs2只配置eth0
配置rs1:
Cd/proc/sys/net/ipv4/conf/
Lsall,目录,lseth0目录,lslo目录
Sysctl-wnet.ipv4.conf.eth0.arp_anounce=2//配置eth0,只通告属于本网络的地址
Sysctl-wnet.ipv4.conf.all.arp_anounce=2
Echo1>/proc/sys/net/ipv4/conf/all/arp_ignore//目标接口必须和进来的接口相同
Echo1>/proc/sys/net/ipv4/conf/eth0/arp_ignore
Ifconfiglo:
0172.16.100.1
使用window主机ping172.16.100.1能够ping通,arp-a//查看对应mac地址//只有director响应,
配置rs2:
Echo2>/proc/sys/net/ipv4/conf/all/arp_announce
Echo2>/proc/sys/net/ipv4/conf/eth0/arp_announce
Echo1>/proc/sys/net/ipv4/conf/ath0arp_ignore
Echo1>/proc/sys/net/ipv4/conf/all/arp_ignore
Ifconfiglo:
0172.16.100.1/16
Windows必须能够ping通任何一台主机
Windows测试;arp–d*删除arp,进行ping后,arp–a查看还是director的mac地址
配置:
Real-server回应的时候使用vip:
Rs1:
Ifconfiglo:
0172.16.100.1broadcast172.16.100.1netmask255.255.255.255up
Routeadd-host172.16.100.1devlo:
0//目标地址是vip的通过lo:
0出去
Rs2:
Ifconfiglo:
0172.16.100.1broadcast172.16.100.1netmask255.255.255.255up
Routeadd-host172.16.100.1devlo:
0
Director:
Routeadd-host172.16.100.1deveth0:
0
配置ipvs
前提:
在director:
上使用curl可以访问,rs1,和rs2
在director上:
Ipvsadm–C//清空规则
Ipvsadm–A –t172.16.100.1:
80–swlc
Ipvsadm–a–t172.16.100.1:
80-r172.16.100.7–g–w2
Ipvsadm–a–t172.16.100.1:
80-r172.16.100.8–g–w1
Ipvsadm–L–n//查看规则,
在windows上进行访问,http:
//172.16.100.1测试查看权重比例
Ipvsadm–L-n
问题:
模拟rs2损坏
Iptables–AINPUT–ptcp–dport80–jREJECT
在windows上刷新访问httpd服务,会出现错误,卡在一个页面
Rs2,损坏,但是director并不知道,没有办法做健康状况检查
LVS添加一个模块后可以实现,检查状况,但是ldirectord,但是这个是在ipvs做高可用的时候才能用到
或者开发一个在director上始终运行的一个脚本
测试rs是否在线,不在线,就在lvs列表中删除
错误:
得不到mac地址,原因,实际网关的子网掩码,和实验掩码不同,也就是说,其实他们不在同一个网络中
刷新,多次可以看到r1和r2之间的切换
第二章:
实验1:
实现director上提供web服务,不推荐,因为director比较忙,
DR:
Vip:
192.168.10.3
Dip:
192.168.10.5
Rs1:
192.168.10.7
Rs2:
192.168.10.8
可不可以在direcotor上的web服务器也启用,当做一个real-server使用
启动director上的httpd服务,写入一个index.html文件,进行测试
Ipvsadm-a-t172.16.6.101:
80-r127.0.0.1-g-w3
Ipvsadm–L–n//测试即可看到效果
//只有在所有主机都宕机了,这时候director提供一个页面,告诉用户,已经宕机,
实现集群自动配置
DR类型中,director和real-server的配置脚本示例
DR脚本,real-server脚本,以及状况检查脚本
RS=("192.168.10.7""192.168.10.8")//数组
Echo${a[0]}//
数组:
一片连续的内存空间,类型相同,array,element元素
Echo${#a[*]}//元素个数,
Echo${#a[0]}//第0个元素的字符个数,
Echo${a[*]}//列出所有元素
第三章:
LVS持久链接,
无论使用何种算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的RS。
持久链接模板(内存缓冲区),以前记录,并且灭有超时,就是用原来的连接
ipvsadm-L--persistent-conn//持久链接信息
ipvsadm-A|E-t|u|fservice-address[-sscheduler][-p[timeout]][-Mnetmask]
//只需要在指定服务的时候使用-p指定持久链接的时长,默认300s
//给予ssl的回话中经常使用持久链接,
来自于同一个客户端的,不光是同一个服务http,还有ftp服务都定位到同一个客户端,假如后面的集群同时启用了多个服务
持久链接类型:
PPC:
持久端口链接:
同一个cip同一个集群服务,始终定向到一个rip
PCC:
持久客户端链接:
将同一个cip对所有端口的请求,始终定向到一个rip
PNMPP:
PersistentNetfilterMarkedPacketpersistence//持久防火墙标记链接,
实验:
LVS的PPC持久链接
ipvsadm-E-t172.16.6.101:
80-srr-p30
ipvsadm-L-n--persistent-conn
在windows上进行测试
实验:
PCC测试,telnet和http测试
分别在r1和r2上添加用户,并分配密码,
分别启动telnet服务,并检查是否启用,服务netstat—tunlp|grpe23
并测试,r1和r2的telnet是否能够使用
添加集群服务:
使用的vip还是上一个服务的同一个vip
ipvsadm-A-t172.16.6.101:
23-srr
ipvsadm-a-t172.16.6.101:
23-r172.16.6.107-g-w1
ipvsadm-a-t172.16.6.101:
23-r172.16.6.107-g-w2
telnet登录测试//ipvsadm–L-n查看效果
ipvsadm–E-t172.16.6.101:
23–srr–p3600//持久链接,实现PPC
ipvsadm–C//清空所有请求,重新创建
实现PCC:
//把所有的端口都定义位集群服务,一律像real-server转发,不仅仅包括,http和telnet
[root@localhost~]#ipvsadm-A-t172.16.6.101:
0-srr-p60
[root@localhost~]#ipvsadm-a-t172.16.6.101:
0-r172.16.6.107-g-w2
[root@localhost~]#ipvsadm-a-t172.16.6.101:
0-r172.16.6.108-g-w1
Ssh172.16.6.101//可以查看,虽然没有定义ssh服务,但是,只要real-server具有这个服务,就会提供该服务
PCC是所有集群服务,PPC是针对单个服务
假如需要单独定义两个单独的集群服务,其他的服务都是定义为一个集群服务,比较困难
方法:
防火墙标记:
PREROUTING
80:
10
23:
10//把80和23都标记为10,
然后在ipvsadm中,把防火墙标记为10的定义为一个集群服务
标记是0–99之间的整数,只要没有被使用就行
实验:
防火墙标记-PNMPP
ipvsadm-C
iptables-tmangle-APREROUTING-d172.16.6.101-ptcp--dport80-jMARK--set-mark8
iptables-tmangle-APREROUTING-d172.16.6.101-ptcp--dport23-jMARK--set-mark8
//防火墙设置
[root@localhost~]#ipvsadm-A-f8-srr
[root@localhost~]#ipvsadm-a-f8-r172.16.6.107-g-w2
[root@localhost~]#ipvsadm-a-f8-r172.16.6.108-g-w1
分别进行http测试,刷新,
以及telnet多次登录测试,查看ip
Ipvsadm–L–n//查看结果
[root@localhost~]#ipvsadm-E-f8-srr–p600//持久连接
持久链接一定会破坏LB效果,但是有时候需要使用持戒链接:
例如cookie或者session
LAMP
Mysql/NFS
LAMP
网页文件放在LAMP中,数据库文件放在同一台mysql中,上传的附件,放在NFS中
假如对网页文件进行二次开发,则需要在LAMP之间同步数据
可以把一台主机作为rsyncserver+inotify,其他主机向其同步,只需要更新rsyncserver即可
但是这个更新速度特别慢,不适合经常进行的文件
Sersync:
能够接受inotify开发机制,基于C++开发,性能特别好,支持大文件的同步
Sersync:
自己找
Rsync+inotify,以及sersync+inotify
Session共享,php使用memcached进行session共享
或者使用长连接机制
Memcached:
共享session,将两个lamp将session保存在memcached中
假如是一个购物网站:
假如购物车的东西,要么使用持久链接,要么进行session共享
假如购物完,进行支付的时候,肯定要是用https,但是https和http本身就不是同一种协议
假如定义到https网站:
在第二个服务器上肯定没有http的购物商品
所以,80和443基于防火墙标记绑定//一定要使用持久链接
两个https必然要使用到证书,是否能够用到证书,建议两个服务器上使用同一个证书
小结:
LVS-DR详解
ipvs-INPUT->postrouting
cip的请求到达director之后
DR封装新的MAC
Real-server//对于arp请求vip不予响应
arp_announce:
默认0
2:
同网段则通告
arp_ignore:
默认0
1:
请求的目标ip是流入的eth0的ip,
实现vip解析的方法:
1.在路由器上绑定vip+director.vip
2.arptables定义规则,
3.内核参数arp_announce,arp_ignore
DR模型real-s需要有独立的gw
real-server设置:
1.分别设置{eth0,all}.{arp_announce=2,arp_ignore=1}
Sysctl-wnet.ipv4.conf.eth0.arp_anounce=2//配置eth0,只通告属于本网络的地址
Sysctl-wnet.ipv4.conf.all.arp_anounce=2
Echo1>/proc/sys/net/ipv4/conf/all/arp_ignore//目标接口必须和进来的接口相同
Echo1>/proc/sys/net/ipv4/conf/eth0/arp_ignore
或者:
sysctl-wnet.ipv4.conf.{eth0,all}.{arp_ignore=1,arp_announce=2}//一条命令即可
2.ifconfiglo:
0172.16.6.101broadcast172.16.6.101netmask255.255.255.255up
ifconfiglo:
0172.16.6.101//director的vip,因为需要对外开放
3.routeadd-host172.16.6.101devlo:
0//返回时使用vip作为源地址
DR模型中,real-s需要配置vip,但是nat模型中不用
director上也可以提供http服务,也就是说,director即是director又是real-server
DR脚本:
director脚本:
接受start,stop,status实现自动创建DR或者关闭
REAL脚本:
实现real自动检查状态,失效就删除,恢复则添加
数组的使用
LVS持久链接:
1.PPC:
持久端口链接,同一个cip对一个服务的所有请求,始终定向为一个rip
ipvsadm-E-t172.16.6.101:
80-srr-p30
2.PCC:
持久客户端链接,同一个cip对所有服务的请求定向同一个rip
ipvsadm-A-t172.16.6.101:
0-srr-p60
3.PNMPP持久防火墙标记链接
iptables-tmangle-APREROUTING-d172.16.6.101-ptcp--dport80-jMARK--set-mark8
ipvsadm-A-f8-srr//标记,
ipvsadm-E-f8-srr–p600//持久连接
一般-端口/客户端
标记-端口/客户端
php使用memcached进行session共享
附件:
文件DR脚本
附件:
1.rsync+inotify
2.sersync+inotify
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 37 LVS 集群