Keepalived+Lvs高可用高性能负载配置

环境准备

IP配置VIP
node1192.168.134.170LVS+Keepalived192.168.134.100
node3192.168.134.172LVS+Keepalived192.168.134.100
node2192.168.134.171做web服务器使用
node4192.168.134.173做web服务器使用

1、准备node1与node3环境(安装LVS与Keepalived)==>由于只是简单的模拟测试,故环境安装使用yum即可。(LVS使用DR模式)

yum install  ipvsadm

2、准备web服务器环境(两台)

yum install httpd -y

3、写测试实例(web服务器上)

 echo "web test page ,ip is `hostname -I`" > /var/www/html/index.html
systemctl restart httpd

4、写脚本准备web环境

cat /etc/init.d/lvs_rs#!/bin/sh
#
# Startup script handle the initialisation of LVS
# chkconfig: - 28 72
# description: Initialise the Linux Virtual Server for DR
#
### BEGIN INIT INFO
# Provides: ipvsadm
# Required-Start: $local_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Initialise the Linux Virtual Server
# Description: The Linux Virtual Server is a highly scalable and highly
# available server built on a cluster of real servers, with the load
# balancer running on Linux.
# description: start LVS of DR-RIP
LOCK=/var/lock/ipvsadm.lock
VIP=192.168.95.10
. /etc/rc.d/init.d/functions
start() {
PID=`ifconfig | grep lo:10 | wc -l`
if [ $PID -ne 0 ];
then
echo "The LVS-DR-RIP Server is already running !"
else
/sbin/ifconfig lo:10 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:10
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
/bin/touch $LOCK
echo "starting LVS-DR-RIP server is ok !"
fi
}
stop() {
/sbin/route del -host $VIP dev lo:10
/sbin/ifconfig lo:10 down >/dev/null
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
rm -rf $LOCK
echo "stopping LVS-DR-RIP server is ok !"
}
status() {
if [ -e $LOCK ];
then
echo "The LVS-DR-RIP Server is already running !"
else
echo "The LVS-DR-RIP Server is not running !"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $1 {start|stop|restart|status}"
exit 1
esac
exit 0chomd +x /etc/init.d/lvs_rs # 添加执行权限
/etc/init.d/lvs_rs start # 启动脚本
route -n # 查看路由

5、修改keeplaived服务器配置文件(实现健康检查和故障切换功能)

! Configuration File for keepalived  # 主配置文件global_defs {  # 全局配置notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL1
}vrrp_instance VI_1 {  # 实例一state MASTER  # 指定为主节点# nopreempt 非抢占模式interface ens33  # 指定VIP绑定网卡virtual_router_id 51  # 指定实例的idpriority 100  # 指定主节点的优先级,主节点要高于备节点advert_int 1  # 指定发送vrrp通告的间隔authentication {auth_type PASS  # 指定认证方式auth_pass 1111  # 指定使用密码}virtual_ipaddress {  # 指定vip(需要与真实ip在同一个网段)192.168.134.100}
}# 以下是做LVS配置
virtual_server 192.168.134.100 80 {  # 指定所绑定的VIP及端口delay_loop 6  # 健康检查的时间间隔lb_algo rr  # 指定LVS调度算法lb_kind DR  # 指定LVS模式,此处我们选取的是DR模式,还有NAT和TUN模式protocol TCP  # 指定四层协议为TCPreal_server 192.168.134.171 80 {  # 指定真实服务器地址weight 1  # 设定真实主机的权重TCP_CHECK {  # 选中健康检查方式为tcp-checkconnect_timeout 3  # 连接超时时间retry 3  # 重试次数delay_before_retry 3  # 在重试之前延迟多少秒connect_port 80  # 指定连接端口}}real_server 192.168.134.173 80 {  # 指定另一台真实服务器weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3connect_port 80}}
}备节点配置
修改以下三处即可router_id LVS_DEVEL2state BACKUP priority 80 

6、重启Keepalived

 systemctl restart keepalived.service # 先启动主,再启动备ip a|grep 192.168.134.100 # 此时只有主机有VIP,备机,没有

