keepalived 主备使用
keepalived 主备使用
本篇主要介绍一下 keepalived 的基本的 主备使用

1.概述
什么是 keepalived呢,它是一个集群管理中 保证集群高可用的软件,防止单点故障,keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路冗余协议
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
通俗点说就是: keepalived中master节点会发送 ARP广播到 keepalived 的 backup中,如果vrrp没收到包则认为 master宕机,重新选举master ,并且把vip给漂移到新的master机器上,实现了高可用
2.准备工作
准备2台机器 , 把111定义为 keepalived 的 MASTER 节点
| ip | keepalived |
|---|---|
| 172.16.225.111 | MASTER |
| 172.16.225.110 | BACKUP |
3.安装keepalived
我这里简单点直接使用 yum 安装, 也可以通过二进制包安装
分别在2台机器上都要安装 keepalived
yum -y install keepalived
安装完成后 有 /etc/keepalived/keepalived.conf 默认配置文件如下:
! Configuration File for keepalived
global_defs {
# 通知 发邮件的
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
#VRRP 实例定义块
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
}
}
#虚拟服务器定义块
virtual_server 192.168.200.100 443 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.201.100 443 {
weight 1
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
....
- global_defs 定义全局配置 ,如 邮件配置
- VRRP 实例定义块: 主要配置
- 虚拟服务器定义块:
LVS 的配置 本篇不涉及
4.配置 2台 机器的keepalived
4.1 配置 MASTER 机器
把111机器的 keepalived.conf 文件修改如下
! Configuration File for keepalived
global_defs {
router_id LB111
}
vrrp_instance VI_1 {
# 定义为master
state MASTER
# 网卡
interface ens160
#这个一定要 和 110 一样 规定为一组路由器中的机器
virtual_router_id 51
# 优先级
priority 100
# vrrp组之间的心跳包频率 默认1s
advert_int 1
# 组的认证信息 可能有多个路由器组,为了不让把1组的vip漂移到2组的机器上
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的 ip 地址
virtual_ipaddress {
172.16.225.200
}
}
4.2 配置 BACKUP 机器
! Configuration File for keepalived
global_defs {
router_id LB111
}
vrrp_instance VI_1 {
# 指定 BACKUP 备用机
state BACKUP
interface ens160
# 虚拟router id 一组的机器要一致
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.225.200
}
}
5.启动 keepalived
分别在2台机器上直接启动
#启动keepalived
systemctl start keepalived
#查看状态
systemctl status keepalived
可能启动不成功: IPVS: Can't initialize ipvs: Protocol not available
[root@middle keepalived]# tail -f /var/log/messages
Dec 8 06:23:39 middle systemd: Started LVS and VRRP High Availability Monitor.
Dec 8 06:23:39 middle Keepalived_vrrp[17171]: VRRP_Instance(VI_1) removing protocol VIPs.
Dec 8 06:23:39 middle Keepalived_vrrp[17171]: Using LinkWatch kernel netlink reflector...
Dec 8 06:23:39 middle Keepalived_vrrp[17171]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Dec 8 06:23:39 middle Keepalived_healthcheckers[17170]: `IPVS: Can't initialize ipvs: Protocol not available`
Dec 8 06:23:39 middle Keepalived_healthcheckers[17170]: Stopped
Dec 8 06:23:39 middle Keepalived[17169]: Keepalived_healthcheckers exited with permanent error FATAL. Terminating
Dec 8 06:23:39 middle Keepalived[17169]: Stopping
Dec 8 06:23:40 middle Keepalived_vrrp[17171]: Stopped
Dec 8 06:23:44 middle Keepalived[17169]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2
需要安装 ipvsadm
yum -y install ipvsadm
再次启动

查看VIP 已经在 111 master节点的机器上了 并且在 ens160这个网卡上

6. 模拟 宕机MASTER
当 master机器如果出现了故障 比如断点 或者 关机等等.. 那么 master机器上的 keepalived 肯定不存在了

查看 BACKUP 机器上的 ip 可以发现 vip 已经漂移到这个机器上了

在ping 的同时 模拟宕机 可以看到中间短暂的超时 后面立即恢复了

总结
本篇主要介绍了keepalived 的基本的主备使用方式, 不过主备方式有缺点 它的备用服务器一直不工作 有点资源浪费, 可以改成 双主备模式 有机会再说
keepalived 可以结合 check检查脚本 来检测如 nginx redis mysql 等等 实现这些服务的高可用方式
欢迎大家访问 个人博客 Johnny小屋
欢迎关注个人公众号

