keepalived

一:keepalived

1.1 keepalived的作用

Keepalived的作用是检测服务器的状态, 如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

1.2  vrrp技术

虚拟路由冗余协议,解决静态网关单点风险

物理层:路由器、三层交换机

软件层:keepalived

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务
官网:http://keepalived.org/
功能:

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

1.2.1 vrrp相关术语

虚拟路由器:Virtual Router 不是真实存在 ,虚构出来的

虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

VIP:Virtual IP 192.168.91.100 路由1 路由2

VMAC:Virutal MAC (00-00-5e-00-01-VRID)(虚拟mac)

物理路由器:

master:主设备

backup:备用设备

priority:优先级

1.2.2 vrrp相关技术

通告:心跳,优先级等;周期性     ###是宣告自己的主权,不要妄想抢班夺权,不停的向外

工作方式:抢占式        ###主服务器宕机,过了一段时间修好了,再把主权抢过来

                  非抢占式    ###主服务器宕机,过了一段时间修好了,原来的主就作为备了

                  延迟抢占    ###主修好后,等待一定的时间(300s)后再次成为主

安全认证: 无认证 简单字符认证:预共享密钥 MD5

           ###如果没有安全认证,不在集群中的keeplive服务器设置超高的优先级,会造成事故

工作模式:

主/备:单虚拟路由器

主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

环境:

有两台服务器
虚拟出两台虚拟路由器
第一台虚拟路由器中服务器1为主,服务器2为备,那么虚拟IP1就飘在服务器1上,真正工作的只有服务器1
第二台虚拟路由器中服务器2为主,服务器1为备,那么虚拟IP2就飘在服务器2上,真正工作的只有服务器2

优点:#提高了资源利用率:这样主,备服务器同时干活,可以同时运行两个项目
           #同样有备份功能:如果服务器1坏了,服务器2 将同时拥有虚拟IP1和虚拟IP2

缺点:虽然有备份冗余功能但是对机器的性能要求非常高,当其中一台出现故障,本来一台运行一个任务,现在所有的业务全部压在了一台上,有十分大的风险。

1.2.3 vrrp工作过程

选举Master,比较优先级,高的为Master,若优先级相同无Master时,比较接口IP地址,大的为Master,Master设备发送ARP报文,承担报文转发工作;

状态维持,Master设备周期发送通告报文,公布配置信息和工作状态;

Backup设备根据收到的通告报文判断Master设备是否工作正常,如果Master设备主动放弃Master地位时,会发送优先级为0的通告报文,Backup设备收到后会快速切换成Master设备或者定时器超时后Backup设备认为Master设备无法正常工作,会切换状态为Master。

1.3 系统故障

硬件故障:设计缺陷、wear out(损耗)、非人为不可抗拒因素

软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)

解决方案:建立冗余机制

active/passive 主/备

active/active 双主

active --> HEARTBEAT --> passive

active <--> HEARTBEAT <--> active

二:keepalived架构

官方文档:

https://keepalived.org/doc/
http://keepalived.org/documentation.html

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
vrrp模块:是来实现VRRP协议的。
check模块:负责健康检查,常见的方式有端口检查及URL检查

用户空间核心组件:

    1.  vrrp stack:VIP消息通告 虚拟ip

    2.  checkers:监测real server(简单来说 就是监控后端真实服务器的服务)是否存活

    3.  system call:实现 vrrp 协议状态转换时调用脚本的功能

    4.  SMTP:邮件组件(报警邮件)

    5.  IPVS wrapper:生成IPVS规则(直接生成ipvsadm)

    6.  Netlink Reflector:网络接口(将虚拟地址ip(vip)地址飘动)

    7.  WatchDog:监控进程(整个架构是否有问题)

控制组件:提供keepalived.conf 的解析器,完成Keepalived配置

IO复用器:针对网络目的而优化的自己的线程抽象

内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

三:实验环节

3.1 keepalived虚拟路由管理

安装keepalived

[root@ka1 ~]# yum install keepalived -y
[root@ka2 ~]# yum install keepalived -y

全局设置

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

vip设置

查看vip

在ka2中将优先级设置为80

测试  在web1远程登陆ka1并停止keepalived看ka2是否接管

3.2 开启通信以及日志独立功能

3.2.1 通信

在ka1与ka2这两个参数!!!要开都开要关都关!!!

drop策略消失

成功ping通

3.2.2 日志独立

[root@ka1 ~]# vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -S 6"

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

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

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

[root@ka1 ~]# cat  /var/log/keepalived.log

3.3 独立子配置文件

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

注销vrrp,抢其写入conf.d文件

[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d

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

vip依旧存在

3.4 非抢占和延迟抢占

!!!两台主机都要设置为BACKUP!!!

3.4.1 非抢占

在ka1-ka2中加入nopreempt

拥有vip的机子只有down之后bip才会漂移至另外一个主机

3.4.2 延迟抢占

在ka1-ka2中修改nopreempt为preempt_delay 5s(将抢占时间设置为五秒,企业中默认是五到十分钟)

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

3.5 组播变单播 

ka1-ka2 : vim /etc/keepalived/keepalived.conf

ka1

ka2

systemctl restart keepalived.service   分别重启1和2

测试

3.6 双主模式

在ka1中添加第二个虚拟路由

在ka2中添加第二个虚拟路由

systemctl restart keepalived.service   分别重启1和2

查看vip

停止一台主机后查看vip

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

vip完成漂移

3.7 keeplived+lvs :高可用负载均衡集群

在web1和web2添加lo

[root@realserver1 ~]# ip a a 172.25.254.100/32 dev lo
[root@realserver2 ~]# ip a a 172.25.254.100/32 dev lo

[root@realserver2 ~]#  vim /etc/sysctl.d/arp.conf

将文件从web2复制到web1

[root@realserver2 ~]# scp /etc/sysctl.d/arp.conf root@172.25.254.110:/etc/sysctl.d/arp.conf

[root@realserver1 ~]# sysctl --system

在web1-web2下载httpd服务

yum install httpd -y

[root@realserver2 ~]# echo RS1 - 172.25.254.120 > /var/www/html/index.html
[root@realserver1 ~]# echo RS1 - 172.25.254.101 > /var/www/html/index.html

在keepalived中安装ipvsadm

[root@ka1 ~]# yum install ipvsadm -y

在ka1-ka2分别编辑keepalived文件

ka1:                                                                  ka2

将ipvsadm上原有的策略删除

[root@ka1 ~]# ipvsadm -C

3.8 keepalived+haproxy

注销掉keepalived的server

安装haproxy

[root@ka1 ~]# yum install haproxy -y
[root@ka2 ~]# yum install haproxy -y

打开内核参数

编辑haproxy参数

ka1

ka2

写脚本

检测脚本ka1和ka2相同操作  操作完后重启keepalived

关闭ka1的haproxy

VIP漂移到ka2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值