7、测试(找客户端写以下测试来访问,得到如下结果即正确)

for ((i=1;i<=6;i++)); do curl http://192.168.134.100; done结果:
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 

8、测试健康检查与故障转移

健康检查:
停掉一台web服务器
systemctl stop httpd此时客户端访问结果: 由于时间设置,需要一段时间后才可以出结果,虽然访问结果少了一台web服务器,但是可以被另一台顶上,同样不影响访问。
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 故障转移:
停掉一台keepalived服务器
systemctl stop keepalived此时VIP转移至另一台
[root@localhost keepalived]# ip a|grep 192.168.134.100inet 192.168.134.100/32 scope global ens33
客户端访问结果正常(1:1轮询)
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 
web test page ,ip is 192.168.134.173 192.168.122.1 
web test page ,ip is 192.168.134.171 192.168.122.1 在重新启动主keepalived后,vip又回到主机,访问仍旧正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37194.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念&#xff1a; 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、人工智能、移…

滚动条样式更改

::-webkit-scrollbar 滚动条整体部分&#xff0c;可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端的按钮 ::-webkit-scrollbar-track 外层轨道 ::-webkit-scrollbar-track-piece 内层滚动槽 ::-webkit-scrollbar-thumb 滚动的滑块 ::-webkit-scrollbar…

Android布局【RelativeLayout】

文章目录 介绍常见属性根据父容器定位根据兄弟组件定位 通用属性margin 设置组件与父容器的边距padding 设置组件内部元素的边距 项目结构主要代码 介绍 RelativeLayout是一个相对布局&#xff0c;如果不指定对齐位置&#xff0c;都是默认相对于父容器的左上角的开始布局 常见…

TypeScript教程(二)基础语法与基础类型

一、基础语法 TypeScript由以下几个部分组成 1.模块 2.函数 3.变量 4.语句和表达式 5.注释 示例&#xff1a; Runoob.ts 文件代码&#xff1a; const hello : string "Hello World!" console.log(hello) 以上代码首先通过 tsc 命令编译&#xff1a; tsc …

MQTT宝典

文章目录 1.介绍2.发布和订阅3.MQTT 数据包结构4.Demo5.EMQX 1.介绍 什么是MQTT协议 MQTT&#xff08;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的“轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协…

php、 go 语言怎么结合构建高性能高并发商城。

一、php、 go 语言怎么结合构建高性能高并发商城。 将PHP和Go语言结合起来构建高性能高并发的商城系统可以通过多种方法实现&#xff0c;以利用两种语言的优势。下面是一些可能的方法和策略&#xff1a; 1. **微服务架构&#xff1a;** 使用微服务架构&#xff0c;将系统拆分…

安卓快速开发

1.环境搭建 Android Studio下载网页&#xff1a;https://developer.android.google.cn/studio/index.html 第一次新建工程需要等待很长时间&#xff0c;新建一个Empty Views Activity 项目&#xff0c;右上角选择要运行的机器&#xff0c;运行就安装上去了(打开USB调试)。 2…

【Linux】UDP协议——传输层

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号 两个问题 netstat与iostat pidof UDP协议 UDP协议格式 UDP协议的特点 面向数据报 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 传输层 在学习HTTP等应用层协议时&#xff0c;为了便于理解&#xff…

【实操】2023年npm组件库的创建发布流程

2022年的实践为基础&#xff0c;2023年我再建一个组件库【ZUI】。步骤回顾&#xff1a; 2022年的npm组件包的发布删除教程_npm i ant-design/pro-components 怎么删除_啥咕啦呛的博客-CSDN博客 1.在gitee上创建一个项目,相信你是会的 2.创建初始化项目&#xff0c;看吧&#…

泛型类接口方法学习

一、泛型 1 概念 泛型(Generics)&#xff0c;广泛的类型。最大用途是给集合容器添加标签&#xff0c;让开发人员知道容器里面放到是什么类型&#xff0c;并且自动对放入集合的元素进行类型检查。 类比实参和形参&#xff0c;我们在对方法中的变量操作时&#xff0c;并没有指…

