LVS的DR模式+高可用集群(keepalived)

在实验之前,

  • 安装vm4虚拟机(修改ip为172.25.83.4,修改主机名为server4)
  • 在server1上,将之前设置的健康检查对应的服务(ldirectored)关掉,并设置为开机不自启

[root@server1 ~]# /etc/init.d/ldirectord   stop
Stopping ldirectord... success
[root@server1 ~]# chkconfig   ldirectord   off

  • 在server1上,将之前在网卡eth0上添加的虚拟ip(172.25.83.100)删除

[root@server1 ~]# ip   addr   del   172.25.83.100/24   dev   eth0

一.keepalived简介

  • Keepalived是基于vrrp协议的一款高可用软件。Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。

vrrp协议:

  • VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),VRRP是为了解决静态路由的高可用。VRRP的基本架构虚拟路由器由多个路由器组成,每个路由器都有各自的IP和共同的VRID(0-255),其中一个VRRP路由器通过竞选成为MASTER,占有VIP,对外提供路由服务,其他成为BACKUP,MASTER以IP组播(组播地址:224.0.0.18)形式发送VRRP协议包,与BACKUP保持心跳连接,若MASTER不可用(或BACKUP接收不到VRRP协议包),则BACKUP通过竞选产生新的MASTER并继续对外提供路由服务,从而实现高可用。

二.实验环境(rhel6.5版本)

主机名 IP
server1(主调度器):LVS MASTER 172.25.83.1
server2(真实服务器):Realserver1 172.25.83.2
server3(真实服务器):Realserver2 172.25.83.3
server4(副调度器):LVS BACKUP 172.25.83.4

(备用master:当主master在工作时,它是处于休眠状态,一旦原来的master挂掉,立马成为新的主master)

Virtual IP:172.25.83.100

三.高可用的部署

1.配置server1

<1>添加负载均衡和高可用yum源

[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo               #在原来的yum源的基础上添加如下内容

[LoadBalancer]                                        //负载均衡
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[HighAvailability]                                    //高可用
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/HighAvailability
enabled=1
gpgcheck=0

<2>下载keepalived安装包并解压

[root@server1 ~]# tar   zxf   keepalived-2.0.6.tar.gz

<3>安装keepalived的依赖包 :openssl-devel

[root@server1 keepalived-2.0.6]# ./configure   --prefix=/usr/local/keepalived   --with-init=SYSV           ##源码预编译;

<4>进入keepavilved解压目录进行编译

[root@server1 keepalived-2.0.6]# ./configure   --prefix=/usr/local/keepalived   --with-init=SYSV           ##再次源码预编译;

能找到下面的这行内容,表示预编译成功

[root@server1 keepalived-2.0.6]# make   &&   make install              ##源码编译并安装

<5>赋予keepalived脚本可执行权限

[root@server1 keepalived-2.0.6]# cd   /usr/local/keepalived/etc/rc.d/init.d/
[root@server1 init.d]# ls
keepalived
[root@server1 init.d]# chmod   +x   keepalived

<6>做软连接方便管理keepalived

[root@server1 init.d]# ln   -s   /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/init.d/

[root@server1 init.d]# ln   -s   /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/

[root@server1 init.d]# ln   -s   /usr/local/keepalived/etc/keepalived/   /etc/

[root@server1 init.d]# ln   -s   /usr/local/keepalived/sbin/keepalived   /sbin/

在这里插入图片描述

<7>编辑配置文件

[root@server1 init.d]# cd   /etc/keepalived/
[root@server1 keepalived]# ls
keepalived.conf  samples
[root@server1 keepalived]# vim   keepalived.conf

  1 ! Configuration File for keepalived
  2
  3 global_defs {
  4    notification_email {                     #发送报警邮件收件地址
  5      root@localhost
  6    }
  7    notification_email_from keepalived@localhost  #指明报警邮件的发送地址
  8    smtp_server 127.0.0.1         #邮件服务器地址
  9    smtp_connect_timeout 30       #smtp的超时时间
 10    router_id LVS_DEVEL           #物理服务器的主机名
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict                  #此处要注释
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15 }
 16
 17 vrrp_instance VI_1 {
 18     state MASTER  #当前节点在此虚拟路由器上的初始状态:主机是MASTER,余下的备机应该是BACKUP(由优先级决定)
 19     interface eth0   #绑定为当前虚拟路由器使用的物理接口;
 20     virtual_router_id 83   #当前虚拟路由器的唯一标识,范围是0-255(主,备机一致)
 21     priority 100   #当前主机在此虚拟路由器的优先级(主机大于备机);范围是1-253;
 22     advert_int 1   #通告发送间隔,包含主机优先级,心跳。
 23     authentication {

 24         auth_type PASS   #认证类型,PASS表示简单字符串认证
 25        auth_pass 1111   #认证密码,PASS密码最长为8位
 26     }
 27     virtual_ipaddress {   #虚拟路由IP地址,以辅助地址方式设置
 28         172.25.83.100
 29     }
 30 }
 31
 32 virtual_server 172.25.83.100 80 {  #LVS配置段,设置LVS的VIP地址和端口
 33     delay_loop 6     #服务轮循的时间间隔;检测RS服务器的状态
 34     lb_algo rr       #调度算法(rr为轮循)
 35     lb_kind DR       #集群类型
 36     #persistence_timeout 50   #是否启用持久连接,连接保存时长,此处要将其注释掉
 37     protocol TCP     #协议,只支持TCP协议
 38     real_server 172.25.83.2 80 {   #配置RS服务器的地址和端口
 39         weight 1     #权重
 40             connect_timeout 3  #连接超时时间
 41             retry 3   #重试次数
 42             delay_before_retry 3   #重试间隔
 43         }
 44     real_server 172.25.83.3 80 {
 45         weight 1
 46             connect_timeout 3
 47             retry 3
 48             delay_before_retry 3
 49         }
 50     }
 51 }

