目录
keepalived官网链接、LVS负载均衡群集-(Linux Virtual Server,Linux 虚拟服务器)-CSDN博客
什么是keepalived?
基础知识
Keepalived 是专门针对 LVS设计的一款强大的辅助工具,主要用来提供故障切换 (Failover) 和健康检查 (Health Checking) 功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替 换为新的服务器,当故障主机恢复后将其重新加入群集。
keepalived的热备方式
Keepalived 采用思科 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以 软件的方式实现 Linux 服务器的多机热备功能。VRRP 是针对路由器的一种备份解决方案——由多台 路由器组成一个热备组,通过共用的虚拟P 地址对外提供服务;每个热备组内同一时刻只有一台主 路由器提供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替 (优先级决定接替顺序)虚拟IP 地址,以继续提供服务,如上图。
热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP 地址 (VIP) 可以在热备组内的路由器之间进行转移,所以也称为漂移|P 地址。使用 Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33:0), 而 是 由Keepalived 根据配置文件自动管理。
安装keepalived
rpm -qa|grep keepalived
#查看是否安装,安装则删除
配置epel(阿里源)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
下载keepalived服务
yum install -y keepalived ipvsadm
systemctl enable keepalived
#设置keepalived服务开机自启
#ipvsadm管理工具
keepalived主服务器配置文件
keepalived服务配置文件:/etc/keepalived/keepalived.conf
global_defs { #本路由器(服务器)的名称
router_id lb1 #名称为lb1
}
vrrp_instance VI_1 { #本路由器(服务器)的名称
state MASTER #热备状态,MASTER表示主服务器
interface ens33 #热备状态,MASTER表示主服务器
virtual_router_id 6 #虚拟路由器的ID 号,每个热备组保持一致
priority 100 #优先级,数值越大优先级越高
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #认证信息,每个热备组保持一致
auth_type PASS #认证类型
auth_pass 6666 #密码字串
}
virtual_ipaddress {
192.168.8.254 #指定漂移地址(VIP), 可以有多个
}
}
在同一个Keepalived 热备组内,所有服务器的Keepalived 配置文件基本相同,包括虚拟路由器的 ID号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。路由器名称 (router_id): 建议为每个参与热备的服务器指定不同的名称。
热备状态 (state):至少应有一台主服务器,将状态设为 MASTER; 可以有多台备用的服务
器,将状态设为 BACKUP。
优先级 (priority): 数值越大则取得 VP 控制权的优先级越高,因此主服务器的优先级应设
为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发 生冲突。
备份服务器配置(修改热备状态为bakcup、优先级比主服务器低即可)
global_defs { #本路由器(服务器)的名称
router_id lb2 #名称为lb1
}
vrrp_instance VI_1 { #本路由器(服务器)的名称
state BACKUP #热备状态,MASTER表示主服务器
interface ens33 #热备状态,MASTER表示主服务器
virtual_router_id 6 #虚拟路由器的ID 号,每个热备组保持一致
priority 99 #优先级,数值越大优先级越高
advert_int 1 #通告间隔秒数(心跳频率)
authentication { #认证信息,每个热备组保持一致
auth_type PASS #认证类型
auth_pass 6666 #密码字串
}
virtual_ipaddress {
192.168.8.254 #指定漂移地址(VIP), 可以有多个
}
}
systemctl restart keepalived
#重启keepalived
ip add
#使用ip add命令查看虚拟ip地址
lvs_dr负载均衡配置
vim /etc/keepalived/keepalived.conf
省略部分内容
virtual_server 192.168.2.254 80 { //虚拟服务器地址(vip)、端口,与漂移地址一样
delay_loop 6 //健康检查的间隔时间(秒)
lb_algo rr //轮询(rr)调度算法
lb_kind DR //直接路由(DR)群集工作模式
! persistence 60 //连接保持时间(秒),若启用请去掉!号
protocol TCP //应用服务采用的是tcp协议
real_server 192.168.2.3 80 { //第一个web节点的地址和端口
weight 1 //节点的权重
TCP_CHECK { //健康检查方式(手工添加{前加空格)
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
real_server 192.168.2.4 80 { //第二个web节点的地址和端口
weight 1 //节点的权重
TCP_CHECK { //健康检查方式(手工添加{前加空格)
connect_port 80 //检查的目标端口
connect_timeout 3 //连接超时(秒)
nb_get_retry 3 //重试次数
delay_before_retry 4 //重试间隔(秒)
}
}
systemctl restart keepalived
#重启keepalived服务
配置web节点服务器
cd /etc/sysconfig/network-scripts
cp ifcfg-lo ifcfg-lo:0
配置虚拟ip地址
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.2.254
NETMASK=255.255.255.255
ONBOOT=yes
#激活lo:0网卡
ifup lo:0
为本机添加一条路由,将访问vip的数据波限制在本地
route add-host 虚拟ip地址 dev lo:0
调整/proc响应参数
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
这几项的作业:使rs不响应client的arp请求。
sysctl -p