LVS、nginx反向代理

1、LVS实现nat,dr

  • LVS简介
    LVS是Linux Virtual Server的简称,其主要包含VS:Virtual server 和RS:Real server,VS根据请求报文中的目标IP和目标协议及端口通过其调度算法转发至后端的RS,实现四层路由器,四层交换机。

  • LVS的两个组件

    • ipvadm:用户空间的命令行工具,规则创建和管理,用于管理集群服务及Real Server
    • ipvs:工作于内核空间的netfilter的INPUT钩子之上的框架
  • LVS集群类型中的术语

    • VS:Virtual Server ,Director
    • RS:Real server,backend server
    • CIP:Client IP
    • VIP:Virtual Server IP
    • DIP:Director IP
    • RIP:Real Server IP
  • LVS集群类型

    • lvs-nat:修改请求报文的目标IP,多目标IP的DNAT
    • lvs-dr:操纵封装新的MAC地址
    • lvs-tun:在原请求IP报文之外新加一个IP首部
    • lvs-fullnat:修改请求报文的源和目的IP(默认不支持)
  • LVS-NAT搭建

    • NAT集群设计要点
      多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发,须满足以下条件
      1、RIP和DIP必须在同一个IP网络,且应该使用私网地址,RS的网关要指向DIP
      2、请求报文和响应报文都必须由Director转发,Director易于成为系统瓶颈
      3、支持端口映射,可修改请求报文的目标端口
      4、vs必须是Linux系统,rs可以是任意系统

    • 设计TOP

       

      LVS-NAT设计图

    • 搭建过程

      • 在VS服务器上安装ipvsadm命令行工具(Centos默认开启了ipvs模块)
        yum -y install ipvsadm
      • 创建集群
      ipvsadm -A -t 10.192.1.165:80 -s rr
      ipvsadm -a -t 10.192.1.165:80 -r 192.168.0.2:80 -m
      ipvsadm -a -t 10.192.1.165:80 -r 192.168.0.3:80 -m
      
      • 查看集群
      [root@ceph-client ~]# ipvsadm -L
      IP Virtual Server version 1.2.1 (size=4096)
      Prot LocalAddress:Port Scheduler Flags
       -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
      TCP  ceph-client:http rr
       -> 192.168.0.2:http             Masq    1      0          0         
       -> 192.168.0.3:http             Masq    1      0          0         
      [root@ceph-client ~]# 
      
      • 在RS服务器上安装并配置nginx静态test.html页面
      • curl测试访问
      [root@yum ~]# for i in {1..10};do curl 10.192.1.165/test.html;done
      <h1> RS1 192.168.0.2 <h1>
      <h1> RS2 192.168.0.3 <h1>
      <h1> RS1 192.168.0.2 <h1>
      <h1> RS2 192.168.0.3 <h1>
      <h1> RS1 192.168.0.2 <h1>
      <h1> RS2 192.168.0.3 <h1>
      <h1> RS1 192.168.0.2 <h1>
      <h1> RS2 192.168.0.3 <h1>
      <h1> RS1 192.168.0.2 <h1>
      <h1> RS2 192.168.0.3 <h1>
      [root@yum ~]# 
      在VS查看
      [root@ceph-client ~]# ipvsadm -l
      IP Virtual Server version 1.2.1 (size=4096)
      Prot LocalAddress:Port Scheduler Flags
        -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
      TCP  ceph-client:http rr
        -> 192.168.0.2:http             Masq    1      0          5         
        -> 192.168.0.3:http             Masq    1      0          5  
      
  • LVS-DR搭建

    • DR集群设计要点
      Direct Routing,直接路由
      通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均不变
      Director和各RS都得配置使用VIP
      1、确保前端路由器将目标IP为VIP的请求报文发往Director
      a、在前端网关做静态绑定(不建议)
      b、在RS上使用arptables(不建议)
      c、在RS上修改内核参数以限制arp通告及应答级别(推荐)
      arp_announce=2
      arp_ignore=1
      2、RS的RIP可以使用私网地址,也可以是公网地址,RIP与DIP在同一个IP网络,RIP的网关不能指向DIP,以确保相应报文不会经由Director
      3、RS跟Director要在同一个物理网络
      4、请求报文要经由Director,但相应不能经由Director,而是由RS直接发往Client
      5、不支持端口映射
    • 设计TOP

       

      LVS-DR设计图

