lvs的DR模式和keepalived

LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

集群采用三层结构

一般来说,LVS集群采用三层结构,其主要组成部分为:

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

server1主机:

1.配置yum源(除了基本的源,高可用等也要添加)

2.安装ipvsadm

ipvsadm -ln  列出ipvsadm策略
ipvsadm -A -t 172.25.13.100:80 -s rr  ##添加策略,指定vip 172.25.13.100:80,-t指tcp,-s rr 指定轮询
ipvsadm -a -t 172.25.13.100:80 -r 172.25.13.2:80 -g  将虚拟ip映射到真实的ip,-r指定realserver -t指定tcp协议 -g指dr模式
ipvsadm -a -t 172.25.70.100:80 -r 172.25.13.3:80 -g
ipvsadm -ln

ip addr add 172.25.13.100/24 dev eth0  添加vip

在server2主机上:

vim /etc/http/conf/httpd.conf

ip addr add 172.25.13.100 dev eth0

在server3主机上:

vim /etc/http/conf/httpd.conf

ip addr add 172.25.13.100 dev eth0

在真机测试:发现实现了轮询,在server1上也有数据匹配到了

LVS DR工作原理可以看到一个客户端计算机发送一个ARP广播到LVS-DR集群,因为Director和集群节点(真实服务器)都是连接到相同的网络上的,它们都会接收到ARP广播“是谁的VIP1?”,这个时候我们希望的是只有前端的director来对用户进行响应,其他real server不应该响应用户直接的ARP包,因此必须对real server进行一定的处理,使其不响应VIP接口上的ARP请求

在server2主机上:

arptables -nL
 arptables -A IN -d 172.25.13.100 -j DROP  ##访问realserver的100ip时的请求直接丢弃
 arptables -A OUT -s 172.25.13.100 -j mangle --mangle-ip-s 172.25.13.2  #realserver发出的信息全部转为他的真实ip
arptables -nL

//etc/init.d/arptables_jf save

server3上是相同的配置

在真机测试:对比mac地址可查看这个100的资源时来自调度器server1,而不是realserver

Ldirector是一个监控集群服务节点运行状态的插件。Ldirector如果监控到集群节点中某个服务出现故障,就屏蔽此节点的对外连接功能,同时将后续请求转移到正常的节点提供服务。这个插件经常用在LVS负载均衡集群中。

yum install ldirectord-3.9.5-3.1.x86_64.rpm 
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
cd /etc/ha.d/
ls
vim ldirectord.cf

/etc/init.d/ldirectored start  

测试:

若没有此服务,server2的down掉时会报错

有此服务时,当server2的服务down掉时,屏蔽此节点,自动将连接转移到正常节点

当server2和server3都down掉时,由server1顶替

lvs+keepalived

Keepalived介绍:

  • keepalived 免费开源,具备第3、4、7层交换机的功能
  • 主要提供 loadbalancing(负载均衡)和 high-availability(高可用)功能
  • 负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)
  • 高可用是通过VRRP协议实现多台机器之间的故障转移服务
  • 采用多进程的设计模式,每个进程负责不同的功能

 keepalived服务的三个重要功能

  • 1.管理LVS负载均衡软件
  • 2.实现LVS集群节点的健康检查中
  • 3.作为系统网络服务的高可用性(failover)

VRRP( Virtual Router Redundancy Protocol )协议

  • 用于实现路由器冗余的协议
  • 解决静态路由单点故障问题
  • 通过一种竞选(election)协议来实现虚拟路由器的功能

Keepalived配置文件详解

  • Keepalived的所有配置都在一个配置文件里面设置,支持的配置项主要分三类:
    • 全局配置(Global Configuration):作用于整个keepalived服务
    • VRRPD配置:keepalived的核心
    • 虚拟服务配置:指定服务与负载均衡
  • 配置文件都是以块(block)形式组织的,每个块都在{ }包围的范围内
  • #和!开头的行都是注释
在server1中:
1)网上找到keepalived安装包
tar zxf keepalived-2.0.6.tar.gz  ###解压
ls
cd keepalived-2.0.6
ls
yum search OpenSSL   ###解决依赖性,安装其所需软件
yum install openssl-devel.x86_64 -y
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make  ###编译
make install  ###安装
cd  /usr/local/keepalived   ###下面为做软链接
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived ###给文件执行的权限
/etc/init.d/keepalived start  
/etc/init.d/keepalived stop
打开和关闭都显示ok的话,证明安装成功

编辑配置文件:vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     root@localhost  ##设置报警邮件地址,如果要开启邮件报警,要开启本机的sendmail服务
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict    ###一定要注释,不然它会自动给server1上防火墙加一条策略,导致实验不能进行
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER   ##指定keepalived的角色,MASTER表示此主机为主服务器,若为BACKUP则表示备用服务器
    interface eth0  ##指定HA检测网络的接口
    virtual_router_id 70  ##虚拟路由标识,MASTER和BACKUP的必须相同
    priority 100  ##定义优先级,数字越大优先级越高,因此MASTER的必须年比BACKUP的数字大,否则就会有冲突
    advert_int 1   ##设定MASTER和BACKUP负载均衡之间同步检查的时间间隔,单位为秒
    authentication {
        auth_type PASS  ##设定验证类型和密码
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.70.100  ####指定VIP,即切换到MASTER时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
    }
}
virtual_server 172.25.70.100 80 {  ##设定虚拟服务器ip地址及端口,两者以空格隔开
    delay_loop 3  ##设置运行情况检查时间,单位为秒
    lb_algo rr     ##设置负载均衡算法,这里设置为rr算法,即轮询算法
    lb_kind DR    ##设置lvs实现负载均衡机制,有NAT,TUN,DR三种模式
    #persistence_timeout 50  ###会话保持时间,在这里先注释掉
    protocol TCP|udp

    real_server 172.25.70.2 80 { ##配置realserver,需要指定真实ip与其端口,用空格隔开
        weight 1     ##配置服务节点的权重值
        TCP_CHECK {   ##realserver检查状态设置部分
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.70.3 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

scp keepalived.conf server4:/etc/keepalived

scp /etc/yum.repos.d/yum.repo servre4:/etc/yum.repos.d/

在server4主机上:

yum install ipvsadm -y

mkdir /etc/keepalived

vim keepalived.conf

测试:

1、关闭server1的keeepalived,我们发现任可以访问到页面,这时server4的keepalive顶替了上来

二、给keepalived添加多个虚拟服务

server1主机:

server4主机:

在server2和server3上添加vsftp服务

在真机测试:

Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是遑过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快可以小于1秒。

关闭主服务器,我们发现备用节点servre4变为Master,此时服务不受限制

三、双主模式(主备模式)

在前面的方案中,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

使用双主模式,这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。

server1主机:vim /etc/keepalived/keepalived.conf

server4:

\

在real server(server3和server2)上配置:

测试:

当把server4 down掉后,在真机lftp 172.25.13.200不受影响,因为server1会作为备份节点继续工作

猜你喜欢

转载自blog.csdn.net/owlcity123/article/details/82711049