Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 基础架构

    • LNMP架构下各项配置优化总结
    • HAProxy实践详解
    • Keepalived的部署及应用
      • Keepalived工作原理
      • Keepalived安装
        • 准备工作
        • 安装Keepalived
      • 配置高可用集群
      • 脑裂问题
    • ELK日志分析系统入门
    • 简单队列服务:HTTPSQS
    • 基于Redis使用令牌桶算法实现流量控制
    • 基于JWT实现Token认证
    • 布隆过滤,实现亿级数据快速查找
    • 深入理解一致性Hash原理
    • Redis和Zookeeper分布式锁实现
  • MQ

  • 微服务

  • 分布式

  • 高并发

  • 大数据

  • 容器化

  • 架构设计
  • 基础架构
Ravior
2017-07-26
目录

Keepalived的部署及应用

Keepalived是集群管理中保证集群高可用的软件,类似heartbeat,可以检测服务器/服务的健康状态,防止单点故障,实现主备切换。

# Keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived-heartbeat

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

# Keepalived安装

# 准备工作

Keepalived是集群高可用服务器软件,所以集群至少有两台以上服务器,例如:

  • Linux服务器A: 192.168.1.106
  • Linux服务器B: 192.168.1.107
  • 虚拟IP(VIP): 192.168.1.109

# 安装Keepalived

以Ubuntu系统为例,在集群的每台机器上重复以下安装步骤:

# 下载安装包
wget https://www.keepalived.org/software/keepalived-2.0.16.tar.gz
# 解压
tar zxvf keepalived-2.0.16.tar.gz
cd keepalived-2.0.16
# 配置编译参数
./configure --prefix=/usr/local/keepalived
# 编译
make
# 安装
sudo make install
1
2
3
4
5
6
7
8
9
10
11

安装完Keepalived后,为了快捷启动keepalived, 可以注册keepalived为系统服务,操作步骤如下:

# 将Keepalived安装包目录下的二进制文件移动到/etc/init.d/下
sudo cp keepalived-2.0.16/keepalived/etc/init.d/keepalived /etc/init.d/

# 因为keepalived默认读取/etc/keepalived/keepalived.conf配置文件,可以通过ln将安装包中的配置文件建立软连接,方便进行统一管理
sudo mkdir /etc/keepalived
sudo ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
1
2
3
4
5
6

可以通过如下命令管理Keepalived:

  • 启动Keepalived: sudo service keepalived start
  • 关闭Keepalived: sudo service keepalived stop
  • 查看Keepalived运行状态: sudo service keepalived status

# 配置高可用集群

设定Linux服务器A(192.168.1.106)为主服务器, Linux服务器B(192.168.1.107),虚拟IP为192.168.1.109, 修改配置文件**/etc/keepalived/keepalived.conf**进行配置。

主服务器(192.168.1.106)配置:

! Configuration File for keepalived

global_defs {
   notification_email {
   }
   notification_email_from ravior@gitlib.com
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id nginx_master
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}


vrrp_instance VI_1 {
    state MASTER  # 标记为主服务器
    interface enp0s3 # VVIP绑定的网卡
    virtual_router_id 51 # 虚拟路由ID, 同一组VRRP示例改值相同
    priority 50 # 优先级,当主服务器宕机后,备用服务器依据这个值选举新的主服务器,这个值越高优先级越高,主服务器的值一定要比从服务器大
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.109/24  # 配置虚拟IP
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

从服务器(192.168.1.107)配置:

 Configuration File for keepalived

global_defs {
   notification_email {
   }
   notification_email_from ravior@gitlib.com
   smtp_server smtp.qq.com
   smtp_connect_timeout 30
   router_id nginx_master
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state BACKUP # 标记为从服务器
    interface enp0s3 # VVIP绑定的网卡
    virtual_router_id 51 # 虚拟路由ID, 同一组VRRP示例改值相同
    priority 10 # 优先级,当主服务器宕机后,备用服务器依据这个值选举新的主服务器,这个值越高优先级越高,主服务器的值一定要比从服务器大
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.109/24 # 配置虚拟IP
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

启动主从服务器Keepalived服务器,查看服务器的IP: ip addr show

主服务器

备服务器

可以看到主服务器,成功获取到虚拟IP(VIP)

# 脑裂问题

如果两台服务器都拥有虚拟IP,则说明发生了脑裂,证明目前双机通信出现问题,产生此问题的原有在于两台服务器都探测不到组内其他服务器的状态(心跳请求无法正常响应),私自判定另一台服务器挂起,则抢占虚拟IP,脑裂的出现是不被允许的,解决此问题的方法为检查防火墙设置(关闭防火墙)或者使用串口通信。

#Linux#Keepalived
上次更新: 2022/12/02, 22:04:34
HAProxy实践详解
ELK日志分析系统入门

← HAProxy实践详解 ELK日志分析系统入门→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式