当前位置: 首页 > news >正文

Nginx使用keepalived配置VIP

VIP常用于负载均衡的高可用,使用VIP可以给多个主机绑定一个IP,这样,当某个负载应用挂了之后,可以自动切到另一个负载。

我这里是在k8s环境中做的测试,集群中有6个节点,我给140和141两个节点配置VIP。

1. 安装keepalived

1.1 Ubuntu / Debian:

使用 apt 包管理器安装 Keepalived:

sudo apt update
sudo apt install keepalived

1.2 CentOS / RHEL:

使用 yum 包管理器安装 Keepalived:

sudo yum install keepalived

等待安装完成。

2. 配置keepalived

2.1 准备一个未被使用的ip作为VIP

可以联系网络管理员获取,或者自行获取(我是通过ping 一个一个试的,ping不通的就是未被使用的)。

我这里准备的IP是:10.10.101.254

keepalived配置文件:

global_defs {router_id node140 # 唯一的节点标识,不同节点需要配置成不一样的
}vrrp_script check_health {script "/etc/keepalived/check_nginx.sh" # 替换为你的健康检查脚本interval 10weight -2 # 注意,这里必须为负数
}vrrp_instance VI_1 {state MASTER # MASTER 或 BACKUPinterface ens192  # 根据你的网络接口名修改virtual_router_id 51priority 100 # 在 MASTER 节点上设置较高的优先级advert_int 1authentication {auth_type PASSauth_pass your_authentication_password}virtual_ipaddress {10.10.101.254 # 你的 VIP 地址}track_script {check_health}
}

/etc/keepalived/check_nginx.sh

#!/bin/bash# Check Nginx health
if curl -s -o /dev/null -w "%{http_code}" http://10.10.101.140:10254/healthz | grep -q "200"; thenecho "Nginx is healthy"exit 0  # Nginx is healthy, return success
elseecho "Nginx is not healthy"exit 1  # Nginx is not healthy, return failure
fi

重要参数详解:

参数一:global_defs.router_id

唯一的节点标识,不同节点需要配置成不一样的。

参数二:vrrp_instance VI_1.interface:

网络接口名称,即VIP所负载的节点的IP的网络接口名称(也叫网卡名称)。

我这里给140节点配置的VIP,所以我需要确定10.10.101.140这个IP的网卡名称。

ip addr show | grep 'inet 10.10.101.140'

ens192就是10.10.101.140的网卡名称。

参数三:vrrp_instance VI_1.virtual_ipaddress:

VIP,即上面准备的VIP。

参数四:vrrp_instance VI_1.state:

MASTER 或 BACKUP

参数五:vrrp_instance VI_1.priority:

节点权重。

除了这五个参数需要修改,其他参数都不需要改。

3. 启动keepalived

sudo systemctl start keepalived    # 启动服务
sudo systemctl stop keepalived     # 停止服务
sudo systemctl restart keepalived  # 重启服务

4. 扩展知识

http://www.lryc.cn/news/133791.html

相关文章:

  • C语言编写图形界面
  • K8s学习笔记3
  • ceph集群的扩容缩容
  • gremlin安装使用 详细步骤
  • Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用
  • 十、flume的安装
  • 互联网广告及产品变现认知分析整理
  • item_search_img-按图搜索淘宝商品(拍立淘)
  • OWASP Top 10(2021)漏洞学习(最新)
  • mysql 、sql server 游标 cursor
  • dockers搭建基本服务
  • 微信小程序纯前端从阿里云OSS下载json数据-完整版
  • 【微服务实战】01-工程结构概览
  • 论文导读|European Journal of Operational Research近期文章精选:旅行商问题专题
  • playwright迭代元素
  • 65 | 增长模型案例
  • Django视图-HttpRequest请求对象和HttpResponse响应对象
  • 原来Lambda表达式是这样写的
  • smartsofthelp 5.0 最专业的数据库优化工具,数据库配置优化,数据库高并发优化,SQL 语句优化...
  • 智影 R100:首款三维Mesh建模的SLAM激光扫描仪
  • Next.js - Loading UI and Streaming
  • 快速解决Ubuntu 中 wine 程序 中文显示为方块/显示错误/无法显示中文(2023)
  • 漏洞指北-VulFocus靶场专栏-中级02
  • 【开源三方库】bignumber.js:一个大数数学库
  • 【C++】iota函数 + sort函数实现基于一个数组的多数组对应下标绑定排序
  • C# window forms 进度条实现
  • ListNode相关
  • docker的资源控制及docker数据管理
  • 通过请求头传数据向后端发请求
  • 产品流程图是什么?怎么做?