深入理解高并发编程 - 深度解析 ThreadPoolExecutor 类

ThreadPoolExecutor 是 Java 标准库中用于创建和管理线程池的核心类之一。它实现了 ExecutorService 接口&#xff0c;提供了丰富的线程池管理功能。下面将通过源码解析来深入了解 ThreadPoolExecutor 类的工作原理和各个重要部分。 可以在 Java 源代码中找到 ThreadPoolExecu…

【新品发布】ChatWork企业知识库系统源码

系统简介 基于前后端分离架构以及Vue3、uni-app、ThinkPHP6.x、PostgreSQL、pgvector技术栈开发&#xff0c;包含PC端、H5端。 ChatWork支持问答式和文档式知识库&#xff0c;能够导入txt、doc、docx、pdf、md等多种格式文档。 导入数据完成向量化训练后&#xff0c;用户提问…

两个pdf合并成一个pdf怎么合并?这几个方法值得推荐

两个pdf合并成一个pdf怎么合并&#xff1f;pdf文件的合并是一个很常见的需求&#xff0c;特别是在处理工作文件或学习资料时。为了更好的帮助你了解如何将两个pdf文件合并成一个&#xff0c;下面就给大家详细介绍几种合并方法。 方法一&#xff1a;使用迅捷PDF转换器 这是一款…

小红书如何打造爆款引流吸粉?11个秘诀助你秒变达人!

在这个充满信息和内容的时代&#xff0c;小红书以其独特的社交平台特性和个性化内容吸引了众多用户。今天&#xff0c;我们就来揭秘小红书关注战略&#xff0c;了解如何在这个平台上打造独特的内容体验&#xff0c;与用户建立更亲近的连接。#小红书# 1、定位清晰&#xff0c;找…

【论文阅读】基于深度学习的时序预测——Pyraformer

系列文章链接 论文一&#xff1a;2020 Informer&#xff1a;长时序数据预测 论文二&#xff1a;2021 Autoformer&#xff1a;长序列数据预测 论文三&#xff1a;2022 FEDformer&#xff1a;长序列数据预测 论文四&#xff1a;2022 Non-Stationary Transformers&#xff1a;非平…

Python技巧----解压序列/可迭代对象赋值给多个变量

1 、解压序列赋值给多个变量 我们这里说的不是正常情况的一一赋值比如下面 >>> data = [ ACME, 5, 9, (2012, 12, 1) ] >>> name, shares, price, date = data >>> name ACME

页面跳转和两个页面之间的数据传递-鸿蒙ArkTS

页面跳转和两个页面之间的数据传递-ArkTS 页面跳转和两个页面之间的数据传递-ArkTS关于router的使用**跳转页面的实现方式。**页面接受跳转传递的参数页面返回及携带参数效果代码Index页面Second页面 参考资料 页面跳转和两个页面之间的数据传递-ArkTS 本篇文章主要是对两个页面…

TiDB在科捷物流神州金库核心系统的应用与实践

业务背景 北京科捷物流有限公司于2003年在北京正式成立&#xff0c;是ISO质量管理体系认证企业、国家AAAAA级物流企业、海关AEO高级认证企业&#xff0c;注册资金1亿元&#xff0c;是中国领先的大数据科技公司——神州控股的全资子公司。科捷物流融合B2B和B2C的客户需求&#…

网易有道押宝大模型,打响智能硬件突围战

本文转载自产业科技 自今年开年以来&#xff0c;AI大模型这场火势能不减&#xff0c;如今已燃到教育领域。 7月26日&#xff0c;网易有道举办了“powered by子曰”教育大模型应用成果发布会&#xff0c;推出国内首个教育领域垂直大模型“子曰”&#xff0c;并一口气发布了基于…

conda - 调研介绍

介绍: conda 是一个工具, 也是一个可执行命令, 其核心功能是管理包与环境. conda 支持多种语言, 用来管理Python包是绰绰有余的. 这里注意区分conda和pip, pip命令可以在任何环境中安装Python包, 而conda则是在conda环境中安装任何语言包. 接触过的conda主要有miniconda与anac…