1、部署keepalived
1.1、keepalived简介
vrrp 协议的软件实现,原生设计目的为了高可用 ipvs 服务官网: http://keepalived.org/功能:
基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持 nginx 、 haproxy 等服务
1.2、keepalived架构
- 用户空间核心组件:
vrrp stack:VIP消息通告
checkers:监测real server
system call:实现 vrrp 协议状态转换时调用脚本的功能
SMTP:邮件组件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口
WatchDog:监控进程- 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
- IO复用器:针对网络目的而优化的自己的线程抽象
- 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限
2.3keepalived环境准备
- 各节点时间必须同步:ntp, chrony
关闭防火墙及SELinux 各节点之间可通过主机名互相通信:非必须 建议使用 /etc/hosts 文件实现:非必须 各节点之间的 root 用户可以基于密钥认证的 ssh 服务完成互相通信:非必须
2.4keepalived相关文件
- 软件包名:keepalived
- 主程序文件:/usr/sbin/keepalived
- 主配置文件:/etc/keepalived/keepalived.conf
- 配置文件示例:/usr/share/doc/keepalived/
- Unit File:/lib/systemd/system/keepalived.service
- Unit File的环境配置文件:/etc/sysconfig/keepalived
2.5keepalived安装以及配置说明
配置文件组成
- GLOBAL CONFIGURATION
Global definitions: 定义邮件配置,route_id,vrrp配置,多播地址等- VRRP CONFIGURATION
VRRP instance(s): 定义每个vrrp虚拟路由器- LVS CONFIGURATION
Virtual server group(s)
Virtual server(s): LVS集群的VS和RS
全局参数
#keepalived下载
yum install keepalived -y
#配置全局参数
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email { #发送邮件的目的地
3066284972@qq.com
}
notification_email_from keepalived@KA1.com #发送邮件的邮箱
smtp_server 127.0.0.1 #发送邮件的主机
smtp_connect_timeout 30 #发送邮件的超时时间
router_id LVS_DEVEL #每个keepalived主机的唯一标识
vrrp_skip_check_adv_addr #如收到的报文通告和上一个报文来自路由器一致,则不检查,默认全检查
vrrp_strict #严格遵守vrrp协议,不建议开启
vrrp_garp_interval 0 #报文发送延迟 0无延迟
vrrp_gna_interval 0 #消息发送延迟 0无延迟
vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围
}
虚拟路由器,高可用配置点
#vrrp参数
vrrp_instance VI_1 {
state MASTER #设定该服务器默认为主服务器
interface eth0 #设定使用的接口是eth0
virtual_router_id 100 #设置vrrp组唯一标识 0~255
priority 100 #设定该服务器的优先级,越大越优先 1~254
advert_int 1 #vrrp通告的时间间隔,默认为1s
authentication { #认证机制
auth_type PASS #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
auth_pass 1111 #预共享密钥,仅前8位有效,一个虚拟路由器的多个keepalived节点必须一样
}
virtual_ipaddress { # #虚拟IP,即VIP
#配置格式
# <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.220.100/24 dev eth0 label eth0:1
}
}
后端Real server ,负载均衡配置点
virtual_server 192.168.220.100 80 { #VS
delay_loop 6 #检查后端服务器的时间间隔
lb_algo wrr #使用的调度算法:rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR #使用的模式:NAT|DR|tUN
protocol TCP #使用的协议:TCP|UDP|SCTP
persistence_timeout 0 #持久连接时长
real_server 192.168.220.210 80 { #RS
weight 1 #权重
HTTP_GET { #检测方法:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
url {
path /
status_code 200 #检测url页面返回状态码
}
connect_timeout 2 #连接超时时间
nb_get_retry 2 #连接重试次数
delay_before_retry 1 #连接重试前等待多长时间
}
}
real_server 192.168.220.220 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 2
nb_get_retry 2
delay_before_retry 1
}
}
}
2.5.1、启用keepalived日志功能
vim /etc/sysconfig/keepalived
#修改配置后保存退出
KEEPALIVED_OPTIONS="-D -S 5"
vim /etc/rsyslog.conf
#增加一行配置
local5.* /var/log/keepalive