* 搭建过程
    * 在VS服务器上安装ipvsadm命令行工具(Centos默认开启了ipvs模块)
    `yum -y install ipvsadm`
    * 创建集群
    ```
    ipvsadm -A -t 10.192.1.170:80 -s rr
    ipvsadm -a -t 10.192.1.170:80 -r 10.192.1.163 -g
    ipvsadm -a -t 10.192.1.170:80 -r 10.192.1.164 -g
    ```
   * 查看集群
   ```
   [root@vs ~]# ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.192.1.170:80 rr
    -> 10.192.1.163:80              Route   1      0          0         
    -> 10.192.1.164:80              Route   1      0          0         
  [root@vs ~]# 

   ```
  * 在RS服务器上安装并配置nginx静态test.html页面
  * curl测试访问
  ```
  [root@yum ~]# for i in {1..10};do curl 10.192.1.170/test.html;done
  <h1> RS1 10.192.1.164 <h1>
  <h1> RS2 10.192.1.163 <h1>
  <h1> RS1 10.192.1.164 <h1>
  <h1> RS2 10.192.1.163 <h1>
  <h1> RS1 10.192.1.164 <h1>
  <h1> RS2 10.192.1.163 <h1>
  <h1> RS1 10.192.1.164 <h1>
  <h1> RS2 10.192.1.163 <h1>
  <h1> RS1 10.192.1.164 <h1>
  <h1> RS2 10.192.1.163 <h1>
  [root@yum ~]# 
  在VS查看
  [root@vs ~]# ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.192.1.170:80 rr
    -> 10.192.1.163:80              Route   1      0          5         
    -> 10.192.1.164:80              Route   1      0          5   
  ```      

