首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux学习第五十九篇:LVS DR模式搭建,keepalived lvs

linux学习第五十九篇:LVS DR模式搭建,keepalived lvs

作者头像
用户1215343
发布于 2018-02-05 11:24:44
发布于 2018-02-05 11:24:44
1.4K00
代码可运行
举报
文章被收录于专栏:linux运维学习linux运维学习
运行总次数:0
代码可运行

LVS DR模式搭建

准备工作

  • 三台机器 分发器,也叫调度器(简写为dir) 需要把之前rs机器的网关改回来 85.132 rs1 85.129 rs2 85.128 vip 85.200

DR模式搭建

  • dir上编写脚本 vim /usr/local/sbin/lvs_dr.sh 内容如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.85.200
rs1=192.168.85.129
rs2=192.168.85.128
#注意这里的网卡名字
ifdown ens37 #内网网卡
ifup ens37
ifconfig ens37:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens37:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
  • 两台rs上也编写脚本 vim /usr/local/sbin/lvs_rs.sh 内容如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#/bin/bash
vip=192.168.85.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
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/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

分别在dir上和两个rs上执行这些脚本

  • dir上的内网网卡ens37绑定了VIP192.168.85.200,rs两台上的lo绑定了VIP

通过浏览器访问VIP就可以跟NAT模式一样起到负载均衡的作用。