keepalived 主备使用的更多相关文章
- Nginx+Keepalived主备切换(包含nginx服务停止)
原文地址:http://blog.sina.com.cn/s/blog_79ac6aa80101bmed.html Nginx+Keepalived主备切换(包含nginx服务停止) 环境: VM中4 ...
- keepalived主备节点都配置vip,vip切换异常案例分析
原文地址:http://blog.51cto.com/13599730/2161622 参考地址:https://blog.csdn.net/qq_14940627/article/details/7 ...
- haproxy+keepalived主备与双主模式配置
Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib ...
- Keepalived 主备配置
keepalived主备或多主多备,配置都是一样配置方法,只是搭建多少的问题. 1.keepalived安装 参考:https://www.cnblogs.com/zwcry/p/9542867.ht ...
- KeepAlived主备/主主模型高可用Nginx
部署准备: 两台CentOS 7主机HA1和HA2 CentOS 7 基于rpm包安装Nginx: 由于Base源中没有Nginx,所以要安装EPEL源,命令如下: wget http://dl.fe ...
- KeepAlived主备模型高可用LVS
部署前准备: 1.至少4台主机:两个Director(HA1,HA2),两个Real Server(RS1,RS2) 2.Director之间时间必须同步,且关闭各主机的防火墙和Selinux 3.出 ...
- Nginx+Keepalived 主备高可用 安装与配置
环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...
- keepAlived主备及双主
nginx用默认配置即可 1.主备配置 1.主keepAlived配置 vrrp_instance VI_1 { state MASTER #主备区分 interface eth0 virtual_r ...
- linux MySQL 5.7+keepalived 主备服务器自主切换
一.环境准备1.关闭防火墙与selinux systemctl stop firewalld setenforce 0 sed -i 's/SELINUX=.*/SELINUX=disabled/g' ...
- Nginx+Keepalived主备负载均衡
实验环境及软件版本: CentOS版本: 6.6(2.6.32.-504.el6.x86_64) nginx版本: nginx-1.6.2 keepalived版本:keepalived ...
随机推荐
- filebeat直接给es传输日志,自定义索引名,自定义多个索引文件
官方文档地址: https://www.elastic.co/guide/en/beats/filebeat/7.3/elasticsearch-output.html https://www.ela ...
- 定制开发 ERP 的优势有哪些?
定制开发ERP对企业而言是把双刃剑,成败难以把握.定制开发ERP理论上来讲是最贴合企业业务需求的,因为它是按企业需求定制,看上去似乎没什么毛病,但ERP是专业性极强的业务逻辑极其复杂的软件系统,有两个 ...
- paddle&蜜度 文本智能较对大赛经验分享(17/685)
引言 我之前参加了一个中文文本智能校对大赛,拿了17名,虽然没什么奖金但好歹也是自己solo拿的第一个比较好的名次吧,期间也学到了一些BERT应用的新视角和新的预训练方法,感觉还挺有趣的,所以在这里记 ...
- Vue学习之--------深入理解Vuex之模块化编码(2022/9/4)
在以下文章的基础上 1.深入理解Vuex.原理详解.实战应用:https://blog.csdn.net/weixin_43304253/article/details/126651368 2.深入理 ...
- golang中的字符串
0.1.索引 https://waterflow.link/articles/1666449874974 1.字符串编码 在go中rune是一个unicode编码点. 我们都知道UTF-8将字符编码为 ...
- 一篇了解全MVCC
一.什么是MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制,是一种并发控制的方法,一般用在数据库管理系统中,实现对数据库的并发访问,比如在M ...
- 驱动开发:内核监视LoadImage映像回调
在笔者上一篇文章<驱动开发:内核注册并监控对象回调>介绍了如何运用ObRegisterCallbacks注册进程与线程回调,并通过该回调实现了拦截指定进行运行的效果,本章LyShark将带 ...
- Java多线程(5):CAS
您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁.但随着Java的不断完善,JNI ...
- SLAM中的内外点
内外点之分最简单的说法就是是否符合当前位姿的判断:如果根据当前位姿,之前帧二维特征点所恢复出的地图点重投影到当前帧与实际的二维特征点匹配不上了,那么认为这个是质量差的点是outlier,抛弃掉,如果能 ...
- 京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
环境 准备工作 配置ansible(deploy 主机执行) # ssh-keygen # for i in 192.168.3.{21..28}; do ssh-copy-id -i ~/.ssh/ ...