2、nginx反向代理,虚拟主机

  • 概念
    反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
  • 反向代理工作原理图

     

    反向代理工作原理图

     

    用户终端为互联网用户,被代理服务器是提供应用服务的服务器。

  • 实现nginx反向代理虚拟主机
    • 环境:
      10.192.1.163 nginx反向代理服务器
      10.192.1.164 nginx 虚拟机主机(静态页面)
      两台服务器均已安装nginx服务
    • 配置代理服务器
    首先在主配置文件http{}中定义缓存设置
    http {
    ...
    proxy_cache_path /data/nginx/cache levels=1:1:1 keys_zone=mcache:10m max_size=3g;
    ...
    定义虚拟机主机:conf.d/ilinux.conf
    }
    server {
        listen 80;
        server_name www.ilinux.com;
        proxy_cache mcache;
        proxy_cache_key $request_uri;
        proxy_cache_methods GET HEAD;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale http_502;
        location / {
        proxy_pass http://www.index.com;
        }
    
        location ~*.jpg$ {
        proxy_pass http://10.192.1.164:8081;
        }
    }
    
    说明:代理服务器配置了监听80端口基于FQDN的虚拟主机
    并定义了缓存配置
    将 url中 以.gpg结尾的图片访问代理到http://10.192.1.164:8081这个虚拟主机
    将其它的请求代理到http://www.index.com这个虚拟主机
    
    • 配置被代理服务器
    cd /etc/nginx/conf.d
    分别定义两个虚拟主机:
    
    定义ilinux虚拟主机
    server {
        listen  80;
        server_name www.index.com;
        root /data1/;
        location / {
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
    }
    vim /data1/index.thml
    <h1>www.index.com<h1>
    
    定义图片访问虚拟主机
    server {
        listen 8081;
        server_name _;
        root /data;
        location / {
            autoindex on;
            autoindex_exact_size off;
            autoindex_localtime on;
        }
    }
    
    • 测试

       

      ilinux测试页

       


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LVSNginx和Keepalived是一种常见的高可用性负载均衡方案。LVS是Linux Virtual Server的缩写,是一种基于Linux内核的负载均衡软件;Nginx是一种高性能的Web服务器和反向代理服务器;Keepalived是一种用于实现高可用性的软件,可以监控服务器的状态并自动切换到备用服务器。 在部署LVSNginx和Keepalived时,通常需要将LVS作为负载均衡器,将Nginx作为反向代理服务器,同时使用Keepalived实现高可用性。具体的部署步骤包括: 1. 在LVS服务器上安装LVS软件,并配置LVS的虚拟服务器和真实服务器。 2. 在Nginx服务器上安装Nginx软件,并配置Nginx反向代理功能,将请求转发到LVS服务器上。 3. 在LVS服务器和Nginx服务器上安装Keepalived软件,并配置Keepalived的监控和自动切换功能,以实现高可用性。 通过以上步骤,可以实现一个高可用性的负载均衡方案,提高系统的可用性和稳定性。 ### 回答2: LVSnginx、keepalived 都是常用的负载均衡方案。在进行部署时,一般会将 LVS 与 keepalived 搭配使用,用于负载均衡的实现,而 nginx 则用于处理 HTTP 请求。 LVS 是一个可以实现 TCP、UDP、FTP、HTTP 等多种协议的全局负载均衡方案。它可以通过多台服务器实现流量转发和负载均衡,提高了系统的可用性和性能。LVS 的核心是 IP 虚拟服务器(IPVS),它可以根据一定的负载均衡算法将流量转发给后端的真实服务器。 keepalived 是一个用于提供虚拟 IP 和实现高可用性的软件,在 LVS 集群中起到了非常重要的作用。它可以监控真实服务器的状态,一旦某台服务器宕机,就将其从负载均衡池中移除,并交给其他服务器处理流量,以确保服务的高可用性。 nginx 主要用于处理 HTTP 流量,是一个高性能、轻量级的 Web 服务器和反向代理服务器。将 nginx 部署在 LVS 的后端服务器上,可以实现更细粒度的请求分发和负载均衡。nginx 可以通过反向代理实现请求的负载均衡,将请求按照一定的方式分发到后端服务器,从而提高了请求的处理速度。 在将这三个组件进行部署时,一般会将 LVS 作为整个集群的入口,将请求分发到后端的 nginx 服务器中,nginx 再根据一定的负载均衡策略将请求转发给真正的后端服务器。这样可以确保整个集群的负载均衡和可用性,并提高请求的处理速度。通过 keepalived 的监控,可以确保服务器的高可用性,提高了整个系统的稳定性。 ### 回答3: LVSNginx和Keepalived是常见的高可用性和负载均衡解决方案之一。 LVS是Linux Virtual Server的缩写,是一种基于Linux内核的负载均衡软件,是一个集群系统。LVS的核心思想是将多台服务器合并为一个虚拟服务器提供服务,从而增加系统的可靠性和可扩展性。LVS可以按照四层和七层的协议进行负载均衡。LVS的部署需要在每一个真实服务器上安装相应的软件,并配置LVS路由。LVS可以配合Keepalived使用实现高可用性。 Nginx是一款高性能、高并发的Web服务器和反向代理服务器,可以支持负载均衡和高可用性架构。Nginx的特点是轻量级,可以在性能瓶颈下仍然保持良好的性能表现。通常,Nginx可以用作前端服务器,为反向代理服务器提供服务。Nginx支持HTTP、HTTPS、SMTP、POP3和IMAP等协议。Nginx可以将请求分配给不同的后端服务器,并监测服务器的健康状况。 Keepalived是一个用于架构高可用性解决方案的软件。它提供了一种可靠地方法,管理和监测服务提供者之间的通信,并通过虚拟IP地址自动切换服务提供者。Keepalived可以与LVSNginx等软件集成使用,支持多种故障检测,例如基于TCP、HTTP、SMTP、Script等方法监测服务状态。 在实际部署中,通常将LVS配置在一个独立的服务器上,用于接收客户端请求并将其转发到后端Nginx服务器。Nginx服务器可以以多个实例的形式运行,将负载分散在不同的节点上,提高系统性能和可靠性。在实现高可用性解决方案的时候,Keepalived可以负责管理和监测Nginx服务器,以便在故障发生时自动切换服务提供者,确保服务不中断。 需要特别注意的是,对于使用Nginx以及其它反向代理的情况,要在反向代理上设置后端服务器健康情况检测,以保证高可用性的稳定性。同时,部署时要注意各个软件的配置和参数调优,以达到高可用性和高性能的最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值