行业资讯 2025年08月6日
0 收藏 0 点赞 819 浏览 2151 个字
摘要 :

文章目录 环境规划 安装配置Nginx 安装配置keepalived 1、安装 2、配置 启动两个节点上的keepalived 测试VIP 改进点 在最近的开发的一个子系统需要用到一主一备的集……




  • 环境规划
  • 安装配置Nginx
  • 安装配置keepalived
    • 1、安装
    • 2、配置
    • 启动两个节点上的keepalived
    • 测试VIP
  • 改进点

在最近的开发的一个子系统需要用到一主一备的集群架构,为了实现可用,直接采用了简单的keepalive+vip方式来实现,通过虚拟ip对外统一给客户端访问,前端代码部署在nginx服务器中,其中部分架构如下图:
keepalive+vip+nginx方式实现高可用集群系统
这里潘老师主要为了演示下keepalive等相关环境搭建和验证vip的地址漂移是否有效,特此记录如下。

环境规划

首先准备两台虚拟机,我这里是基于centos7系统的虚机,配置如下:

主机名 系统 IP 主备
master centos7 192.168.91.100
node1 centos7 192.168.91.101

安装centos可以参考:Vmware安装Centos7图文教程详解,快速搭建Linux系统
另外需要保证主从服务器时间同步,如果不同步可以参考如下文章:主从服务器节点通过NTP方式实现时间同步

安装配置Nginx

这里我们在主备服务器上分别安装Nginx服务器,安装方式参考:Linux系统安装与配置Nginx服务器

为了后续方便知道具体是访问了哪一个nginx服务器,我们修改nginx的欢迎页内容如下:

#进入nginx下html目录,修改index.html
vi index.html
#在标题上加上该节点的IP地址,比如主节点
Welcome to nginx! IP=192.168.91.100
#从节点则为101
Welcome to nginx! IP=192.168.91.101

访问后如下图:
keepalive+vip+nginx方式实现高可用集群系统

安装配置keepalived

1、安装

每个节点服务器都执行如下指令安装keepalived

yum -y install keepalived

2、配置

1)编辑配置文件

#打开配置文件
vi /etc/keepalived/keepalived.conf

2)在修改每个节点的VIP配置如下:

#master节点
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.91.188
    }
}
#node1节点
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.91.188
    }
}

主从节点配置说明:

1)state:主节点为MASTER,从节点为BACKUP
2)priority :权重,主节点大于从节点
3)interface:都一样,网卡指定为ens33(根据自己的实际情况来定,可以使用ip addr查看)
4)virtual_router_id:主从需要保持一致
5)virtual_ipaddress:虚拟ip地址,保持一致

附:vrrp配置段说明:

vrrp_instance NAME { :给出实例名称,要唯一

state MASTER|BUCKUP:自己的初始状态,只有两个master和backup

interface eth0:要把虚拟地址配置在哪个网卡上

virtual_router_id 51:虚拟路由的标识符,0-255

priority 100:定义优先级,0-255

advert_int 1:心跳信息发送的频率,单位为秒钟

authentication { PASS为简单密码认证,可使用openssl rand -hex 4生成随机子串
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
标准格式:/ brd dev scope
简单示例:192.168.2.100/24 brd 192.168.2.0 dev ens32
}

启动两个节点上的keepalived

#两个节点都执行
systemctl start keepalived
#查看运行状态
systemctl status keepalived
#停止指令
systemctl stop keepalived

接下来我们查看状态,发现运行成功:
keepalive+vip+nginx方式实现高可用集群系统
其中有部分SMTP报错,暂时不用管。

测试VIP

1)浏览器访问VIP,发现能正常访问到主节点的nginx:
keepalive+vip+nginx方式实现高可用集群系统

2)现在我们关闭master主机服务器,再次去访问该ip(访问前记得清除下浏览器缓存,不然地址没变,显示的还是浏览器缓存的master的页面),发现已经成功访问到了从节点的nginx:
keepalive+vip+nginx方式实现高可用集群系统

3)再启动master,然后启动master的nginx和keepalived,发现再访问vip,又重新回到了主节点。

VIP漂移测试成功。

改进点

1)nginx和keepalived可以都设置为开机启动
2)如果只是主节点nginx挂掉,而虚拟机没挂,则vip不会漂移到从节点,可以思考下怎么解决。
3)主节点恢复后又将vip漂移到主节点,造成了不必要的主备切换,如何解决?

请参考:keepalived中vrrp_script配置段功能详解

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8579.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号