LVS负载均衡之--Keepalived模式(具详细)

前言:前面和拐友们一起掌握了NAT和DR模式,这章来看一下负载均衡里的最后一种Keepalived模式,在生产中这个模式用的是还是比较广泛的

目录

一.Keepalived概述

1.2Keepalived的工作原理

1.3Keepalived体系主要模块及其作用

1.4 VRRP (虚拟路由冗余协议)

二.环境部署

 2.1部署主服务器配置

 2.2部署备服务器配置

          2.3部署节点服务器web1

          2.4部署节点服务器web2

 三.验证

 四.总结


一.Keepalived概述

  • Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能-----判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集中
  • Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

1.2Keepalived的工作原理

  • Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

    在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

1.3Keepalived体系主要模块及其作用

    keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
  • vrrp模块:是来实现VRRP协议的。
  • check模块:负责健康检查,常见的方式有端口检查及URL检查。

1.4 VRRP (虚拟路由冗余协议)

  • vrrp会把多台路由器组成一个虚拟路由组vrid,VRRP会生成一个虚拟路由(包含虚拟IP和虚拟MAC,局域网内用户不关心哪个是主哪个是备,他们只用虚拟路由器的的虚拟IP作为他们的网关)实际上虚拟IP是承载再master路由器,也就是说实际的数据通过master进行转发,backup是通过优先级来决定哪个是master路由,优先级最大的那台就是master,backup只是用来监听master定时发来的vrrp报文,如果超时未收到master发来的vrrp报文 backup就会抢占master 虚拟IP也就会一漂移到backup上

二.环境部署

主服务器:192.168.75.70

备服务器:192.168.75.40

Web服务器1:192.168.75.50

Web服务器2:192.168.75.20

客户端:192.168.75.10

VIP:192.168.75.60

2.1部署主服务器配置

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

 #安装Keepalived服务

[root@localhost ~]# yum -y install ipvsadm keepalived

 #备份keeplived.conf文件

 [root@localhost ~]# cd /etc/keepalived/
 [root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
 [root@localhost keepalived]# ls

 #修改配置keeplived.conf文件

[root@localhost keepalived]# vim keepalived.conf

--10行--修改,邮件服务指向本地
  smtp_server 127.0.0.1

--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02

  router_id LVS_01

--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接

   #vrrp_strict

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.75.60
    }
}

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.75.60 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.75.50 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.75.20 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}

 #刷新服务并查看虚拟网卡的IP

[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33 

#调整响应参数

[root@localhost keepalived]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

 #刷新一下

 [root@localhost keepalived]# sysctl -p

#配置策略并且启动服务

 [root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm
 [root@localhost keepalived]# systemctl start ipvsadm

#清空ipvsadm,并做策略

[root@localhost keepalived]# ipvsadm -C

[root@localhost keepalived]# ipvsadm -A -t 192.168.75.60:80 -s rr
[root@localhost keepalived]# ipvsadm -a -t 192.168.75.60:80 -r 192.168.75.50:80 -g
[root@localhost keepalived]# ipvsadm -a -t 192.168.75.60:80 -r 192.168.75.20:80 -g
[root@localhost keepalived]# ipvsadm 

[root@localhost keepalived]# ipvsadm -ln
 [root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm

 2.2部署备服务器配置

#部署防火墙

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0

 

 #安装keepalived安装包

[root@localhost yum.repos.d]# yum -y install ipvsadm keepalived 

 #备份keeplived.conf文件

 [root@localhost ~]# cd /etc/keepalived/
 [root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
 [root@localhost keepalived]# ls

#修改配置keeplived.conf文件

[root@localhost keepalived]# vim keepalived.conf

--10行--修改,邮件服务指向本地
  smtp_server 127.0.0.1

--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02

  router_id LVS_02

--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接

   #vrrp_strict

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state BACKUP
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 90
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 12345
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.75.60
    }
}

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.75.60 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.75.50 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.75.20 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}

 #刷新服务并查看虚拟网卡的IP

[root@localhost keepalived]# systemctl start keepalived
[root@localhost keepalived]# ip addr show dev ens33 

#调整响应参数

[root@localhost keepalived]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

 #刷新一下

 [root@localhost keepalived]# sysctl -p

 

#配置策略并且启动服务

 [root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm
 [root@localhost keepalived]# systemctl start ipvsadm

#清空ipvsadm,并做策略

[root@localhost keepalived]# ipvsadm -C

[root@localhost keepalived]# ipvsadm -A -t 192.168.75.60:80 -s rr
[root@localhost keepalived]# ipvsadm -a -t 192.168.75.60:80 -r 192.168.75.50:80 -g
[root@localhost keepalived]# ipvsadm -a -t 192.168.75.60:80 -r 192.168.75.20:80 -g
[root@localhost keepalived]# ipvsadm 

[root@localhost keepalived]# ipvsadm -ln
 [root@localhost keepalived]# ipvsadm-save >/etc/sysconfig/ipvsadm

2.3部署节点服务器web1

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

#安装并开启httpd服务

[root@localhost ~]#yum -y install httpd

[root@localhost ~]#systemctl start httpd

#配置站点文件

[root@localhost ~]# vim /var/www/html/index.html

hehe zhen shuai

 

 #配置虚拟IP

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.75.60
NETMASK=255.255.255.255

 #重启服务并配置虚拟网卡

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifup lo:0
[root@localhost ~]# ifconfig lo:0

 #设置路由

[root@localhost ~]# route add -host 192.168.75.60 dev lo:0
[root@localhost ~]# route -n

#调整响应参数并查看

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost ~]# sysctl -p                         

 

2.4部署节点服务器web2

#关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

#安装并开启httpd服务

[root@localhost ~]#yum -y install httpd

[root@localhost ~]#systemctl start httpd

 [root@localhost ~]# vim /var/www/html/index.html

 chenchen zhen chou

 

 #配置虚拟IP

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.75.60
NETMASK=255.255.255.255

 #重启服务并配置虚拟网卡

[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifup lo:0
[root@localhost ~]# ifconfig lo:0

 #设置路由

[root@localhost ~]# route add -host 192.168.75.60 dev lo:0
[root@localhost ~]# route -n

#调整响应参数并查看

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@localhost ~]# sysctl -p

 

 三.验证

四总结

1.Keepalived的主要功能

2.Keepalived主服务器与从服务器的区别

3.构建负载均衡和高可用群集

猜你喜欢

转载自blog.csdn.net/weixin_67474417/article/details/125207179