服务器IP hostname 节点说明 端口 管控台地址 账号 密码
192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:15672 guest guest
192.168.0.117 mq-02 rabbitmq slave 5672 http://192.168.0.117:15672 guest guest
192.168.0.118 mq-03 rabbitmq slave 5672 http://192.168.0.118:15672 guest guest
192.168.0.119 hk-01 haproxy+keepalived 8100 http://192.168.0.119:8100/rabbitmq-stats admin 123456
192.168.0.120 hk-02 haproxy+keepalived 8100 http://192.168.0.120:8100/rabbitmq-stats admin 123456
命令 说明
sudo service keepalived start 启动keepalived 服务
sudo service keepalived stop 停止keepalived 服务
sudo service keepalived restart 重新启动keepalived 服务
sudo service keepalived status 查看keepalived 服务运行状态
sudo chkconfig keepalived on keepalived 服务开机启动
命令 说明
sudo systemctl start keepalived.service 启动keepalived 服务
sudo systemctl stop keepalived.service 停止keepalived 服务
sudo systemctl restart keepalived.service 重新启动keepalived 服务
sudo systemctl status keepalived.service 查看keepalived 服务运行状态
sudo systemctl enable keepalived.service keepalived 服务开机启动
sudo systemctl disable keepalived.service keepalived 取消服务开机启动

接上一篇:RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

文章目录

  • 一、Keepalived简介
  • 二、Keepalived 安装实战
    • 2.1. 安装所需软件包
    • 2.2. 下载keepalived 软件包
    • 2.3. 同步keepalived 软件包
    • 2.4. 解压、编译、安装 keepalived
  • 三、将keepalived安装成Linux系统服务
    • 3.1. 首先创建文件夹,将keepalived配置文件进行复制
    • 3.2. 然后复制 keepalived 脚本文件
    • 3.3. keepalived 服务设置开机启动
  • 四、配置+修改 Keepalived配置文件
    • 4.1. 创建并编辑keepalived.conf文件
    • 4.2. 119 服务器配置
    • 4.3. 同步+修改 keepalived.conf 配置文件
    • 4.4. 执行脚本编写
    • 4.5. 脚本说明:
    • 4.6. 执行脚本赋权
  • 五、启动 keepalived 服务
    • 5.1. 查看haproxy启运行状态
    • 5.2. 启动keepalived
    • 5.3. 查看keepalived运行状态
  • 六、测试+验证 keepalived 单点故障转移
    • 6.1. 正常场景测试
    • 6.2. 主节点出现单点故障 测试
    • 6.3. 主节点出现单点故障+重新启动主节点 测试

一、Keepalived简介

Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx、Haproxy等反向代理的负载均衡服务器配合实现web服务端的高可用。Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA).VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个)。

二、Keepalived 安装实战

PS:下载地址:
http://www.keepalived.org/download.html

2.1. 安装所需软件包

yum install -y openssl openssl-devel

2.2. 下载keepalived 软件包

wget https://www.keepalived.org/software/keepalived-2.0.20.tar.gz

2.3. 同步keepalived 软件包

为了节省时间,将此软件包同步120服务器

scp keepalived-2.0.20.tar.gz root@192.168.0.120:/app/software

2.4. 解压、编译、安装 keepalived

# 解压keepalived
tar -zxf keepalived-2.0.20.tar.gz -C /app/
# 编译、安装 keepalived
cd keepalived-2.0.20/ && ./configure --prefix=/app/keepalived
make && make install

三、将keepalived安装成Linux系统服务

将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作

3.1. 首先创建文件夹,将keepalived配置文件进行复制

# 创建文件夹
mkdir /etc/keepalived
# 将keepalived配置文件进行复制
cp /app/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

3.2. 然后复制 keepalived 脚本文件

cp /app/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d/
cp /app/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# 建立软连接
ln -s /app/sbin/keepalived /usr/sbin/
# 由于系统默认建立软连接,因此需要先删除默认的
rm -f /sbin/keepalived
# 和自己指定安装的脚本文件建立软连接
ln -s /app/keepalived/sbin/keepalived /sbin/

3.3. keepalived 服务设置开机启动

可以设置开机启动:systemctl enable keepalived.service,到此我们安装完毕!

systemctl enable keepalived.service

四、配置+修改 Keepalived配置文件

PS:修改keepalived.conf配置文件

4.1. 创建并编辑keepalived.conf文件

vim /etc/keepalived/keepalived.conf

4.2. 119 服务器配置

! Configuration File for keepalivedglobal_defs {router_id hk-01  ##标识节点的字符串,通常为hostname}vrrp_script chk_haproxy {script "/etc/keepalived/haproxy_check.sh"  ##执行脚本位置interval 2  ##检测时间间隔weight -20  ##如果条件成立则权重减20
}
#监测haproxy进程状态,每2秒执行一次
vrrp_instance VI_1 {state MASTER  ## 主节点为MASTER,备份节点为BACKUPinterface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth0)virtual_router_id 119  ## 虚拟路由ID号(主备节点一定要相同)mcast_src_ip 192.168.0.119 ## 本机ip地址priority 100  ##优先级配置(0-254的值)nopreemptadvert_int 1  ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {  ## 认证匹配auth_type PASSauth_pass ncl@1234}track_script {chk_haproxy}virtual_ipaddress {192.168.0.112  ## 虚拟ip,可以指定多个}
}

