KeepAlived的高可用和负载均衡

KEEPALIVED

Keepalived本质上就是解决调度器单点失败问题时,针对VIP进行浮动变换,从而实现多个调度器之间主从或者主主的HA

Keepalived是基于VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议进行工作

Keepalived本身可以直接定义LVS策略,进行健康性检查

Keepalived配合LVS实现原理:

将多个LVS服务器集成为一个虚拟的路由器Virtual Router,虚拟路由设定VIP连接外部网络,根据自行设定的每个LVS的优先级高低,来决定哪个LVS服务器绑定VIP提供调度服务,若出现故障,则自动按照优先级顺序进行VIP地址转移,继续实现LVS调度,实现HA

其中每个LVS之间需要通过多播地址,将自己的优先级顺序通知给其他LVS服务器,多播地址是D类:前八位224~239

单个VR,是LVS主/备的工作模式

多个VR,则可实现LVS主/主的工作模式,原理是VR-1中LVS的主/备关系,在VR-2中进行反转,可充分利用LVS服务器


Keepalived的程序软件是keepalived,主配置文件/etc/keepalived/keepalived.conf,主要分为以下三部分:

1.Global 全局配置

global_defs {

notification_email {

acassen@firewall.loc (自定义当keepalived出现故障时,接收信息的邮箱地址)

}

notification_email_from Alexandre.Cassen@firewall.loc (自定义发邮件的信息地址,需配合邮件服务)

smtp_server IP (填写发送邮件的IP)

smtp_connect_timeout 30 (定义邮件发送的超时时长)

router_id LVS_DEVEL (定义keepalived的编号标识)

vrrp_mcast_group4 D类地址 (定义多播地址)

}

2.VRRP    虚拟路由配置

vrrp_instance VI_1 { (自定义虚拟路由器实例的名称)

state MASTER (定义虚拟路由器下节点的主/备工作模式,注意大写)

interface DEVICE (定义VIP的绑定接口)

virtual_router_id ID (虚拟路由器的ID号,用来区分节点所属的集群组)

priority 100 (主/备节点的优先级)

advert_int 1 (发多播的时间间隔)

authentication {

auth_type PASS

auth_pass 1111 (通过密码验证是否属于同一个集群组)

}

virtual_ipaddress {

VIP (被绑定的VIP)

}

}

3.LVS         结合LVS的相关配置

virtual_server VIP PORT {

delay_loop 6

lb_algo rr (LVS的调度算法,可自定义)

lb_kind NAT (LVS的工作模式,可自定义,大写)

persistence_timeout 50 (持久连接时长,根据不同算法来定义,轮询算法下忽略)

protocol TCP (服务协议,只支持TCP)

sorry_server IP PORT (在所有RS宕机后,备用服务地址)

real_server RIP PORT {

weight 1

HTTP_GET {

url {

path /

status_code 200 (定义访问成功的响应吗)

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}


Keepalived主备模型的基本实现示例

1.前提,调度器的HA Cluster 的配置准备:

各节点之间的时间必须需要同步

通过主机名(/etc/hosts)相互通信、可基于ssh的kye验证互相通信(这两者在KA中不是必须,但是为方便通信,可以设置)

确保iptables和selinux不会阻碍通信

2. vim /etc/keepalived/keepalived.conf

主: ka1                                                                                                备:ka2 只需更改以下位置段信息

global_defs {

notification_email {

root@localhost

}

notification_email_from ka@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id ka1--------------------------------------------------------------router_id ka2

vrrp_mcast_group4 230.10.10.10

}

 

vrrp_instance VI_1 {

state MASTER------------------------------------------------------------state BACKUP

interface eth0

virtual_router_id 50

priority 100-----------------------------------------------------------------priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

10.0.0.100/24

}

}


Keepalived实现主备模式下LVS的DR模型的HA示例

在上述Keepalived主备模型的基础上,加入RS的定义规则

主: ka1                                                                                                  备:ka2只需变换如下位置

virtual_server 10.0.0.100 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

protocol TCP

sorry_server 127.0.0.1 80

real_server 192.168.31.27 80 {

weight 1----------------------------------------------------------------weight 2

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}


Keeoalived主主模型的基本实现示例

在上述Keepalived主备模型的基础上,另外再分别加上第二个VRRP的配置,并将其中的主/备关系设置成与第一个VRRP配置相反,以及指定新VIP-2

ka1:                                                                                                                        ka2:

vrrp_instance VI_2 {

state BACKUP------------------------------------------------------------state MASTER

interface eth0

virtual_router_id 60

priority 80------------------------------------------------------------------priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 654321

}

virtual_ipaddress {

10.0.0.200/24 (VIP-2)

}

}


Keepalived实现主主模式下LVS的DR模型的HA示例

在上述主备模式下LVS的DR模型的HA示例、Keeoalived主主模型的基本实现示例下,另外添加RS-2的定义规则

ka1:                                                                                                     ka2:

virtual_server 10.0.0.200 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

#persistence_timeout 50

protocol TCP

sorry_server 127.0.0.1 80

real_server 192.168.31.37 80 {

weight 2----------------------------------------------------------------weight 10

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

在上述实验中

RS服务器可根据实际情况进行增加

若是keepalived节点需要充当sorry_server,则必须自身启用web服务功能



Keepalived可基于防火墙iptables设置的标签来实现LVS高可用集群http、https

只需将指定VIP PORT改为 标签 即可:

iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 6

virtual_server fwmark 6 {

内容信息不变,与上述实验中定义一样

}



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值