keepalive

目录

一、keepalive基础

1.vrrp技术

VRRP相关术语

 2.VRRP相关技术

(1)通告

(2)工作方式

(3)安全认证:

(4)工作模式:

二、keepalived

1.keepalived介绍

功能

2.Keepalived 架构

(1)用户空间核心组件:

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

3.Keepalived 相关文件

(1)配置组成

(2)全局配置

(3)配置虚拟路由器

三、实际操作

 1.LVS + Keepalived 高可用群集

  LVS + Keepalived 高可用群集

环境

主keepalived

(1)关闭防火墙,selinux

(2)安装ipvsadm,并加载内核模块(先挂载,再安装)   

(3)复制文件 

(4)修改配置文件

 (5)将配置文件拷入备份

 (6)开启服务

(7)保存设置

备keepalived 

(1)关闭防火墙,selinux

(2)安装ipvsadm,并加载内核模块(先挂载,再安装)   

(3)复制文件 

(4)修改配置文件

(6)开启服务

 (7)保存设置

节点模式(两台相同配置)

 (1)关闭防火墙,selinux

(2)安装httpd服务,并开启服务

(3)创建简单的网页

(4)修改回环网卡名,IP地址,子网掩码 

(5)重启服务

(6)设置路由

(7)调整proce响应参数

测试 

(1)先ping看各节点是否可以ping通

(2)进入网页


一、keepalive基础

1.vrrp技术

VRRP相关术语

  • 虚拟路由器:Virtual Router

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

  • VIP:Virtual IP

  • VMAC:Virutal MAC (00-00-5e-00-01-VRID)

  • 物理路由器:

  • master:主设备

  • backup:备用设备

  • priority:优先级

虚拟路由器的主备 是由priority:优先级决定的

 2.VRRP相关技术

(1)通告

  • 心跳
  • 优先级等
  • 周期性

(2)工作方式

  • 抢占式
  • 非抢占式(生产环境中常用)
  • 延迟抢占模式

(3)安全认证:

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

(4)工作模式:

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

1.名词解释

通告:
是宣告自己的主权,不要妄想抢班夺权,不停的向外

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

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

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

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

2.优点和缺点

环境:

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

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

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

二、keepalived

1.keepalived介绍

 官网:http://keepalived.org/

功能

基于vrrp协议完成地址流动

为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

为ipvs集群的各RS做健康状态检测

基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务2. 

2.Keepalived 架构

(1)用户空间核心组件:

  • vrrp stack:VIP消息通告

  • checkers:监测real server(简单来说 就是监控后端真实服务器的服务)

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

  • SMTP:邮件组件(报警邮件)

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

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

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

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

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

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

keeplive可以配合ngnix等软件,反向代理

3.Keepalived 相关文件

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File:/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:
  • /etc/sysconfig/keepalived CentOS

(1)配置组成

/etc/keepalived/keepalived.conf 配置组成

  • GLOBAL CONFIGURATION

Global definitions(全局配置):定义邮件配置,route_id,vrrp配置,多播地址等

  • VRRP CONFIGURATION

VRRP instance(s):定义vrrp协议中的每个vrrp虚拟路由器的规则,基本信息

  • LVS CONFIGURATION(lvs调度服务器的规则设置)

Virtual server group(s)

Virtual server(s):LVS集群的VS和RS

(2)全局配置

  • /etc/keepalived/keepalived.conf 

