目录
1、keeplive介绍
keeplive属于高可用集群
1.1、可用性计算
A = MTBF / (MTBF+MTTR)
MTBF:集群上线时间 MTTR:故障时间
1.2、故障原因
软件故障:bug
硬件故障:设计缺陷,设备损耗,天灾人祸
1.3、实现高可用
主/备(机)
双主机
设备心跳:每隔一段时间发送信息给组播地址
1.4、VRRP---虚拟路由冗余协议
通过心跳来判断机器是否存活
虚拟路由标识:VRID(0-255),识别虚拟路由的唯一标识
VMAC:虚拟路由的虚拟mac地址
物理路由器---(使用顺序按照优先级进行)
master:主设备
backup:备用设备
priority:优先级
VRRP模式:抢占,非抢占
安全认证:无认证,简单字符认证,MD5
工作模式:
主/备:一台使用,另一台备份
主/主(避免资源浪费) :两个主机中,都有不同业务的VIP,其中一台出问题后,VIP都会转向存活的主机
2、keepalived配置
2.1、keepalived简介
vrrp协议的软件实现,原生设计目的为了高可用ipvs服务
功能:
基于vrrp协议完成地址流动
根据主机情况自动生成规则
为ipvs集群进行健康检测
定义脚本,在集群事务中使用脚本
2.2、keepalived组件及其架构
vrrp stack:VIP信息通告
checkers:监测后端real server健康检测
system call :实现vrrp协议状态转换时调用脚本
SMTP:邮件组件,出问题时发送邮件
IPVS wrapper:生成IPVS规则
Netlink Reflector:网络接口(通过网络接口进行访问)
WatchDog:监控进程
2.3、keepalived环境准备
一个测试主机,两台keepalived,后端两台子机
环境:企业7.9
实验环境搭建:
利用网络配置脚本配置ip
vmset.sh eth0 172.25.254.10 ka.sun.org
在子机里面安装httpd服务
yum install httpd -y
插入内容
[root@se sun]# echo 172.25.254.110 > /var/www/html/index.html
启动httpd服务
[root@se sun]# systemctl enable --now httpd
2.4、keepalived配置说明
1、配置文件组成部分
配置文件: /etc/keepalived/keepalived.conf
配置文件组成:
global configuration (全局配置)
配置邮件,路由id, vrrp配置
VRRP CONFIGURATION
定义每个vrrp虚拟路由
LVS CONFIGURATION
LVS集群的VS和RS
在两个ka服务器上面安装keepalived服务
[root@ka sun]# yum install keepalived -y
进入主配置文件
[root@ka sun]# vim /etc/keepalived/keepalived.conf
2、设定VIP
重启服务
[root@ka sun]# systemctl restart keepalived.service
将配置文件复制到第二个主机中
[root@ka sun]# scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf
更改第二台主机配置
重启服务
[root@ka sun]# systemctl enable --now keepalived.service
3、虚拟路由通讯设定
[root@ka sun]# systemctl restart keepalived.service
重启服务
通讯正常
keepalived日志分离
4、进入配置文件
[root@ka sun]# vim /etc/sysconfig/keepalived
重启服务
[root@ka sun]# systemctl restart keepalived.service
进入日志文件
[root@ka sun]# vim /etc/rsyslog.conf
重启服务
[root@ka sun]# systemctl restart rsyslog.service
5、keepalived独立子配置文件
进入配置文件
[root@ka sun]# vim /etc/keepalived/keepalived.conf
创建文件
[root@ka sun]# mkdir -p /etc/keepalived/conf.d
[root@ka sun]# vim /etc/keepalived/conf.d/172.25.254.100.conf
3、keepalived功能配置
3.1、非抢占模式
进入配置文件,将两个子机类型都改为BACKUP
重启服务
[root@ka sun]# systemctl restart keepalived.service
3.2、延迟抢占
进入配置文件
[root@ka sun]# systemctl restart keepalived.service
[root@ka sun]# systemctl restart keepalived.service
3.3、VIP单播配置
[root@ka sun]# systemctl restart keepalived.service
重启服务
[root@ka sun]# systemctl restart rsyslog.service
3.4、邮件通知、
用脚本调度
创建脚本
[root@ka sun]# vim /etc/keepalived/mail.sh
[root@ka sun]# chmod +x /etc/keepalived/mail.sh
提升权重
4、双主模式
进入配置文件
[root@ka sun]# vim /etc/keepalived/keepalived.conf
配置第二套主从
5、实现IPVS高可用性
在子机内配置VIP
ip a a 172.25.254.100/32 dev lo
[root@se network-scripts]# vim ifcfg-lo
配置文件内容
DEVICE=lo
IPADDR0=127.0.0.1
NETMASK0=255.0.0.0
IPADDR1=172.25.254.100
NETMASK1=255.255.255.255
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
启动服务
[root@se network-scripts]# systemctl restart network
写入配置文件
[root@se network-scripts]# vim /etc/sysctl.d/arp.conf
启用文件
[root@se network-scripts]# sysctl --system
配置keepalived内的LVS
进入配置文件
[root@ka sun]# vim /etc/keepalived/keepalived.conf
6、keepalived结合harpoxy
6.1、VRRP Script配置
自定义资源监控脚本script
[root@ka ~]# vim /etc/keepalived/test.sh
脚本内容
#!/bin/bash
[ ! -f /mnt/lee ]
echo $?
给脚本执行权限
[root@ka ~]# chmod +x /etc/keepalived/test.sh
将脚本写入配置文件
进入配置文件
[root@ka sun]# vim /etc/keepalived/keepalived.conf
调用VRRP Script
6.2、keepalived结合harpoxy集群
两台主机先安装haproy服务
yum install haproxy
配置haproxy配置文件
vim /etc/haproxy/haproxy.cfg
vim /etc/sysctl.conf
systemctl enable --now haproxy.service
启用haproxy功能
启用对内核的更改
sysctl -p
更改环回配置文件
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback
重新启用gaproxy功能
systemctl restart network
编写脚本
vim /etc/keepalived/test.sh
脚本内容
#!/bin/bash
killall -0 haproxy
在配置文件里面更改脚本名称
vim /etc/keepalived/keepalived.conf