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

只是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. How to Train Triplet Networks with 100K Identities?

    1. 为什么介绍此文? Triplet net 改进工作之一,主要思想是在大数据集(人脸识别)上的困难样本挖掘.人脸识别工作对于图像对匹配而言很有借鉴意义,共性是特征的提取和样本数据的挖掘. Trip ...

  2. eMMC基础技术9:分区管理

    [转]http://www.wowotech.net/basic_tech/emmc_partitions.html 0.前言 eMMC 标准中,将内部的 Flash Memory 划分为 4 类区域 ...

  3. awk入门【转】

    awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. 一.基本用法 awk的基本用法就是下面的形式. # 格式 $ awk 动作 文件名 # 示 ...

  4. python3之模块SMTP协议客户端与email邮件MIME对象

    转载自https://www.cnblogs.com/zhangxinqi/p/9113859.html 阅读目录 1.smtplib模块的常用类与方法 2.处理邮件MIME 3.实例 (1)使用HT ...

  5. 题解-USACO18DEC Balance Beam详细证明

    (翻了翻其他的题解,觉得它们没讲清楚这个策略的正确性) Problem 洛谷5155 题意概要:给定一个长为\(n\)的序列,可以选择以\(\frac 12\)的概率进行左右移动,也可以结束并得到当前 ...

  6. 【转】gcc命令中参数c和o混合使用的详解

    gcc -c a.c  编译成目标文件a.o  gcc a.c  生成执行文件a.exe  gcc -o a -c a.c    编译成目标文件a  gcc -o a  a.c    生成执行文件a. ...

  7. 用puttygen工具把私钥id_rsa转换成公钥id_rsa.ppk

    1 前言 有时候需要ppk格式的公钥,可以用putty来处理 2 步骤 1. 产生密钥 可以参考Gitlab的SSH配置(linux和windows双版本) $ ssh-keygen -t rsa - ...

  8. 使用Gitblit 在Windows上部署Git Server

    Windows平台下Git服务器搭建 首先要下载Java JDK,安装完成后设置环境变量,先把java环境配好,接下来才是下面的gitblit.关于java环境配置请看上一篇文章 gitblit下载 ...

  9. Jquery分享插件

    效果图如下: 代码如下: <!DOCTYPE HTML> <html style="padding-bottom: 54px;"> <head> ...

  10. npm cnpm +nodejs

    nodejs win+r  打开cmd.命令:1.node -v   (查看版本信息)2.npm -v  (查看版本信息)3.npm install -g cnpm –registry=https:/ ...