<8>将配置好的keepalived发送给server4(备用调度器)

[root@server1 keepalived]# cd   /usr/local/
[root@server1 local]# ls
bin  etc  games  include  keepalived  lib  lib64  libexec  sbin  share  src
[root@server1 local]# scp   -r   keepalived/   root@server4:/usr/local

[root@server1 keepalived]# cd /usr/local/
[root@server1 local]# ls
bin  etc  games  include  keepalived  lib  lib64  libexec  sbin  share  src
[root@server1 local]# scp -r keepalived/ root@server4:/usr/local

2.配置server4

<1>添加负载均衡和高可用yum源

[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo               #在原来的yum源的基础上添加如下内容

[LoadBalancer]                                        //负载均衡
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[HighAvailability]                                    //高可用
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.83.83/rhel6.5/HighAvailability
enabled=1
gpgcheck=0

<2>同样做软链接

[root@server4 ~]# ln   -s   /usr/local/keepalived/etc/rc.d/init.d/keepalived   /etc/init.d/
[root@server4 ~]# ln   -s   /usr/local/keepalived/etc/sysconfig/keepalived   /etc/sysconfig/
[root@server4 ~]# ln   -s   /usr/local/keepalived/etc/keepalived/   /etc/
[root@server4 ~]# ln   -s   /usr/local/keepalived/sbin/keepalived   /sbin/

<3>修改keepalived配置文件,将本机改为备用调度器(修改两个地方)

[root@server4 ~]# cd /etc/keepalived/
[root@server4 keepalived]# ls
keepalived.conf  samples
[root@server4 keepalived]# vim keepalived.conf
  1 ! Configuration File for keepalived
  2 
  3 global_defs {
  4    notification_email {
  5      root@localhost
  6    }
  7    notification_email_from keepalived@localhost
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id LVS_DEVEL
 11    vrrp_skip_check_adv_addr
 12    #vrrp_strict
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15 }
 16 
 17 vrrp_instance VI_1 {
 18     state BACKUP          #将此处该为BACKUP,作为备机
 19     interface eth0
 20     virtual_router_id 83
 21     priority 50           #将优先级改为50,一定要小于主机的优先级
 22     advert_int 1
 23     authentication {
 24         auth_type PASS
 25         auth_pass 1111
 26     }
 27     virtual_ipaddress {
 28         172.25.83.100
 29     }
 30 }
 31 
 32 virtual_server 172.25.83.100 80 {
 33     delay_loop 6
 34     lb_algo rr
 35     lb_kind DR
 36     #persistence_timeout 50
 37     protocol TCP
 38     real_server 172.25.83.2 80 {
 39         weight 1
 40             connect_timeout 3
 41             retry 3
 42             delay_before_retry 3
 43         }
 44     real_server 172.25.83.3 80 {
 45         weight 1
 46             connect_timeout 3
 47             retry 3
 48             delay_before_retry 3
 49         }
 50     }
 51 }

测试:

<1>开启server1(主机)与server4(备机)的keepalived

[root@server1 ~]# /etc/init.d/keepalived   start
Starting keepalived:                                       [  OK  ]

[root@server4 ~]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]

此时,会自动分配vip(172.25.83.100)给主机,因为主,备机同时开启时,主机的优先级高

可以看到日志

<2>当关掉主机的keepalived服务时,vip地址会自动漂移到备机(server4)上

可以看到日志

高可用下测试健康检查:(在物理机上测试——IP为172.25.83.83)

  • 值的注意的是:因为只有server1上配置了健康检查,所以必须使高可用服务得到的虚拟ip放在server1上。

打开server1上的健康检查对应的服务(ldirectored)

<1>两台realserver都正常时(开启http服务)

<2>当有一台realserver出现故障时(关掉server2的http服务)

此时调度器中剩下的真实的服务器只剩下server3。

<3>当两台realserver都出现故障时(server2与server3同时关掉http服务)

此时调度器中已经没有真实服务器

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/87110633