配置keepalived+lvs(DR模式)实现高可用的Web负载均衡(亲测无坑)

当学习了LVS三种模式的负载均衡。以DR模式为例,配置完后需要directord实现后端服务器的健康检查。而且还无法解决调度器宕掉整个负载均衡失去作用的问题,感觉很不爽。那么在DR模式下,为何不用keepalived实现LVS的高可用,还能对后端服务器进行健康检查。

keepalived实现LVS高可用的工作原理

用keepalived对后端web服务器的状态进行健康检查,如果某个web服务器宕机或者故障,keepalived将检测到,并将故障的服务器从系统中剔除,同时使用其他服务器来代替该服务器的工作,当该服务器正常工作后,keepalived自动将该服务器添加到服务器群。再通过配置主备keepalived,即需要配置两台主机的keeplived实现高可用。一台主机上keeplived宕掉了,则有备份keeplived接管负载均衡调度。

实验环境

主机名 功能
server4 负载均衡调度器+keepalived(MASTER)
server5 后端服务器1
server6 后端服务器2
server7 负载均衡调度器+keepalived(BACKUP)

一.keepalived+LVS(DR模式)负载均衡的配置

1.安装虚拟服务器1.4.3版本的keepalived包,并解压

tar zxf keepalived-1.4.3.tar.gz
cd keepalived-1.4.3
yum install -y openssl-devel.x86_64  ##安装keepalived依赖包

2.编译keepalived的源码包

yum install -y gcc  ##因为源码是c编写的,所以需要安装gcc
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make && make install

3.制作keepalived软链接,方便管理和配置,并添加可执行权限

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

4.将keepalived复制到server7

scp  -r /usr/local/keepalived/  server4:/usr/local/

5.在server4中修改keepalived的配置文件

vim  /etc/keepalived/keepalived.conf
! Configuration File for keepalived
##全局配置
global_defs {
   notification_email {
     root@localhost    ##健康检查报告通知邮箱
   }
   notification_email_from keepalived@localhost  ##发送邮件的地址
   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
}
##vrrpd的配置
vrrp_instance VI_1 {
    state MASTER   
    interface eth0		##绑定虚拟IP的指定节点
    virtual_router_id 1
    priority 100      ##优先级。主节点要比从节点优先级高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.13.100     # 设定虚拟ip(启动服务后,ip会自动添加在eth0中)
    }
}
##Apache服务的负载均衡
virtual_server 172.25.13.100 80 {
    delay_loop 1    ## 当RS服务器出问题后的反映时间
    lb_algo rr		  ## 指定LVS的算法,这里选择轮循rr
    lb_kind DR	  ## 指定LVS的模式,这里选择DR(直接路由模式)
    #persistence_timeout 50
protocol TCP
# RS的健康检查机制
    real_server 172.25.13.5 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.13.6 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

6.在server4上启动keepalived服务
1)启动前先关闭ipvsadm

systemctl stop ipvsadm			## 可以用ipvasdm -L查看策略,空表示关闭了

2)开启keepalived服务

systemctl start keepalived

开启后server4的eth0会自动添加上虚拟IP:172.25.13.100/32
在这里插入图片描述
7.在测试机中进行apache服务的测试
1)轮询方式访问web后端服务器server5和server6
在这里插入图片描述
2)当后端服务器server5的apache服务挂掉,keepalived可以检测到,并将故障的服务器从系统中剔除。

[root@server5 ~]# systemctl stop httpd

在这里插入图片描述
3)当服务器工作正常后 Keepalived自动将服务器加入到服务器群中

[root@server5 ~]# systemctl start httpd

在这里插入图片描述

二.keepalived+lvs(DR)实现高可用

为解决当只有一台keepalived主机时,如果它宕掉了,则数据无法转发,更不可能实现负载均衡的问题,可以配置主备keepalived,即需要再配置一台主机的keeplived实现高可用。一台主机上keeplived宕掉了,则有备份keeplived接管负载均衡调度。

1.在server7制作keepalived软链接,方便管理和配置,并添加可执行权限

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

2在server7中修改keepalived的配置文件(从节点状态设置程BACKUP优先级修改50)
在这里插入图片描述
3开启keepalived服务

systemctl start keepalived

4.在测试机上测试
1)当宕掉一台keepalived主机(server4),此时server7的状态为MASTER,server4的状态变成BACKUP

[root@server4 ~]# systemctl stop keepalived

在这里插入图片描述
在这里插入图片描述
2)当server4上的keepalived正常工作之后,由于优先级问题,server4又把主权拿过来,server7变成后备状态

 [root@server4 ~]# systemctl start keepalived

在这里插入图片描述
也可以通过日志来查看keepalived主机的状态!!!

发布了108 篇原创文章 · 获赞 127 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chaos_oper/article/details/96097974
今日推荐