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

LVS+keepalived整合负载均衡配置

准备三台服务器;负载均衡服务器192.168.45.136,后端机器1,92.168.45.135,后端机器2,192.168.45.138

在两台后端机器上安装nginx服务,yum install -y nginx,并且启动nginx服务,systemctl start nginx,并且在两台后端机器上配置回环地址192.168.45.188

ifconfig lo:0 192.168.45.188 netmask 255.255.255.255

配置完成后通过本机访问192.168.45.188即可访问到两台后端机器的nginx

通过命令:arp -a显示ping通的物理地址138

我们需要抑制回环地址的直接响应,防止用户直接访问两台后端机器

首先在136负载均衡机器上配置物理网卡

ifconfig ens33:1 192.168.45.188 netmask 255.255.255.255

 前台访问vip地址188时,三台服务其都可响应,我们要抑制后端两台机器的vip访问

通过命令echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore抑制两台后端机器的arp广播

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

抑制后通过主机访问188ip,只有LVS均衡服务器上的物理网卡响应

 此时再访问188服务器,显示失败

在负载均衡机器上配置LVS均衡池,与net模式不同,需要将-m改为-g

添加物理网卡:ifconfig ens33:1 192.168.45.188 netmask 255.255.255.255

LVSarrp配置:ipvsadm -A -t 192.168.45.188:80 -s wrr

ipvsadm -a -t 192.168.45.188:80 -r 192.168.45.138 -g -w 100

ipvsadm -a -t 192.168.45.188:80 -r 192.168.45.135 -g -w 100

此时再访问188即为LVS均衡服务器转发给后端请求,返回访问信息

当任意一台nginx宕机时,用户仍可访问网页,只有当两台都宕机时才访问失败

访问后显示连接次数

 当想要删除配置的LVS时,删除wrr188命令为

ipvsadm -D -t 192.168.45.188:80

当想删除后端机器时:ipvsadm -d -t 192.168.45.188:80 -r 192.168.45.135

ipvsadm -d -t 192.168.45.188:80 -r 192.168.45.138

[root@localhost ~]# ipvsadm -d -t 192.168.45.188:80 -r 192.168.45.135
[root@localhost ~]# ipvsadm -d -t 192.168.45.188:80 -r 192.168.45.138
[root@localhost ~]# ipvsadm -D -t 192.168.45.188:80
[root@localhost ~]# ipvsadm -L -n

卸载配置的ens33:1网卡

 LVS+NGINX无缝整合,自动配置LVS,在136机器上安装keepalived服务,配置文件如下

cd /etc/keepalived

! Configuration File for keepalived
#全局配置,配置指定通知邮件发送邮箱
global_defs {notification_email {
#指定发送的邮箱support@xin.linux}
#指定由哪个服务器地址发送邮件notification_email_from wgkgood@163.com
#连接的服务器地址smtp_server 127.0.0.1
#连接超时时间 smtp_connect_timeout 30
#连接服务名称写成自己的Ip地址也可router_id LVS_DEVEL
}# VI_1实例名称,也可改成其他 vrrp_instance VI_1 {
#状态master或backupstate MASTER
#路由器对外通信名称,可命名为网卡名称 interface ens33
#虚拟路由ID,要与备机相同 virtual_router_id 51
#优先级priority 100
#设置不抢占关键字nopreempt
#成为master的服务器每隔5秒发送包 advert_int 5authentication {
#彼此认证密码,与备机保持相同 auth_type  PASSauth_pass  1111}
#vip配置virtual_ipaddress {192.168.45.188}}
#LVS配置
virtual_server 192.168.45.188 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 60protocol TCPreal_server 192.168.45.138 80{weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.45.135 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}
}

重启keepalived服务后,即可自动配置LVS

 前台即可成功访问nginx

 同样当后端服务器宕机时,LVS服务器自动检测端口失活,删除LVS配置,查看keepalived日志文件:tail -fn200 /var/log/messages

keepalived显示3个进程,1个主进程,一个VRRP进程,一个自动检测进程

 

相关文章:

  • 物理学基础精解【41】
  • MySql中索引失效的情况及原因
  • CSS开发全攻略
  • ubuntu2204操作系统使用可执行文件方式安装docker-compose记录
  • Qt网络编程——QUdpSocket
  • [大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成
  • [C++][程序退出]详细讲解
  • C++【类和对象】(取地址运算符重载与实现Date类)
  • Jenkins提示Host key verification failed的解决办法
  • RabbitMQ 消息队列:生产者与消费者实现详解
  • how to remove the text shadow under app icon on Windows
  • Java 编码系列:反射详解与面试题解析
  • 更新系统提示“系统备份失败”
  • 工厂模式与建造者模式的区别
  • 【js】Node.js的fs的使用方法
  • 【剑指offer】让抽象问题具体化
  • Angularjs之国际化
  • C++入门教程(10):for 语句
  • codis proxy处理流程
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript新鲜事·第5期
  • Linux下的乱码问题
  • Python_网络编程
  • Webpack入门之遇到的那些坑,系列示例Demo
  • XForms - 更强大的Form
  • 测试如何在敏捷团队中工作?
  • 模仿 Go Sort 排序接口实现的自定义排序
  • -- 数据结构 顺序表 --Java
  • 新书推荐|Windows黑客编程技术详解
  • 正则学习笔记
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 【云吞铺子】性能抖动剖析(二)
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #、%和$符号在OGNL表达式中经常出现
  • #define
  • #预处理和函数的对比以及条件编译
  • #知识分享#笔记#学习方法
  • (C#)一个最简单的链表类
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)Google的Objective-C编码规范
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net CHARTING图表控件下载地址
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net Core中Quartz的使用方法
  • .NET 快速重构概要1
  • .NET8使用VS2022打包Docker镜像
  • @Async 异步注解使用
  • @Autowired自动装配
  • @Responsebody与@RequestBody