实战--使用lvs实现四层负载均衡,转发到后端nginx
这个帖子讲得很细致,基本依照这个方案实践。
只是IP是按我自己虚拟机的IP来测试的。
http://www.cnblogs.com/arjenlee/p/9262737.html
======================================
搭建环境:
vip:192.168.1.100
lvs-director:192.168.1.111
nginx1:192.168.1.112
nginx2:192.168.1.113
-------------------------------------------------------------------
已下操作,在LVS服务器上操作
-------------------------------------------------------------------
一,先在LVS服务器上确认也安装好LVS。
这里要注意的是modbprobe -l这个命令已不灵了。
使用如下替代 。
find /lib/modules/$(uname -r)/ -iname "**.ko*" | cut -d/ -f5-|grep ip_vs
有输出Ip_vs说明内核已加载模块。如果没有加载,按其它教程加载哈。
二,安装ipvsadm工具,很简单
yum install ipvs
三,在网卡上绑定VIP(虚拟IP, 注意在centos 7上,我这里的网卡不是eth0,而是enp0s3)
ifconfig enp0s3:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
四,增加一条路由规则。
route add -host 192.168.1.100 dev enp0s3:0
五,启用系统的包转发功能。
echo "1" >/proc/sys/net/ipv4/ip_forward
六,先清空系统之前的所有ipvsadm规则
ipvsadm -C ipvsadm --clear
七,增加虚拟IP规则(-s rr表示轮询规则)
ipvsadm -A -t 192.168.1.100:80 -s rr
八,在虚拟IP中增加服务规则(-g表示工作模式为直接路由)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.112:80 -g ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.113:80 -g
lvs进行负载转发需要保证lvs负载的端口要和nginx服务的端口的一致,这里都为80。
九,使用ifconfig, ipvsadm -ln,route命令,查看的输出如下,表示设置完成。
enp0s3:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.100 netmask 255.255.255.255 broadcast 192.168.1.100 ether 08:00:27:47:b2:29 txqueuelen 1000 (Ethernet)
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.100:80 rr -> 192.168.1.112:80 Route 1 0 0 -> 192.168.1.113:80 Route 1 0 0
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s3 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.1.100 0.0.0.0 255.255.255.255 UH 0 0 0 enp0s3
-------------------------------------------------------------------
已下操作,在各个NGINX服务器上操作
-------------------------------------------------------------------
在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。
一,安装nginx。
二,设置nginx.conf的keepalive_timeout 0。
三,在lo端口绑定VIP。
ifconfig lo:0 192.168.1.100 broadcast 192.168.1.100 netmask 255.255.255.255 up
四,增加一条路由。
route add -host 192.168.1.100 dev lo:0
五,关闭ARP。
arp_announce :定义不同级别:当ARP请求通过某个端口进来是否利用这个接口来回应。
0 -利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;
1 - 避免使用另外一个接口上的mac地址去响应ARP请求;
2 - 尽可能使用能够匹配到ARP请求的最佳地址。
arp_ignore:当ARP请求发过来后发现自己正是请求的地址是否响应;
0 - 利用本地的任何地址,不管配置在哪个接口上去响应ARP请求;
1 - 哪个接口上接受ARP请求,就从哪个端口上回应。
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 sysctl -p
六,使用ifconfig, route -n命令,查看的输出如下,表示设置完成。
lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 192.168.1.100 netmask 255.255.255.255 loop txqueuelen 1 (Local Loopback)
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp0s3 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.1.100 0.0.0.0 255.255.255.255 UH 0 0 0 lo
=======================================
以下为访问Http://192.168.1.100的输出
=======================================
实战--使用lvs实现四层负载均衡,转发到后端nginx的更多相关文章
- LVS实现四层负载均衡
LVS详解(思维导图) 1. 集群概述 1.1 Linux Cluster Linux Cluster的类型 LB(Load Balance) HA(High Available) HP(High P ...
- Nginx负载均衡反向代理 后端Nginx获取客户端真实IP
Nginx 反向代理后,后端Nginx服务器无法正常获取客户端的真实IP nginx通过http_realip_module模块来实现的这需要重新编译,如果提前编译好了就无需重新编译了1,重新编译ng ...
- LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)
参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...
- 借助LVS+Keepalived实现负载均衡(转)
原文:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...
- 借助 LVS + Keepalived 实现负载均衡
虽然现在云手段很高明了.但是这个lvs + keepalive 还是需要了解下的. 今天就整理了下lvs和keepalive的东西.做下总结留作以后怀念 在实际应用中,在Web服务器集群之前总会有一台 ...
- 借助LVS+Keepalived实现负载均衡
原文地址:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了 ...
- 借助LVS+Keepalived实现负载均衡(转)
出处:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...
- 【转】借助LVS+Keepalived实现负载均衡
一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...
随机推荐
- 关于Mac或Linux下GO的Permission denied提示错误
有时候当你下载第三方库的时候,编译时会提示Permission denied 权限不足, 出现这种错误因为权限不够.其中一种办法是需要把你项目目录和go的pck.bin权限放开. chmod -R 7 ...
- Java 类加载机制(阿里面试题)-何时初始化类
(1)阿里的面试官问我,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的字节码进 ...
- Simple scatter method in 2d picture(Qt)
Result: grayMap: MathTools: // // Created by Administrator on 2017/8/17. // #ifndef QTSCATTER_MATHTO ...
- for循环查找元素怎么跳出for循环
应用场景: 当我们通过for循环来循环对象或者数组时,当找到符合条件的数据时,想要跳出这个循环,不在执行循环继续往后面查找. 解决方法: for循环里面使用return没有效果,于是,我们回到最初控制 ...
- hibernate框架学习之数据模型-POJO
Hibernate数据模型用于封装数据,开发时候需要遵从如下规范:1)提供公共无参的构造方法(可使用自动生成的)如果使用投影技术,一定要显式声明公共无参的构造方法2)提供一个标识属性,作为对象的主键, ...
- mybatis打印SQL日志
在配置的log4j输出时,不能打印SQL信息,在mybatis-config.xml中添加如下配置即可 <settings> <setting name="logImpl& ...
- Go Rand小结
对于Random的使用,在业务中使用频率是非常高的,本文就小结下常用的方法: 在Golang中,有两个包提供了rand,分别为 "math/rand" 和 "crypto ...
- 安娜Anna:世界最快的超级伸缩的KVS, 秒杀Redis
伯克利 这个大学在计算机学术界.工业界的地位举足轻重,其中的AMP实验室曾开发出了一大批大获成功. 对计算机行业产生深远影响的分布式计算技术,包括 Spark.Mesos.Tachyon 等.作为AM ...
- 一篇文章教你读懂UI绘制流程
最近有好多人问我Android没信心去深造了,找不到好的工作,其实我以一个他们进行回复,发现他们主要是内心比较浮躁,要知道技术行业永远缺少的是高手.建议先阅读浅谈Android发展趋势分析,在工作中, ...
- tensorflow中文教程
飞机票--->走你~~~ 飞机票 http://blog.csdn.net/lenbow/article/details/52152766