实战--使用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应用服务 ...
随机推荐
- 【转】Python之mmap内存映射模块(大文本处理)说明
[转]Python之mmap内存映射模块(大文本处理)说明 背景: 通常在UNIX下面处理文本文件的方法是sed.awk等shell命令,对于处理大文件受CPU,IO等因素影响,对服务器也有一定的压力 ...
- Hash算法【转】
转自:http://www.cnblogs.com/wangjy/archive/2011/09/08/2171638.html Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度 ...
- python性能分析之cProfile模块
cProfile是标准库内建的分析工具的其中一个,另外两个是hotshot和profile -s cumulative -s cumulative开关告诉cProfile对每个函数累计花费的时间进行排 ...
- Windows PowerShell 入門(10)-デバッグ編
対象読者 Windows PowerShellでコマンドレット操作ができる方 何らかのプログラミング経験があればなお良い 必要環境 Windows PowerShell デバッグメッセージの出力 Po ...
- 纪念一下我对Kalman的无限崇拜之情
今天用Kalman来求线性预测模型的系数,和LMS一对比,天啦噜,我感叹了半小时... 和LMS需要选合适的步长,样本序列需要足够长,迭代次数需要足够多,相比,卡尔曼真是帅呆了!不需要步长!不需要蒙特 ...
- leetcode327 Count of Range Sum
问题描述: 给定一个整数数组nums,返回其所有落在[low, upper]范围内(包含边界)的区间和的数目. 区间和sums(i, j)的定义为所有下标为i到j之间(i ≤ j)的元素的和,包含边界 ...
- C#基础巩固之基础类型
注:以下笔记全摘录自CLR via C# 3 1.所有类型都从System.Object派生:”运行时“要求每个类型最终都从System.Object派生. 2.System.Object提供了四个公 ...
- Threading.local
在多线程环境下,每个线程都有自己的数据.一个线程使用自己的局部变量比使用全局变量好,因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁. Threading.local可以创建 ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- python初始化环境记录
初始化python环境:yum install -y gcc libffi-devel python-devel openssl-devel gcc-c++yum install -y python- ...