使用Keppalived构建LVS-DR模式

  • 1.实验环境 

需要四台主机

vip(虚拟地址):192.168.184.200

角色    主机名    IP    接口        
从调度器    ds01    192.168.184.130    ens33        
主调度器    ds02    192.168.184.131  ens33        
rs节点1    rs01    192.168.184.132    ens33        
rs节点2    rs02    192.168.184.132  ens33        
注:关闭防火墙和selinux
 
 
 
 


Keepalived构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用来做双机热备。

Keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效点节,恢复后再重新加入

  • 2.安装keepalived 

第一种安装方法:
rpm安装

yum -y install keepalived
 

 
查看安装路径:
#  rpm -ql keepalived-1.3.5-1.el7.x86_64

第二种安装方法(源码安装)
采用第二种方式安装
在主节点上安装keepalived
解决依赖
#  yum -y install gcc openssl-devel pcre-devel libnl-devel
#  tar zxf keepalived-2.0.18.tar.gz 
#  cd keepalived-2.0.18
#  ./configure --prefix=/usr/local/keepalived
#  make && make install

配置Keepalived+LVS-DR模式
虚拟 IP 在某时刻只能属于某一个节点,另一个节点作为备用节点,当主节点不可用时,备用节点接管虚拟 IP,提供正常服务。

主节点ds02配置
keepalived配置文件keepalived.conf,主要包括以下几个配置区域:global_defs、vrrp_instance和virtual_server

global_defs:主要是配置故障发生时的通知对象以及机器标识
vrrp_instance:用来定义对外提供服务的VIP区域及其相关属性
virtual_server:虚拟服务器定义
配置文件详解
! Configuration File for keepalived   #!表示注释

global_defs {                                  #全局定义部分

   router_id ds02                           #表示运行keepalived服务器的一个标识名字可以随便取

}

vrrp_instance lvs-ds02 {
    state MASTER                                 #指定keepalived的角色,此服务为master
    interface ens33                                #指定监测网络的接口
    virtual_router_id 51                          #虚拟路由的标识
    priority 100                                       #定义优先级,数字越大优先级越高,1-255之间
    advert_int 1                                      #设置同步检查的时间间隔,单位是秒
    authentication {                                 #设置验证类型
        auth_type PASS                            #验证类型为PASS
        auth_pass 1111                             #验证的密码                      
    }
    virtual_ipaddress {                             
        192.168.184.200                             #设置虚拟IP
    }
}

virtual_server 192.168.184.200 80 {        #定义虚拟服务器,需指定虚拟ip和端口
    delay_loop 6
    lb_algo rr                                              #设置健康检查时间,单位为秒
    lb_kind DR                                            #设置负载调度算法
    persistence_timeout 50                        #设置会话持续时间
    protocol TCP                                         #设置转发协议的类型

    real_server 192.168.184.132 80 {             #定义realserver,需指定ip和端口
        weight 1                                              #指定权重  
        TCP_CHECK {                                #设置检测后端realserver的方式为获取tcp协议报文      
                 connect_timeout 3                #设置超时时间
                nb_get_retry 3                        #设置超时时候重试几次
                connect_port 80

                delay_before_retry  3               #在重试的时候的时间间隔
        }
    }
real_server 192.168.184.133 80  {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            connect_port 80

            delay_before_retry 3
        }
 }
}

修改keepalived.conf配置文件
# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

# vi /etc/keepalived/keepalived.conf 
编辑内容如下
! Configuration File for keepalived
 
global_defs {
   router_id ds02
}
 
vrrp_instance lvs-ds02 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.184.200
    }
}
 
virtual_server 192.168.184.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP
 
    real_server 192.168.184.132 80 {
        weight 1
        TCP_CHECK {
                 connect_timeout 3
                nb_get_retry 3
                connect_port 80
        }
    }
real_server 192.168.184.133 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            connect_port 80
        }
 }
}
重启keepalived 服务
# systemctl restart keepalived
# systemctl enable keepalived
# systemctl status keepalived
 
安装 ipvsadm
安装完不需要做任何配置,启动方式由keepalived 控制
# yum -y install ipvsadm
 
备用节点 ds01配置
安装keepalived 和主节点相同
修改 keepalived.conf配置文件
备用节点的keepalived.conf文件配置与主节点基本相同,只是router_id,state,priority三处不同
把主的配置文件复制到备上做修改: 

# scp  /etc/keepalived/keepalived.conf root@192.168.184.130:/etc/keepalived/

修改以下内容: 

# vi /etc/keepalived/keepalived.conf 

router_id ds01   修改id 标识

state BACKUP  修改状态

priority 99  修改优先级

启动keepalived: 
systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived
 
安装ipvsadm 
# yum -y install ipvsadm 
 

3测试主备切换 
(1).查看主备情况
 
当主调度器宕掉时vip(虚拟IP) 会漂移到从调度器上

(2).测试主备vip地址漂移
模拟keepalived
systemctl stop keepalived
 
VIP不在了
查看从调度器情况:
 
 VIP自动切换到从了

 把停掉的主调度器服务起来:
 
VIP又漂移回ds02上了,因为这是 keepalived抢占模式,keepalived默认是抢占模式优先级高于从,当主重新加入集群就会抢占回来
 

keepalived脑裂现象
脑裂可能产生的原因:

        1.在高可用集群之间心跳链路发生故障

                心跳老化,断掉

                IP配置冲突,网卡及驱动坏了

                心跳间连接设备故障(网卡交换机)

2.高可用服务器s防火墙阻挡了心跳消息传输

3.高可用服务器上心跳网卡地址等信息配置不一致

4.其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等

5.Keepalived配置里同一 VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题

4配置rs1和rs2
(rs1和rs2配置相同)
1.关闭ARP转发(在两台RS上都需要同样的操作)

 vi /etc/sysctl.conf

在尾部添加以下内容

net.ipv4.conf.ens33.arp_ignore = 1
 
net.ipv4.conf.ens33.arp_announce = 2
使内核参数修改生效:

sysctl -p
 
 
2.配置虚拟ip地址(VIP)

生成回环口配置文件:

# cd /etc/sysconfig/network-scripts/

# cp ifcfg-lo ifcfg-lo:0

# vi ifcfg-lo:0
内容如下
DEVICE=lo:0
IPADDR=192.168.30.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
 

 
重启network服务:

# systemctl restart network

 安装httpd
# yum install -y httpd
 
 

# systemctl start httpd
 

 
# echo "192.168.30.200" > /var/www/html/index.html
(为了测试负载均衡,各个服务器的页面不同)

5测试VIP 
在主节点 (ds01)查看 lvs 状态

 web访问 VIP 地址:
 

刷新页面:

注意:要把keepalived配置文件中 #persistence_timeout  连接保持注释掉,要不调度器就会给同一个 web池服务里的主机发请求


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值