这个帖子讲得很细致,基本依照这个方案实践。

只是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的更多相关文章

  1. LVS实现四层负载均衡

    LVS详解(思维导图) 1. 集群概述 1.1 Linux Cluster Linux Cluster的类型 LB(Load Balance) HA(High Available) HP(High P ...

  2. Nginx负载均衡反向代理 后端Nginx获取客户端真实IP

    Nginx 反向代理后,后端Nginx服务器无法正常获取客户端的真实IP nginx通过http_realip_module模块来实现的这需要重新编译,如果提前编译好了就无需重新编译了1,重新编译ng ...

  3. LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)

    参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...

  4. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  5. 借助LVS+Keepalived实现负载均衡(转)

    原文:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...

  6. 借助 LVS + Keepalived 实现负载均衡

    虽然现在云手段很高明了.但是这个lvs + keepalive 还是需要了解下的. 今天就整理了下lvs和keepalive的东西.做下总结留作以后怀念 在实际应用中,在Web服务器集群之前总会有一台 ...

  7. 借助LVS+Keepalived实现负载均衡

    原文地址:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了 ...

  8. 借助LVS+Keepalived实现负载均衡(转)

    出处:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...

  9. 【转】借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

随机推荐

  1. Golang记录、计算函数执行耗时、运行时间的一个简单方法

    // 写超时警告日志 通用方法   func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) {    ...

  2. dubbo源码分析1——SPI机制的概要介绍

    插件机制是Dubbo用于可插拔地扩展底层的一些实现而定制的一套机制,比如dubbo底层的RPC协议.注册中心的注册方式等等.具体的实现方式是参照了JDK的SPI思想,由于JDK的SPI的机制比较简单, ...

  3. shell 在手分析服务器日志【转】

    自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! awk '{print $1 ...

  4. C++学习day1

    1. 有符号整数 对于有符号整数,最高位为0表示正数,为1表示负数 负数的绝对值为除最高位外,其余取反再加1 int 字节数:4,取值范围:-232~232-1 最大值为232-1 最小值即为 000 ...

  5. HTTP协议04-返回状态码

    状态码职责是在客户端向服务器端发送请求时候,描述返回的请求结果.借助状态码,用户可以知道服务器是否正常处理了请求,还是出错了. 状态码的类别   类别 原因短语 1XX Informational(信 ...

  6. 检索每个字符串的子串(python散列表实现)

    import re def get_str(i,num): str_list = re.findall(r'.{{{str_length}}}'.format(str_length=i), num) ...

  7. <杂记>Android Studio 3.0-3.1 汉化包 (转载)

    JetBrains 系列软件汉化包 关键字: Android Studio 3.0-3.1 汉化包 CLion 2018.1 汉化包 GoLand 2017.3.2-2018.1 汉化包 Intell ...

  8. JSON.stringify与JSON.parse

      JSON.stringify(value [, replacer] [, space]) 用于将 对象 --> JSON 字符串. value:对象.数组.类 replacer: 数组时:v ...

  9. 通过URL传递中文参数的乱码处理

    环境:web.xml中配置了 <filter> <filter-name>encodingFilter</filter-name> <filter-class ...

  10. centos7.4_x86_64安装grafana5.2.1并安装常用zabbix插件

    获取并安装grafana5.2.1# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.1-1. ...