4.3. 同步+修改 keepalived.conf 配置文件

将此配置文件同步120服务器

scp  keepalived.conf root@192.168.0.120:/etc/keepalived/

修改第一处:将router_id 修改为120 服务器hostname
修改第二处:mcast_src_ip 修改为120 本机ip地址
修改第三处:priority 修改为 90 ## 主节点 100 从节点 90
修改第四处:state 将 MASTER 修改为BACKUP

120服务器配置:

! Configuration File for keepalivedglobal_defs {router_id hk-02  ##标识节点的字符串,通常为hostname}
#监测haproxy进程状态,每2秒执行一次
vrrp_script chk_haproxy {script "/etc/keepalived/haproxy_check.sh"  ##执行脚本位置interval 2  ##检测时间间隔weight -20  ##如果条件成立则权重减20
}vrrp_instance VI_1 {state BACKUP ## 主节点为MASTER,备份节点为BACKUPinterface ens33 ## 绑定虚拟IP的网络接口(网卡),与本机IP地址所在的网络接口相同(我这里是eth0)virtual_router_id 119  ## 虚拟路由ID号(主备节点一定要相同)mcast_src_ip 192.168.0.120 ## 本机ip地址priority 90  ##优先级配置(0-254的值)nopreemptadvert_int 1  ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
authentication {  ## 认证匹配auth_type PASSauth_pass ncl@1234}track_script {chk_haproxy}virtual_ipaddress {192.168.0.112  ## 虚拟ip,可以指定多个}
}

4.4. 执行脚本编写

PS:添加文件位置为/etc/keepalived/haproxy_check.sh(119、120两个节点文件内容一致即可)

vim /etc/keepalived/haproxy_check.sh
#!/bin/bash
COUNT=`ps -C haproxy --no-header |wc -l`
if [ $COUNT -eq 0 ];then/app/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfgsleep 2if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
fi

4.5. 脚本说明:

  1. 监测haproxy进程状态,每2秒执行一次
  2. 如果存在,则跳过逻辑
  3. 如果不存在,重新启动 haproxy 服务

4.6. 执行脚本赋权

PS:haproxy_check.sh脚本授权,赋予可执行权限.

chmod +x /etc/keepalived/haproxy_check.sh

五、启动 keepalived 服务

PS:启动keepalived之前先检查haproxy启运行状态

5.1. 查看haproxy启运行状态

命令查看方式:

ps -ef | grep haproxy



浏览器查看方式:

从上面可以看出haproxy 已经正常运行

5.2. 启动keepalived

PS:当我们启动俩个haproxy节点以后,我们可以启动keepalived服务程序

# 启动两台机器的keepalived
service keepalived start

5.3. 查看keepalived运行状态

ps -ef | grep keepalived


六、测试+验证 keepalived 单点故障转移

6.1. 正常场景测试

测试结果预测:

keepalived 服务正常启动,虚拟ip在 主节点的服务器上(119 服务器)

在119服务器 查看虚拟IP

ip a

在120服务器上是没有虚拟IP的(除非主节点119 keepalived服务停止)
在119服务器 查看虚拟IP

ip a

6.2. 主节点出现单点故障 测试

测试结果预测:

1. keepalived 服务正常启动,虚拟ip在 主节点的服务器上(119 服务器)
2. 当主节点出现单点故障后,虚拟ip会漂移到BACKUP节点

模拟虚拟IP漂移到 120服务器场景

停止主节点119 keepalived服务停止

service keepalived stop

再次查看119 是否存在虚拟IP

ip a


再次查看120 虚拟IP是否漂移成功

ip a

从上面模拟测试结果,符合咱们的预测!!!

6.3. 主节点出现单点故障+重新启动主节点 测试

1. keepalived 服务正常启动,虚拟ip在 主节点的服务器上(119 服务器)
2. 当主节点出现单点故障后,虚拟ip会漂移到BACKUP节点
3. 当主节点单点故障修复后,由于咱们设置了权重,主节点权重比从节点权重大,因此,虚拟IP会重新回到主节点服务器上

二次模拟测试,权重是否设置正常
119 权重权重 100
120 设置权重 90

yuce测试结果:
当主节点119 keepalived节点再次启动,虚拟ip又会回到主节点服务器上

主节点119服务器再次启动 keepalived 服务,进行模拟测试

[root@hk-01 keepalived]# service keepalived start
Starting keepalived (via systemctl):                       [  OK  ]
[root@hk-01 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:2a:fc:5d brd ff:ff:ff:ff:ff:ffinet 192.168.0.119/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33valid_lft 70561sec preferred_lft 70561secinet 192.168.0.112/32 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::ac32:9647:2dd9:bed5/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@hk-01 keepalived]#

120 服务器 查看测试结果

[root@hk-02 keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:f9:d8:e3 brd ff:ff:ff:ff:ff:ffinet 192.168.0.120/24 brd 192.168.0.255 scope global noprefixroute dynamic ens33valid_lft 70574sec preferred_lft 70574secinet6 fe80::ac32:9647:2dd9:bed5/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft foreverinet6 fe80::c92d:38e3:9ea0:a936/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@hk-02 keepalived]#

RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成高性能高可用组件 Keepalived_03相关推荐

  1. RabbitMQ+haproxy+keeplived 高可用负载均衡+镜像集群模式_集成负载均衡组件 Ha-Proxy_02

    服务器IP hostname 节点说明 端口 管控台地址 账号 密码 192.168.0.115 mq-01 rabbitmq master 5672 http://192.168.0.115:156 ...

  2. 使用LVS和Keepalived搭建高可用负载均衡服务器集群

    目录 1.什么是LVS和Keepalived 2.负载均衡服务器集群示例环境搭建及安装配置 2.1.环境网络拓扑结构 2.2.安装ipvsadm软件 2.3.安装keepalived 2.4.配置网络 ...

  3. haproxy keepalived_详解mycat+haproxy+keepalived搭建高可用负载均衡mysql集群

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  4. RabbitMQ + 镜像队列 + HAProxy 实现负载均衡的集群

    RabbitMQ + 镜像队列 + HAProxy 实现负载均衡的集群 一.集群管理(RabbitMQ扩容) 1. 环境介绍 hostname ip mq1 192.168.80.16 mq2 192 ...

  5. web应用的负载均衡、集群、高可用(HA)解决方案

    web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...

  6. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案

    浅谈web应用的负载均衡.集群.高可用(HA)解决方案 转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html

  7. 负载均衡、集群和高可用有什么区别?侧重点不同!

    我们都知道负载均衡.集群和高可用是不同的概念,但是又有着千丝万缕的关系. 具体是什么样的区别和联系呢?笔者经过自思考,给出己浅显的答案.如果不满意.持反对意见,那么一定是你对,记得来评论区教育我~ 负 ...

  8. linux 内核round-robin scheduler代码,用LVS构架负载均衡Linux集群系统 linux lvs

    never queue scheduling --- IPVS application helper FTP protocol helper 以上所有项建议全部选择. (4)Networking op ...

  9. 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务

    使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务 一.基于于NAT的LVS的安装与配置. 1. 硬件需求和网络拓扑                       ...

最新文章

  1. iOS 获取键盘相关信息
  2. Python调用MongoDB使用心得
  3. Sqlserver 2012 导入 DBF文件
  4. linux中负载值为多少正常_linux 查看负载和使用情况 top
  5. AD域服务器卸载---WindowsServer2012R2
  6. 1.API的调用过程(3环部分)
  7. 无盘服务器回写盘intel,无盘回写盘碎片清理工具 完美解决无盘回写盘碎片
  8. 写烂代码的人离职之后...
  9. 基于图像识别的火灾检测系统设计思路流程
  10. shared pool 和buffer pool 详解(之二, Cache Buffers LRU Chain、Cache Buffers LRU Chain闩锁竞争与解决)
  11. 百度云盘不限速的方法
  12. win7 管理iphone日历_iPhone和Windows同步文件,这7个技巧让你的效率成倍增加
  13. 最全常用Linux命令升级及面试必备
  14. Python入门之烤地瓜练习
  15. 微信分享给朋友 图片显示正常,但是分享到朋友圈图片黑色【显示不出来】
  16. 物联网开发笔记(58)- 使用Micropython开发ESP32开发板之控制2.90寸电子墨水屏模块黑白套件
  17. 秀米svg点击显示另一张图_公众号排版怎么做?点击图片出现另一张图片是怎么弄的?...
  18. labview声音信号采集和分离
  19. 【研究生】计算机架构的新黄金时代,两位图灵奖得主最新力作
  20. 咱们北京大兴国际机场见!

热门文章

  1. 核聚变可能应用于汽车 你以为这是个玩笑吗?
  2. 响应HTTP服务的shell脚本
  3. 虚拟内存分页机制的页面置换
  4. 分页查询抽象出的对象属性(笔记)
  5. 语音识别学习日志 2019-7-14 语音识别基础知识准备2 {EM算法与混合高斯模型(Gaussian mixture model, GMM)}
  6. socket阻塞与非阻塞,同步与异步
  7. Java Map中那些巧妙的设计
  8. 代码评审中的代码协同
  9. 如何基于大数据及AI平台实现业务系统实时化?
  10. 大数据上云第一课:MaxCompute授权和外表操作躲坑指南