Ubuntu LVS DR模式生产环境部署
1、环境说明
系统版本:ubuntu14.04
LVS服务器:14.17.64.3
真实服务器:14.17.64.4-12
VIP:14.17.64.13
部署目的:用户请求14.17.64.13的报文转发至14.17.64.4-12上进行负载均衡。
2、安装LVS
由于LVS像iptables一样是工作在内核层,所以只需要安装模块ip_vs就可以了,并没有后台进程在跑
#aptitude install ipvsadm
# ipvsadm -v
ipvsadm v1.26
# lsmod |grep ip_vs #查看内核模块,有代表ipvsadm加载进内核当中,此时LVS安装完毕
ip_vs 136701 0
nf_conntrack 96976 1 ip_vs
libcrc32c 12644 3 xfs,btrfs,ip_vs
# ipvsadm -L -n #查看lvs规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
root@ubun
# ipvsadm -L -c #查看连接情况
3、配置LVS VIP服务
-A是添加一条虚拟服务器记录,即VIP。此处配置要选择算法。
#ipvsadm -A-t 14.17.64.13 -s wrr -p 300 #代理转发所有去往该IP TCP的报文,-s指定算法wrr为加权轮询算法,-p会话保持时间(默认值是300s)
#ipvsadm -A-t 14.17.64.13:80 -s wrr -p 20 #代理转发去往该IP TCP80端口的报文
VIP维护:
使用-E修改VIP设置
例:ipvsadm -E -t 14.17.64.13 -s wrr -p 40 #可修改会话保持时间与算法。
使用-D删除VIP设置
例:ipvsadm -D -t 14.17.64.13 #删除该条VIP
4、配置LVS RIP规则
-a是添加VIP要对哪些真实服务器IP(即RIP)进行负载(默认是DR模式即-g)。
ipvsadm -a -t 14.17.64.13 -r 14.17.64.4 -g -w 1 #-r指定真实服务器IP,-g为选择DR模式(-m为NAT模式,-t为tunnel模式),-w选择权重。
ipvsadm -a -t 14.17.64.13 -r 14.17.64.5 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.6 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.7 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.8 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.9 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.10 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.11 -g -w 1
ipvsadm -a -t 14.17.64.13 -r 14.17.64.12 -g -w 1
#如果只对tcp 80端口进行负载,可使用如下命令
#ipvsadm -a-t14.17.64.13:80 -r 14.17.64.4:80 -g -w 1
RIP维护:
使用-e修改RIP配置
例:ipvsadm -e -t14.17.64.13 -r 14.17.64.6 -g -w 4 #修改这条RIP规则的权重。
使用-d删除RIP配置
例:ipvsadm -d -t14.17.64.13 -r 14.17.64.6 -g -w 1 #删除该条RIP配置
5、在真实服务器上配置VIP
在真实服务器上都配置上VIP,即14.17.64.13地址。
#ifconfig lo:1314.17.64.13 netmask 255.255.255.255
6、在真实服务器上关闭ARP响应
关闭真实服务器上loop口的arp回应,其它口的无须关闭。
默认arp_ignore和arp_announce的参数都是0,即回应所有目的IP是本机的arp请求。
在所有真实服务器上进行如下操作:
echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore #只回答目标IP地址是来访网络接口本地地址的ARP查询请求。
echo "2">/proc/sys/net/ipv4/conf/all/arp_announce #对查询目标使用最适当的本地地址。
#此处可以进行测试,在测抑制arp前,能ping通VIP地址。在抑制arp后,在前端交换机上清掉arp缓存,再ping VIP就不通了。但物理eth0网卡IP还是能通的。
arp含义参考地址:http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
接下来在lvs上配置VIP:
ifconfig lo:13 14.17.64.13 netmask255.255.255.255
7、开启内核转发功能
在lvs上开启内核转发功能。
#echo 'net.ipv4.ip_forward=1' >>/etc/sysctl.conf
#sysctl -p
8、LVS测试
由于真实服务器上未搭建http服务,但我设置的lvs是转发所有tcp连接,所以我通过ssh到VIP上进行测试。
#iptables -L -c #查看lvs转发记录,确定请求转发成功。
TCP 14:59 ESTABLISHED 242.103.143.219.broad.bj.bj.dynamic.163data.com.cn:5197714.17.64.13:22 14.17.64.10:22
至此lvs搭建成功。
9、lvs补充思考
1、 自身无法对真实服务器保活,如果出现服务器down情况,还会向down的服务器转发请求。
解决方法是keepalived或自已写脚本来监测连通性再清除相应规则。
2、一台LVS服务器会出现单点故障,需要有备份LVS服务器
解决方法是keepalived来进行LVS故障接管。
Ubuntu LVS DR模式生产环境部署的更多相关文章
- 一个公网地址部署LVS/DR模式
http://blog.chinaunix.net/uid-7411781-id-3436142.html 一个公网地址部署LVS/DR模式 网上看了很多关于LVS的文章,在选取2种模式LVS/D ...
- LVS+Keepalived 高可用环境部署记录(主主和主从模式)
之前的文章介绍了LVS负载均衡-基础知识梳理, 下面记录下LVS+Keepalived高可用环境部署梳理(主主和主从模式)的操作流程: 一.LVS+Keepalived主从热备的高可用环境部署 1)环 ...
- ubuntu Django + Uwsgi + Nginx 的生产环境部署
一.概述 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇 ...
- 第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置
第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置 1.Linux安装配置 注意事项: 虚拟机网卡桥接模式 不要拨VPN 如果,网络怎么都 ...
- 深度学习Tensorflow生产环境部署(上·环境准备篇)
最近在研究Tensorflow Serving生产环境部署,尤其是在做服务器GPU环境部署时,遇到了不少坑.特意总结一下,当做前车之鉴. 1 系统背景 系统是ubuntu16.04 ubuntu@ub ...
- Vue生产环境部署
前面的话 开发时,Vue 会提供很多警告来帮助解决常见的错误与陷阱.生产时,这些警告语句却没有用,反而会增加载荷量.再次,有些警告检查有小的运行时开销,生产环境模式下是可以避免的.本文将详细介绍Vue ...
- 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置
第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本 uwsgi- ...
- HyperLedger Fabric 1.4 kafka生产环境部署(11.1)
11.1 Kafka模式简介 上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式 ...
- lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)
前提:已经安装好 lvs+nginx+tomcat_1.tomcat_2+redis环境 ,可参考 (略有改动,比如tomcat_1.tomcat_2安装在两台机器上,而不是单机多实例 ,自行稍稍变动 ...
随机推荐
- codeforces#572Div2 E---Count Pairs【数学】【同余】
题目:http://codeforces.com/contest/1189/problem/E 题意:给定$n$个互不相同数,一个$k$和一个质数$p$.问这$n$个数中有多少对数$(a_i+a_j) ...
- MySQL数据库中常用的引擎有几种?有什么区别?
1.常用的3种 2.InnoDB Myisam Memory 3.InnoDB跟Myisam的默认索引是B+tree,Memory的默认索引是hash 区别: 1.InnoDB支持事务,支持外键,支 ...
- vue生命周期在工作中的用法
1.首先来官方服生命=周期的解释: beforeCreate():实例在内存中被创建出来,还没有初始化好data和methods属性. create():实例已经在内存中创建,已经初始化好data和m ...
- 肤浅的聊聊关联子查询,数据集连接,TiDB代码,关系代数,等等
本章涉及的内容是TiDB的计算层代码,就是我们编译完 TiDB 后在bin目录下生成的 tidb-server 的可执行文件,它是用 go 实现的,里面对 TiPD 和 TiKV实现了Mock,可以单 ...
- mongod 命令常用参数 mongod常用命令参数大全
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作.输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令 mongod.exe ...
- PostgreSQL 用户、角色、权限管理
PostgreSQL是一个多用户数据库,可以为不同用户指定允许的权限. 角色 PostgreSQL使用角色的概念管理数据库访问权限. 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组 ...
- 【LOJ #3144】「APIO 2019」奇怪装置
题意: 定义将一个\(t\)如下转换成一个二元组: \[ f(t) = \begin{cases} x = (t + \left\lfloor \frac{t}{B} \right \rfloor) ...
- 2019ICPC南京自我反省
第一场ICPC,跟第一场CCPC一样,可惜真的可惜. 打完比赛就感觉难受,难受不在于又抱了块铜牌,而是那种能出的题没出的可惜感非常浓重. 开场还是可以的,通过一阵讨论,就大胆猜测了A的规律,然后一发过 ...
- P2701 [USACO5.3]巨大的牛棚Big Barn
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 爬虫(二):Urllib库详解
什么是Urllib: python内置的HTTP请求库 urllib.request : 请求模块 urllib.error : 异常处理模块 urllib.parse: url解析模块 urllib ...