LVS-DR集群

mac2022-06-30  13

DR工作原理: 1、client向调度服务器发送请求,调度服务器把数据包转发给web服务器,web服务器直接把数据返回给client。 2、client请的报文头的目的ip是lvs调度器的,web服务器给client返回的源ip不是调度器的ip,所以client会把web发来的数据包丢掉。因此需要把web服务器伪装成lvs调度器。 3、把client伪装成调度器以后会发现,一个网络中出现了好几个相同的ip,此时会出现ip冲突。因此需要把web服务器伪装调度服务器的ip给藏起来(使用lo本地回环网卡),让别的服务器只认为有一个调度服务器的ip。 4、对于lvs调度服务而言,VIP(client使用的ip)一定在副接口上,RIP(用于连接web服务器的ip)一定要在主接口上。因为当lvs把数据包转发给web服务器的时候,默认使用的是主接口的ip,如果使用192.168.4.15(VIP)向web发送数据包,就会和web服务器的192.168.4.15冲突。 LVS-DR大部分工作否是在配置网络环境,具体的集群操作很简单。 配置网络环境:

LVS调度器: 使用nmcli 为主机口配置ip 192.168.4.5 为网卡创建副接口: cp /etc/sysconfig/networl-scripts/ifcfg-eth0{,:0} vim /etc/sysconfig/networl-scripts/ifcfg-eth0:0 TYPE=Ethernet BOOTPROTO=none NAME=eth0:0 DEVICE=eth0:0 ONBOOT=yes IPADDR=192.168.4.15 PREFIX=24 重启网卡:systemctl restart network # 在rhel7和centos7中,network和networkManger同时管理网卡, # 如果网卡重启失败,关闭其中的一个就可以了 # systemctl stop networkManger #关闭networkManger 为web服务器配置网络环境: 使用nmcli为web服务配置ip 192.168.4.100 伪装调度器: # 这里不能使用和网络连接的物理网卡,只能使用lo(本地回环网卡), # 因为这个网卡只能主机自己识别,不会把伪装的ip暴露给其他主机,防止ip冲突 cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0} vim /etc/sysconfig/network-scripts/ifcfg-lo:0 DEVICE=lo:0 IPADDR=192.168.4.15 #伪装调度服务器ip NETMASK=255.255.255.255 #子网掩码必须是4个255,让ip变为主机型ip NETWORK=192.168.4.15 #网卡所属的网络 BROADCAST=192.168.4.15 #广播地址 ONBOOT=yes #开机启动 NAME=lo:0 修改内核参数:(隐藏伪装的ip) vim /etc/sysctl.conf 写入: net.ipv4.conf.all.arp_ignore = 1 #对除了lo的所有网卡有效 net.ipv4.conf.lo.arp_ignore = 1 #仅对lo网卡有效 net.ipv4.conf.lo.arp_announce = 2 #对除了lo的所有网卡有效 net.ipv4.conf.all.arp_announce = 2 #仅对lo网卡有效 # arp_ignore: # 当有主机广播询问谁是192.168.4.15时,arp_ignore = 1表示不回答,(隐藏ip) # 当有主机广播询问谁是192.168.4.15时,arp_ignore = 0表示回答,(暴露ip) # 当有主机广播询问谁是192.168.4.100时,arp_ignore = 1/0,都表示回答 # 简答来说arp_ignore = 0回答所有,arp_ignore = 1该回答的回答、不该回答的不回答 # arp_announce: # arp_announce = 2 表示不向任何主机主动声称自己的ip # arp_announce = 0 表示主动向其他主机声称自己的ip # arp_announce = 1 介于0和2之间。。。 刷新/etc/sysctl.conf: sysctl -p

创建LVS集群:

yum -y install ipvsadm ipvsadm -A -t 192.168.4.15:80 -s wrr #创建集群,使用wrr调度 ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100:80 -w 1 #默认是dr,权值1 ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200:80 -w 1 #默认是dr,权值1

LVS健康检查: LVS不具有健康检查功能,如果一台real server坏掉,那么客户机发送的请求就会变得无效了。如果想要检测real server是否坏掉,就需要自己定义脚本。

#!/bin/bash VIP=192.168.4.15 RIP1=192.168.4.100 RIP2=192.168.4.200 while: do for ip in RIP1 RIP2 do curl -s http://$ip &> /dev/null if[ $? -eq 0 ];then #可以连接(完好) ipvsadm -Ln | grep -q $ip || ipvsadm -a -t $VIP -r $ip #不存在则添加 else #不可以连接(损坏) ipvsadm -Ln | grep -q $ip && ipvsadm -d -t $VIP -r $ip #存在则删除 fi done sleep 1 done

写总结的第二十七天!!!

最新回复(0)