一、高可用集群
1.LB:load Balance 负载均衡
HA:High Availability 高可用集群
HPC: High Performance Computing 高性能集群
2.提高系统高用性的解决方案:降低MTTR(mean time to repair)平均故障时间
建立冗余机制
active/passive 主/备
active/active 双主
active---> heartbeat--->passive
active--->heartbeat---->passive
3.vrrp:Virtual Router Redundancy Protocal
虚拟路由冗余协议:解决静态网关单点风险
物理层:路由器、三层交换机
软件层:keepalived
4.vrrp相关术语:
虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virtual MAC(00-00-5e-00-01-VRID)
物理路由器:
master:主设备
backup:备用设备
priority:优先级
VRRP相关技术:
通告:心跳、优先级、周期性
工作方式:抢占式、非抢占式
安全认证:
无认证 简单字符认证(预共享密钥) MD5
二、keepalived部署
1.keepalived简介
vrpp协议的软件实现,设计目的是为了高可用ipvs服务
功能:基于vrrp协议完成地址流动
为VIP地址所在的节点生成ipvs规则
为ipvs集群的各rs做健康检测
基于脚本调用接口实现脚本中定义的功能,进而影响集群事务依次支持nginx、haproxy等服务
2.keepalived环境准备
各节点必须同步:ntp、chrony
关闭防火墙selinux
各节点之间可以通过主机名互相通信(非必须)
建议使用/etc/hosts文件实现(非必须)
各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信(非必须)
3.keepalived相关文件
软件包名:keepalived
主程序文件:/usr/sbin/keepalived
主配置文件:/etc/keepalived/leepalived.conf
配置文件示例:/usr/share/doc/keepalived
4.keepalived安装
dnf install keepalived -y(安装keepalived的软件包)
systemctl start keepalived(启动keepalived)
5.keepalived配置说明
配置文件组成:
global configuration
global definitions:定义邮件配置,route_id,vrrp配置,多播地址等
vrrp configuration
vrrp instance:定义每个vrrp虚拟路由器
lvs configuration
virtual server group virtual server (LVS集群的vs和rs)
配置语法说明:
global_defs {
notification_email {
2676401838@qq.com keepalived发生故障切换时邮件发送的目标邮箱,可以按行区分写多个
}
notification_email_from keepalived@KA1.xiao.org 发邮件的地址
smtp_server 127.0.0.1 邮件服务器地址
smtp_connect_timeout 30 邮件服务器连接timeout
router_id KA1.xiao.org 一般使用当前的主机名
vrrp_skip_check_adv_addr 启用该配置后,如果收到的通告报文和上一个报文是同一个路由器则跳过检查
vrrp_strict 严格遵守vrrp协议
vrrp_grap_interval 0 报文发送延迟,0表示不延迟
vrrp_gna_interval 0 消息发送延迟
vrrp_mcast_group4 224.0.0.18 指定组播ip地址
}
配置虚拟路由器
vrrp_instance VI_1 {
state MASTER/SLAVE 绑定当前虚拟路由器使用的物理接口
interface eth0
virtual_router_id 51 每个虚拟路由器的唯一标识,同属一个虚拟路由器的多个keepalived节点必须相同
priority 100 (MASTER)/80(SLAVE) 当前物理节点在此虚拟路由器的优先级,范围为1-254,值越大优先级越高
advert_int 1 vrrp通告时间,默认为1s
authentication { 认证机制
auth_type AH|PASS pass为简单密码
use_pass 1111 预共享密钥,仅8位有效
}
virtual_ipaddress {
172.25.254.100 指定vip,不指定网卡时默认为eth0,不指定掩码位数时默认为32
172.25.254.101/24 dev eth1
172.25.254.102/24 dev eht2 label eth2:1
}
}
测试:tcpdump -i eth0 -nn host 224.0.0.18:表示所有与ip地址224.0.0.18相关的流量
tcpdump(网络抓包工具,用于捕获网络上流动的数据包并对其进行分析)
-i eth0:指定要监听的网络接口
-nn:不进行域名解析和不解析端口名称,-n:不将ip地址解析为主机名,-n:不将端口解析为服务名称
5.启用keepalived日志功能(/etc/rsyslog.conf)
systemctl restart keepalived.service rsyslog.service
通过 tail -f /var/log/keepalived.log 来查看keepalived的日志信息
6.实现独立子配置文件
当生产环境复杂时,/etc/keepalived/keepalived.conf文件内容过多不易管理
include /path/file
mkdir /etc/keepalived/conf.d
vim /etc/keepalived/keepalived.conf ……,其中配置内容同上,此处省略