DR-集群
1.关闭各个机器的网卡守护进程 (三台机器都要执行如下操作)
1 2 3 |
service NetworkManager stop chkconfig NetworkManager off |
2.添加网卡,当做负载均衡的VIP去使用, (三台机器都要分别执行如下操作)
主节点:
1 2 |
cd /etc/sysconfig/network-scripts/ cp -a ifcfg-ens33 ifcfg-ens33:0 |
1 2 3 4 5 6 7 8 |
vim ifcfg-ens33:0 #删除不重要的参数,保留如下即可 BOOTPROTO="static" DEVICE="ens33:0" ONBOOT="yes" IPADDR=192.168.66.220 #这里是集群地址,三台机器要保持一致 NETMASK=255.255.255.0 |
优化内核参数(主机器( 关闭广播功能,防止ip冲突 )):
1 2 3 |
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 |
1 |
sysctl -p #生效 |
启动这个网卡
1 |
ifup ens33:0 |
子节点:
1 2 |
cd /etc/sysconfig/network-scripts/ cp -a ifcfg-lo ifcfg-lo:0 |
vim ifcfg-lo:0
1 2 3 4 5 6 7 8 9 |
DEVICE=lo:0 IPADDR=192.168.66.200 #这里是集群地址 NETMASK=255.255.255.255 NETWORK=127.0.0.0 # If you're having problems with gated making 127.0.0.0/8 a martian, # you can change this to something else (255.255.255.255, for example) BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback |
然后优化内核参数:
子机器 (优化)
1 2 3 4 5 6 |
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 |
1 |
sysctl -p #生效 |
启动网卡
1 |
ifup lo:0 |
3.安装ipvs(一般自带已经安装)
1 |
yum -y install ipvsadm |
4.主节点(添加ipvs集群)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ipvsadm -A -t 192.168.66.200:80 -s rr #添加子节点 ipvsadm -a -t 192.168.66.200:80 -r 192.168.66.188 -g ipvsadm -a -t 192.168.66.200:80 -r 192.168.66.189 -g #保存(一般不用保存直接就有了) ipvsadm --save > /etc/sysconfig/ipvsadm #重启 systemctl restart ipvsadm #查看集群 ipvsadm -Ln |
5.子节点(添加网关记录)
1 2 3 4 5 6 |
route add -host 192.168.66.200 dev lo:0 #如果想要持久化,就把他写入开机启动文件里 echo "route add -host 192.168.66.200 dev ens33:0" >> /etc/rc.local #查看网关 route -n |
6.查看集群
1 2 |
ipvsadm -Ln ipvsadm -Ln --stats |
7. 子节点配置80服务,然后用虚拟vip访问
然后配置其他2台子节点的80服务,使其可以正常访问,这样访问192.168.166.200这个VVIP,就会落到 子节点的某一台上。从而实现高可用
LVS的工作模式
NAT模式:
1 2 3 4 5 6 7 |
前提: 1.负载中心必须开启数据转发。 2.后端私有服务器必须将网关指向到负载调度器(所有的数据报文你都不走负载调度器我怎么给你进行地址转换呢) 3.支持端口映射 4.负载调度器必须是linux操作系统 5.RIP通常是私有ip,仅用于各个集群节点之间通信 6.负载调度器必须位于RS和DS之间,充当网关(RS=客户)(DS=真实服务器) |
NAT:主要使用技术,目标地址转换(DNAT),讲白了就是对请求的目标地址进行更改。请求到数据以后,返回给负载中心,负载中心进行源地址转换后(SNAT)再把结果给发送给客户端
1 2 3 4 5 6 7 8 9 |
S:源地址 D:目标地址 1.数据会到达客户端吗? 当然,这个没有问题。 2.如果请求返回的信息没有进行目标地址转换(SNAT),客户与之能够建立相关联吗? 当然不能,因为我请求的目标地址,和返回的源地址不匹配(我请求的目标地址,就是返回给我的源地址) 7.进出数据都要走负载中心,有什么缺点 压力较大 |
DR模式:
DR主要原理:客户端的流量通过交换机,交换机发给负载调度器,负载调度器修改目标请求的MAC(当然标哪台mac通过算法去算),通过MAC找到真实服务器,真实服务器拿数据报文返回给交换机,交换机再返回给客户端。
DR模式的负载调度器,只做二层的数据报文修改,和只处理入站请求,压力最小
特点:
1 2 3 4 5 6 7 8 |
1.无论是,负载调度器也好,真实服务器也好。都必须处于同一个广播域。(因为传输要通过目标MAC) 2.真实服务器,将网关指向真实路由器 3.负载调度器只处理入站请求,压力最小,同理他能处理的请求也越多。并发也相对越大 4.不支持端口映射,也就是我访问负载机器的是80,后端真实机器对应的也必须是80 5.负载调度器必须是linxu,负载的机器最好也是linux (windows如果要做,需要再交换机做ip和MAC地址的绑定) 注意:负载调度器修改目标请求的MAC,通过MAC找到真实服务器,把数据请求发送过去,这个时候真实服务器是不会要这个数据的,为什么,目标ip不一致,就是目标收货人不一致。这个时候怎么办呢,再给真实服务器添加一个ip地址,也就是负载的虚拟ip,然后想法给隐藏起来。只要RS1机器自己知道即可。这样接收数据的时候就合法了。这个再前面配置的时候,修改了内核参数,相信也明白为什么了。返回数据包的时候,RS1会拿虚拟化添加的那个ip返回给路由器,路由器返回给客户端。 |
TUN模式
TUN:主要使用技术: 数据包二次封装,即 客户端发起请求,请求发给某个地区的负载路由器,负在路由器根据自身算法,在原有数据请求包基础上,重新再数据包外层再封装一个后端真实路由器的地址(这时候数据包是有2层的,第一层是客户端请求负载均衡器的地址,第二次是负载器发送给后端真实机器的地址),然后发送给后端真实服务器。真是服务器拿到这个包后,撕掉最外层这层地址,用第一层的地址给客户端回信。这样客户端收到的回信地址就对上号了。
注意:
1 2 3 4 5 6 7 8 |
1.客户端,负载路由,真实服务器,都必须有公网ip,或者能够被公网ip路由到。 2.真实服务器必须将网关指向真实网关处。 3.不支持端口映射 4.这种模式比较耗费资源,不太友好感觉。 5.公网比较慢,导致速度也会很慢 6.DS与RS必须开启隧道功能 7.入站由DS完成,出站由RS完成 8.负载调度器必须是linux,真实服务器随意 |
- 本文固定链接: https://www.yoyoask.com/?p=4280
- 转载请注明: shooter 于 SHOOTER 发表