前言
所谓双主模型。就是连个节点都配置外部地址,通过dns多条A记录进行调度,可以实现负载均衡效果(效果比NGINX和LVS的差),但是可以使主备节点都投入使用,这样不会浪费备用服务器的资源。
大致拓扑图如下:
keepalived定义两个实例,一个VIP为主,一个VIP为备;在第二个节点就和第一个节点的VIP配置相反(主的为备,备的为主),这个解释可能不怎么清楚,根据下面的实验就能够很好的理解双主模型。
一、环境准备
- VIP-1:172.16.10.100
- VIP-2: 172.16.10.200
内网地址:
- Local-1:192.168.0.2
- Local-2:192.168.0.3
虚拟机两台:
一般来讲,负载均衡器有两个网卡,一个对外提供服务,一个对内用于连接各个Real Server
网卡:
ens33 外部网络接口
ens37 内部网络接口
配置好内网网卡的地址:
内部网络地址
调度器-1: ens37 192.168.0.2
调度器-2: ens37 192.168.0.3
二、keepalived配置
调度器-1的配置文件
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.0.100
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#定义主的实例
state MASTER
interface ens37
#通信的网络接口,用内网
virtual_router_id 51
#虚拟路由的唯一标识
priority 100
#优先级
advert_int 1
#心跳时间
authentication {
#认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#VIP-1 地址配置
172.16.10.100/16 dev ens33 label ens33:0
}
}
vrrp_instance VI_2 {
#备的实例
state BACKUP
interface ens37
#物理接口,用内网接口
virtual_router_id 52
#虚拟路由的唯一标识,不能和上面的主的相同
priority 99
#优先级需要低于主
advert_int 1
#心跳时间
authentication {
#认证信息,auth_pass不能和主的相同,否则容易混淆
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
#VIP-2地址配置
172.16.20.200/16 dev ens33 label ens33:1
}
}
调度器-2的配置文件
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from kaadmin@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.0.100
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
#定义主的实例
state BACKUP
#此处修改为BACKUP-----主要修改项!
interface ens37
#通信的网络接口,用内网
virtual_router_id 51
#虚拟路由的唯一标识
priority 99
#降低优先级-----主要修改项!
advert_int 1
#心跳时间
authentication {
#认证信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#VIP-1 地址配置
172.16.10.100/16 dev ens33 label ens33:0
}
}
vrrp_instance VI_2 {
#备的实例
state MASTER
#修改为主-----主要修改项!
interface ens37
#物理接口,用内网接口
virtual_router_id 52
#虚拟路由的唯一标识,不能和上面的主的相同
priority 100
#提高优先级-----主要修改项!
advert_int 1
#心跳时间
authentication {
#认证信息,auth_pass不能和主的相同,否则容易混淆
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
#VIP-2地址配置
172.16.20.200/16 dev ens33 label ens33:1
}
}
启动双方服务,既可以每台主机都有一个独立的VIP地址,假设节点一出现故障,那么节点二会把节点一的VIP配置在本机。此时节点二有两个VIP,都能够正常备用户访问。(反之同理)
<center>END</center>