global_defs {
 notification_email {
 root@localhost

  •  keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写多个

 root@localhost
  360601212@qq.com 
 }
 notification_email_from keepalived@localhost  

  • 发邮件的地址

 smtp_server 127.0.0.1     

  • 邮件服务器地址 

smtp_connect_timeout 30    

  • 邮件服务器连接timeout

router_id R1

  • 每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响

vrrp_skip_check_adv_addr  

  • 对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查

vrrp_strict 

严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置

  • gratuitous ARP messages 报文发送延迟,0表示不延迟

vrrp_garp_interval 0  

  • unsolicited NA messages (不请自来)消息发送延迟

vrrp_gna_interval 0 

  • 指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18 

vrrp_mcast_group4 224.0.0.18 

  • 此项和vrrp_strict同时开启时,有则不会添加防火墙规则,反之,则无需启用此项配置

vrrp_iptables        

  • 修改组播

keepalived主机之间利用多播相互通告消息,造成网络拥塞,可替换成单播,减少网络流量
注意:启用 vrrp_strict 时,不能启用单播

  • 在所有节点vrrp_instance语句块中设置对方主机的IP,建议设置为专用于对应心跳线网络的地址,而非使用业务网络

(3)配置虚拟路由器

  • <String>为vrrp的实例名,一般为业务名称

vrrp_instance <STRING> {
 配置参数
 ......
 }

 配置参数

  • 当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP

state MASTER|BACKUP

  • 绑定为当前虚拟路由器使用的物理接口,如:eth0,bond0,br0,可以和VIP不在一个网卡

interface IFACE_NAME 

  • 每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必认在同一网络中此值必须唯一

virtual_router_id VRID

  • 当前物理节点在此虚rrp通告的时间间隔,默认1s

priority 100 

  •  认证机制

authentication { 

AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
 auth_type AH|PASS   

预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样
 auth_pass <PASSWORD> 
}

  • 虚拟IP,生产环境可能指定上百个IP地址 

virtual_ipaddress { 

指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认为/32
 <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
 192.168.200.100 

指定VIP的网卡,建议和interface指令指定的岗卡不在一个网卡
192.168.200.101/24 dev eth1   

 指定VIP的网卡label
 192.168.200.102/24 dev eth2 label eth2:1 
}

  • 配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移 

track_interface { 
 eth0
 eth1
 …

三、实际操作

 1.LVS + Keepalived 高可用群集

  LVS + Keepalived 高可用群集

环境

主keepalived:192.168.174.10
备keepalived:192.168.174.20
web1:192.168.174.30
web2:192.168.174.40
vip:192.168.174.188
客户机访问

主keepalived

(1)关闭防火墙,selinux

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

(2)安装ipvsadm,并加载内核模块(先挂载,再安装)   

[root@localhost ~]#yum install ipvsadm keepalived -y
[root@localhost ~]#modprobe ip_vs

(3)复制文件 

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

(4)修改配置文件

[root@localhost keepalived]#vim keepalived.conf

 (5)将配置文件拷入备份

[root@localhost keepalived]#scp keepalived.conf root@192.168.174.20:/etc/keepalived/

 (6)开启服务

[root@localhost keepalived]#systemctl start keepalived.service 
[root@localhost keepalived]#ip a
[root@localhost keepalived]#vim /etc/sysctl.conf 

(7)保存设置

[root@localhost etc]# ipvsadm-save >/etc/sysconfig/ipvsadm

[root@localhost etc]# ipvsadm -ln

备keepalived 

(1)关闭防火墙,selinux

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

(2)安装ipvsadm,并加载内核模块(先挂载,再安装)   

[root@localhost ~]#yum install ipvsadm keepalived -y
[root@localhost ~]#modprobe ip_vs

(3)复制文件 

[root@localhost ~]# cd /etc/keepalived/

(4)修改配置文件

[root@localhost keepalived]#vim keepalived.conf

(6)开启服务

[root@localhost keepalived]#systemctl start keepalived.service 
[root@localhost keepalived]#ip a
[root@localhost keepalived]#vim /etc/sysctl.conf 

 (7)保存设置

[root@localhost etc]# ipvsadm-save >/etc/sysconfig/ipvsadm

[root@localhost etc]# ipvsadm -ln

节点模式(两台相同配置)

 (1)关闭防火墙,selinux

[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0

(2)安装httpd服务,并开启服务

[root@localhost ~]#yum install httpd -y
[root@localhost ~]#systemctl start httpd

(3)创建简单的网页

[root@localhost html]# vim index.html

节点1 hello wb!!!!

节点2 hello naruto

(4)修改回环网卡名,IP地址,子网掩码 

[root@localhost ~]#cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]#cp ifcfg-lo ifcfg-lo:0
[root@localhost ~]#ifconfig lo:0 192.168.174.188 255.255.255.255
[root@localhost network-scripts]#vim ifcfg-lo:0

配置文件内容
DEVICE=lo:0
IPADDR=192.168.174.188
NETMASK=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

(5)重启服务

[root@localhost network-scripts]# systemctl restart network

我们可以用ifconfig的命令进行查看有没有虚拟网卡

(6)设置路由

[root@localhost network-scripts]# route add -host 192.168.174.188 dev lo:0

(7)调整proce响应参数

[root@localhost network-scripts]# vim /etc/sysctl.conf


net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

测试 

(1)先ping看各节点是否可以ping通

都是可以ping通的 

(2)进入网页

输入192.168.174.188 

一分钟之后刷新 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值