keepalived

keepalived 简介

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务

官网:http://keepalived.org/

功能:

  • 基于vrrp协议完成地址流动
  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • 为ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

  • 用户空间核心组件:
  1. vrrp stack:VIP消息通告
  2. checkers:监测real server
  3. system call:实现 vrrp 协议状态转换时调用脚本的功能
  4. SMTP:邮件组件
  5. IPVS wrapper:生成IPVS规则
  6. Netlink Reflector:网络接口
  7. WatchDog:监控进程
  • 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
  • IO复用器:针对网络目的而优化的自己的线程抽象
  • 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

实验:

主备模式

四台主机

关闭防火墙和selinux

KA1 : IP 172.25.119.10

KA2 : IP  172.25.119.20

server1 : IP 172.25.119.110

server2 : IP  172.25.119.120

下载Keepalived

yum  install  keepalived -y

配置文件

 vim /etc/keepalived/keepalived.conf

将KA1的配置文件复制到KA2

[root@ka1~]#scp /etc/keepalived/keepalived.conf                    root@172.25.119.20:/etc/keepalived/keepalived.conf

修改KA2的优先级和主备模式

查看KA1的IP信息

ifconfig

抓包检测

抓包命令

tcpdump -i ens160 -nn host 224.0.0.18

用另一台主机110或120主机登录10主机关掉keepalived看备设备是否启动

[root@server1 ~]# ssh -l root 172.25.119.10

关闭keepalived

[root@ka1 ~]# systemctl stop keepalived.service

查看KA2的IP信息

在开启KA1的keepalived看看抓包的内容

[root@ka1 ~]# systemctl enable --now  keepalived.service

当KA1的keepalived再次启动时 IP又变成了10主机的IP ,由于KA1的优先级大于KA2的,又是默认抢占式,所以当KA1再次启动时将服务VIP抢过来了

日志重定向

编辑文件

vim /etc/sysconfig/keepalived

重启服务

[root@ka1 ~]# systemctl restart keepalived.service
[root@ka1 ~]# systemctl restart rsyslog.service

让VIP通信

或者

两种:要开都开

:要关都关

子配置文件

创建子配置文件

mkdir -p /etc/keepalived/conf.d/

cd /etc/keepalived/conf.d/

vim 172.25.119.100.conf

重启服务

[root@ka1 conf.d]# systemctl restart keepalived.service

查看IP信息

非抢占式

将主备服务器的主服务器也改成备服务器,两台服务器都加上nopreempt开启非抢占模式

KA1

KA2

测试

两台服务器正常启动

关闭KA1的keepalived后

在开启KA1的keepalived后

还是KA2在工作

关闭KA2的keepalived后  ,又换回KA1工作

非抢占模式,只要一台服务器不挂掉,另一台服务器是不会抢占VIP的

抢占延时模式

五秒不是很合理,只是为了演示,一般是五分钟到十分钟

KA1

KA2

测试

关闭KA1的keepalived

重启KA1的keepalived后5s才会重新抢占VIP

VIP单播配置

KA1

KA2

测试

VIP在KA1上

VIP在KA2上

开启邮件自动发送

当两台服务器的主备发生变化或者有主机挂掉就会给运维人员发邮件

我们使用qq邮箱做实验

在浏览器上登录qq邮箱

点击右上角的账号与安全

生成授权码

在KA1和KA2主机上下载mailx

yum install mailx -y

在KA1和KA2上编辑邮件的配置文件

vim /etc/mail.rc

在KA1和KA2上编写发邮件的脚本         

给脚本执行权限

chmod +x /etc/keepalived/mail.sh

在KA1和KA2的keepalived的配置文件加上该配置

重启服务

systemctl restart keepalived.service

测试

停掉KA1的keepalived

[root@ka1 ~]# systemctl stop keepalived.service

重启KA1的keepalived

双主架构

分别两个虚拟路由

一个KA1为主KA2为备、一个KA2为主KA1为备 ————————————>互为主备

KA1:

在172.25.119.100 为主 在172.25.119.200为备

KA2:

重启服务测试:

KA1

KA2:

关闭KA1的keepalived后

单主的LVS-DR模式

KA1

下载ipvsadm:         

yum install ipvsadm -y

KA2:

下载ipvsadm

yum install ipvsadm -y

server 1

下载 httpd

yum install httpd -y

在 网页文件中写入数据做测试

启动服务

[root@server1 ~]# systemctl enable --now httpd

创建环回地址

ip a a 172.25.119.100/32 dev lo

环回不响应

刷新内核模块

[root@server1 ~]# sysctl --system

server2

下载 httpd

yum install httpd -y

在 网页文件中写入数据做测试                           

启动服务

[root@server2 ~]# systemctl enable --now httpd

创建环回地址

ip a a 172.25.119.100/32 dev lo

环回不响应

刷新内核模块

[root@server2 ~]# sysctl --system

测试:

清空策略

ipvsadm -C

重启keepalived服务刷新策略

[root@ka1 ~]# systemctl stop keepalived.service

查看策略

在本地主机的cmd上测试

利用脚本实现主从角色切换

写一个自动检测的脚本

如果 /mnt/li文件存在 返回值为1 不存在为0

如果检测到 /mnt/li文件 weight将会加上优先值,原先优先值为100,再加上weight的 -30 就会变成70 ,小于KA2的优先级,VIP将会跑到KA2上,如果没有检测到优先值不会发生变化

测试

在没创建/mnt/li文件时

创建/mnt/li文件后

KA2上

高可用负载均衡集群(keepalived,haproxy)

在上个实验的基础上稍作修改

删掉server1和server2的环回地址

ip a d 172.25.119.100/32 dev lo

在KA1和KA2的内核模块上加入(两个都要做,以KA2为例)

net.ipv4.ip_nonlocal_bind = 1

加载刷新

在KA1和KA2上下载haproxy

yum imstall haproxy  -y

在配置文件中写入配置信息

KA1

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg

[root@ka1 ~]# vim /etc/keepalived/keepalived.conf

LVS和haproxy冲突所以注释掉LVS

KA2

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg

[root@ka2 ~]# vim /etc/keepalived/keepalived.conf

测试

while true; do curl 172.25.119.100  ;sleep 3; done

三秒执行一次

当把远程登录KA1把haproxy关掉后,根据配置,系统链接三次未成功就将vip转移到了KA2上,不影响正常的访问

利用脚本实现当haproxy挂掉后的主从角色切换

写脚本 (KA1和KA2都写)

在配置文件中加入配置 (KA1和KA2都写)

测试

关闭KA1的haproxy程序后

systemctl stop haproxy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值