欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux下的lvs的DR模型

程序员文章站 2024-03-21 12:14:34
...

Lvs 的DR模式(速率最高)

Vs 和 rs在同一局域网 两个有相同的目标地址(vip)(DR>TUN>NAT>FULLNAT)

1.在server1上关闭varnish、http

/etc/init.d/httpd stop
/etc/init.d/varnish stop

配置server1上的yum

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.11.250/rhel6.5/HighAvailability
gpgcheck=0

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.11.250/rhel6.5/LoadBalancer
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.11.250/rhel6.5/ResilientStorage
gpgcheck=0

[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.11.250/rhel6.5/ScalableFileSystem
gpgcheck=0

yum repolist # 刷新yum

linux下的lvs的DR模型
所要添加的包的名字在镜像挂在的目录下

yum install ipvsadm -y
Ipvsadm -L # 查看调度器的后台服务器
Ipvsadm -A -t 172.25.11.100:80 -s rr # 以rr的方式添加调度ip
Ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.2 -g # 将ip为172.25.11.2的主机添加为调度器的服务器
Ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.3 -g # 将ip为172.25.11.3的主机添加为调度器的服务器
Ipvsadm -ln # 查看调度器
ip addr add 172.25.11.100/24 dev eth0 # 在server1的eth0网卡上添加100的地址
Curl 172.25.11.100  # 错误,server2,3上没有100
arp -a | grep 100 # 查看所取的100的物理网卡
arp -d 172.25.11.100  # 删除100的缓存

在server2上:

ip addr add 172.25.11.100/24 dev eth0
在server3上:
ip addr add 172.25.11.100/24 dev eth0

在server1上:

Curl 172.25.11.100 # 进行轮叫(清除之后,再次执行此命令,可能不会轮叫,不经过调度器,直接去服务后端去拿,所以不会进行轮叫)

linux下的lvs的DR模型
在server2,3中安装arp

yum install arptables_jf -y
arptables -L  # 和iptables类似,有三条链
添加下面两条规则,进入的数据,全部阻止不回应,出去的数据将100转到23上
arptables -A IN -d 172.25.11.100 -j DROP
arptables -A OUT -s 172.25.11.100 -j mangle --mangle-ip-s 172.25.11.2/172.25.11.3
/etc/init.d/arptables_jf save # 保存修改,以免重启丢失

在物理机上清理缓存,重新curl 172.25.11.100
反复输入,重新轮叫
linux下的lvs的DR模型
在server1上查看调度,server2,3的后台服务器上都出现了相应次数的调度
linux下的lvs的DR模型

DR+ld检测后台服务的健康检查

按照上面配置时,当停掉其中一个后台服务挂掉之后访问时轮叫到这个服务器是会出现报错
linux下的lvs的DR模型
所以用下面的ld对后台服务器做健康检查
官网上下载ldirectord-3.9.5-3.1.x86_64.rpm安装包

rpm -ql ldirectord # 查看ldirectord服务的配置文件
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
cd /etc/ha.d/
vim ldirectord.cf
Virtual=172.25.11.100:80
real=172.25.11.2:80 gate
real=172.25.11.3:80 gate
fallback=127.0.0.1:8080 gate
service=http
scheduler=rr
protocal=tcp
checktype=negotiate
checkport=80
requset=’index.html’
#receive=’Test Page’
#virtualhost=www.x.y.z
ipvsadm -C
ipvsadm -l #查看调度器
/etc/init.d/ldirectord start
ipvsadm -l #查看调度器,后台服务器自动添加在调度器上
vim /var/www/html/index.html

server1 —– 站点正在维护
在物理机上验证,执行curl www.westos.org
会轮叫输出,server2,3上的页面中的内容,
当后台的服务器有一台挂掉之后,这台服务器就会自动从调度器上删除,所以当挂调这台服务器时,另一台服务器就会自动接替工作,在访问时不会出错,在两台服务器都挂了之后,本机就会自己接替工作,但是一台服务器,在数据量过大时不能独立承担,所以写上站点正在维护,以防服务器崩溃。
linux下的lvs的DR模型
DR+Keepalive对调度器进行健康检查(高可用机群+负载均衡机群、双机热备)
安装另一台虚拟机server4,按照之前的配置,配置号yum,ip和域名解析
在官网上下载keepalived-2.0.4.tar.gz安装包,

tar zxf keepalived-2.0.4.tar.gz #对安装包进行解压,
cd keepalived-2.0.4
yum install openssl-devel -y 
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make # 若没有什么错误就可以忽略,(警告可以忽略)
make install 
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
scp -r /usr/local/keepalived/ server4:/usr/local/

在server4中作server1中的所有软链接

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/

在server1中配置keepalived的配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
   root@localhost
   }
   notification_email_from keepalived@locahost
   smtp_server 127.0.0.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
    interface eth0
    virtual_router_id 11
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.11.100/24
    }
}

virtual_server 172.25.11.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

   real_server 172.25.11.2 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.11.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}
yum install -y mailx -y
vim /etc/sysconfig/keepalived/keepalived.conf

配置好文件之后将其scp到server4上,并将server4上的配置文件priority 50,以便当server1修复之后,调度器继续由server1担任。
在server4上安装mailx,以便查看邮件
在物理机上执行curl www.westos.org
linux下的lvs的DR模型
server2,3后台服务器上的页面轮叫,当server1挂掉之后,server4会接替server1的工作,继续担任调度器的工作。
linux下的lvs的DR模型
linux下的lvs的DR模型
server1由MASTER状态转为BACKUP状态,server4由BACKUP状态转为MASTER状态,当server1重新使用时,server1抢回ip重新成为交换机。