keepalived lvs

  • 完整架构需要两台服务器(角色为dir)分别安装keepalived软件,目的是实现高可用,但keepalived本身也有负载均衡的功能,所以本次实验可以只安装一台keepalived keepalived内置了ipvsadm的功能,所以不需要再安装ipvsadm包,也不用编写和执行那个lvs_dir的脚本 三台机器分别为: dir(安装keepalived)85.132 rs1 85.129 rs2 85.128 vip 85.200
  • 编辑keepalived配置文件 vim /etc/keepalived/keepalived.conf 内容
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vrrp_instance VI_1 {
    #备用服务器上为 BACKUP
    state MASTER
    #绑定vip的网卡为ens37
    interface ens37
    virtual_router_id 51
    #备用服务器上为90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux
    }
    virtual_ipaddress { #VIP的地址
        192.168.85.200
    }
}
virtual_server 192.168.85.200 80 { #VIP的地址
    #(每隔10秒查询realserver状态)
    delay_loop 10  
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的连接60秒内被分配到同一台realserver)
    persistence_timeout 60
    #(TCP协议检查realserver状态)
    protocol TCP
    real_server 192.168.85.129 80 { #rs的IP
        #(权重)
        weight 100
        TCP_CHECK {
        #(10秒无响应超时)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.85.128 80 { #rs的IP
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}
  • 执行ipvsadm -C 把之前的ipvsadm规则清空掉
  • systemctl restart network 可以把之前的vip清空掉
  • 两台rs上,依然要执行/usr/local/sbin/lvs_rs.sh脚本
  • 而dir上不需要执行脚本,但是需要执行转发路由的命令: echo 1 > /proc/sys/net/ipv4/ip_forward
  • keepalived有一个比较好的功能,可以在一台rs宕机时,不再把请求转发过去 测试 dir上启动keepalived,systemctl start keepalived ipvsadm -ln 查看连接了哪些rs,如果有哪一台的Nginx关闭了,就会被剔除出去

扩展 haproxy+keepalived http://blog.csdn.net/xrt95050/article/details/40926255 nginx、lvs、haproxy比较 http://www.csdn.net/article/2014-07-24/2820837 keepalived中自定义脚本 vrrp_script http://my.oschina.net/hncscwc/blog/158746 lvs dr模式只使用一个公网ip的实现方法 http://storysky.blog.51cto.com/628458/338726

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年01月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
HTTP性能优化实战
以下是一份超详细的 Git安装避坑指南,涵盖全平台(Windows/macOS/Linux)的核心配置、常见问题及底层原理,助你彻底避开安装陷阱:
西里网
2025/07/21
380
git 换行符LF与CRLF转换问题
在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地文件的兼容性(Windows 风格)。但遗憾的是,这个功能是有 bug 的,而且在短期内都不太可能会修正。
solve
2019/10/30
2.3K0
理解 CRLF,LF
CRLF, LF 是用来表示文本换行的方式。CR(Carriage Return) 代表回车,对应字符 '\r';LF(Line Feed) 代表换行,对应字符 '\n'。由于历史原因,不同的操作系统文本使用的换行符各不相同。主流的操作系统一般使用CRLF或者LF作为其文本的换行符。其中,Windows 系统使用的是 CRLF, Unix系统(包括Linux, MacOS近些年的版本) 使用的是LF。
yuxiaofei93
2018/09/11
2.7K0
Git 行结束符:LF will be replaced by CRLF the next time Git touches it问题解决指南
大家好,我是猫头虎博主,今天我们来深入探讨一个在开发者社区里广为讨论的问题:Git 行结束符警告的解决方法。在多操作系统环境下协作时,这个问题像是一只难以捕捉的"代码小偷",它可能悄无声息地引入差异,导致版本控制中出现意料之外的冲突。如果你在寻找如何优雅地处理LF will be replaced by CRLF这类警告的方法,恭喜你,找到了正确的地方。让我们一起探索如何使用Git配置来统一我们的代码行结束符,保持代码库的整洁和一致性。
猫头虎
2024/04/09
2.8K0
Git 行结束符:LF will be replaced by CRLF the next time Git touches it问题解决指南
Git的程序版本本地仓库使用
有关git的操作可以参考以下网站:Git - Reference (git-scm.com)
用户9736681
2023/02/20
5910
Git的程序版本本地仓库使用
Git命令小记
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
WindCoder
2018/09/19
3390
git的一些问题
warning: LF will be replaced by CRLF in .gitignore. The file will have its original line endings in your working directory
用户10325771
2023/03/17
5340
Centos7 安装部署Git、创建仓库
Git版本控制,大家都不会陌生,实践诉求是从零部署本地Git服务,在执行推送远程分支代码时,用Git服务自带的hooks触发同步代码文件,从而做到自动同步代码,实现自动更新,操作环境centos7.9,Git版本1.8.3 进行的实践。
stark张宇
2025/06/22
930
Centos7 安装部署Git、创建仓库
Git问题:git add . 时出现warning: LF will be replaced by CRLF in ...... 解决办法
在做项目迁移的需求,从git上下载了项目,当使用git add .命令提交时,出现了这个错
鲲志说
2025/04/07
2530
Git问题:git add . 时出现warning: LF will be replaced by CRLF in ...... 解决办法
LF和CRLF换行符不一致导致的Git显示修改问题分析及解决
使用 Git 进行版本管理时,可能会遇到换行符不一致的问题。这个问题是由于不同的操作系统使用不同的换行符导致的。例如,Windows 系统使用 CRLF(回车换行)作为换行符,而 Linux 和 MacOS 系统使用 LF(换行)作为换行符。
德顺
2023/08/25
9.8K0
[git] warning: LF will be replaced by CRLF | fatal: CRLF would be replaced by LF
Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:
smy
2019/07/12
1.7K0
git文件无修改diff无变更居然有许多文件需要提交—被修改
其实有很多种请客。git status可能有一些不同的原因,但git diff可能没有。
周陆军博客
2023/06/06
5.1K0
PhpStorm Git Add提示LF would be replaced by CRLF的解决方法
不同操作系统使用的换行符是不一样的。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。
德顺
2019/11/13
2.6K0
PhpStorm Git Add提示LF would be replaced by CRLF的解决方法
warning: LF will be replaced by CRLF in XXXXXX
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
6990
git crlf、lf自动转换引起的问题
  项目组最近加了一个新功能到代码中,使用flyway记录数据库版本变更,,,该工具会记录每次数据库结构的修改并生成sql文件存在指定目录上(当然必须用它来变更数据库,外部的变更它是无法感知的),然后每次启动时flyway会检查使用的数据库和当前项目代码中的sql变更版本是否一致,一致正常启动,不一致中如果是数据库落后将会更新数据库(这样能够保证代码在任何地方运行数据库都是一致的),否则就报错了。数据库中有一张表记录版本信息,如下图:
用户2038589
2018/09/06
2.8K0
git crlf、lf自动转换引起的问题
git下载代码后自动加入windows回车导致失败问题解决
Git设置 git config --global core.autocrlf false git config --global core.safecrlf true 含义: AutoCRLF #提交时转换为LF,检出时转换为CRLF git config --global core.autocrlf true #提交时转换为LF,检出时不转换 git config --global core.autocrlf input #提交检出均不转换 git config --global core.auto
战神伽罗
2022/05/11
5570
GitHub的使用
git add -A表示添加所有内容, git add . 表示添加新文件和编辑过的文件不包括删除的文件; git add -u 表示添加编辑或者删除的文件,不包括新添加的文件
代码的路
2022/06/18
3860
GitHub的使用
刚从GitHub克隆下来的项目,微信开发者工具就提示有文件修改的解决方法
不同操作系统使用的换行符是不一样的。Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。
德顺
2019/11/13
1.8K0
刚从GitHub克隆下来的项目,微信开发者工具就提示有文件修改的解决方法
git 常见错误
1. fatal: not a git repository ( or any of the parent directories)
xyzzz
2020/12/12
1.6K0
Git问题汇总
Git在push时需要使用到user.name和user.email,一般通过命令来进行配置或修改。
雨临Lewis
2022/01/12
8590
相关推荐
HTTP性能优化实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验