虚拟机搭建LVS-NAT集群

一. 必备知识

     局域网基础和计算机网络7层模型  http://blog.csdn.net/liaomin416100569/article/details/72976270

         必须掌握NAT 路由器 网关这些概念

      tcp协议相关知识  http://blog.csdn.net/liaomin416100569/article/details/73088297

      虚拟机配置三种虚拟网络的知识 自行百度

      LVS快速搭建可以使用centos的piranha软件 具体安装自行百度 这里不研究

二概念解析

  lvs官网 http://www.linuxvirtualserver.org/

  lvs(linux virtual server)提供了三种集群方式 

  分别是:

NAT模式简介
   类似于nginx集群  DServer 表示转发服务器 用于控制负载均衡 复杂均衡的存在几种转发算法  dserver必须拥有两个网卡  一个用于公网用户访问Dserver
一个网卡用于连接局域网中其他的Rserver (Real Server)  客户端浏览器访问的公网ip 192.168.88.20 数据包 可能就是 源ip 客户端ip  目标ip Vip 88.20
转发服务器需要定义个路由规则 将发送的数据包 转换为 源ip 客户端ip 目标ip是 后端的Rserver的Rip 才能正常的被后端机器收  后端Rserver返回结果后
DServer需要将源ip修改为公网ip vip 客户端才能接受响应 


三 配置过程
  1.dserver配置
     1.1》配置双网卡  双ip
                1.1.1》安装vmware虚拟机  虚拟机安装cenos7 明白三种虚拟网络的方式
                    。桥接:和window机器的物理网卡进行桥接  桥接后 由物理网卡将当前ip和虚拟机设置的ip 的arp数据分发出去 可以达到让局域网其他主机
                                访问虚拟机ip的能力 
                   。 NAT 利用WMnet8虚拟网卡作为虚拟路由  虚拟机自动获取ip 会设置网关地址为wmnet8的ip 当虚拟机网络网络时 数据包发送到网关 网关wmnet8
                           修改数据包的源ip地址 利用window机器上网后返回数据 给虚拟机
                   。仅主机模式 和NAT一样 虚拟机只能访问主机资源不能联网
                1.1.2》安装nat虚拟网卡
                       虚拟机右键   设置 - 网络适配器  修改为NAT模式
                             
                    在虚拟机上 可以 ifconfig 查看 发现设备名称eno16777736  自动生成了ip  192.168.58.134
              如果没有获取ip  可以通过修改  /etc/sysconfig/network-scripts/ifcfg-eno16777736文件  ONBOOT=yes 表示启动自动获取ip 
              重启网络服务 service network restart
[root@bogon proc]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.58.134  netmask 255.255.255.0  broadcast 192.168.58.255
        inet6 fe80::20c:29ff:fe49:296c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:29:6c  txqueuelen 1000  (Ethernet)
        RX packets 1890  bytes 703660 (687.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1479  bytes 276286 (269.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

              1.1.3》安装桥接虚拟网卡
                  虚拟机右键设置 弹出窗口后   添加  选择网络适配器  创建网络适配器2  设置为桥接模式
                 
        将桥接虚拟网卡绑定到window机器物理网卡上 
            虚拟机 菜单 编辑 -虚拟网络编辑器
          
      window物理网卡的ip配置是如下的
      
     当添加好网卡后 在linux上 通过ifconfig 可以看到多了一个网卡
   
[root@bogon proc]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.58.134  netmask 255.255.255.0  broadcast 192.168.58.255
        inet6 fe80::20c:29ff:fe49:296c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:29:6c  txqueuelen 1000  (Ethernet)
        RX packets 1977  bytes 712212 (695.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1536  bytes 286518 (279.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554984: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.16.21  netmask 255.255.255.0  broadcast 192.168.16.255
        inet6 fe80::20c:29ff:fe49:2976  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:29:76  txqueuelen 1000  (Ethernet)
        RX packets 2157795  bytes 229287748 (218.6 MiB)
        RX errors 0  dropped 5331  overruns 0  frame 0
        TX packets 537  bytes 1032636 (1008.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 33  bytes 3074 (3.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 3074 (3.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     可以看到新生成了一个设备eno33554984 ip不是我们想要的 因为上图中 window的ip是192.168.88.20 我这里如果需要这台机器被外部访问 必须
   设置为 88段的ip 需要为该网卡配置 静态地址   拷贝一个其他网卡的文件 修改为当前网卡名称
       cd /etc/sysconfig/network-scripts 
       cp ifcfg-eno16777736 ifcfg-eno33554984 
      修改 ifcfg-eno33554984 
          将BOOTPROTO从dbcp修改为static表示静态ip
           NAME=eno33554984  改成当前网卡名
          UUID=1c2310e2-e82e-4ce7-a1aa-60d05aa47f2e  随便修改一个字母 唯一的物理地址
          DEVICE=eno33554984 改为当前网卡名
          IPADDR=192.168.88.21   设置静态ip
          NETMASK=255.255.255.0  设置子网掩码
         GATEWAY=192.168.88.1 设置网关
         DNS1=8.8.8.8   设置dns

其中子网掩码和网关和dns都和window机器一样   以下是正确的配置
TYPE=Ethernet
BOOTPROTO=static
NAME=eno33554984
UUID=1c2310e2-e82e-4ce7-a1aa-60d05aa47f2e
DEVICE=eno33554984
ONBOOT=yes
IPADDR=192.168.88.21
NETMASK=255.255.255.0
GATEWAY=192.168.88.1
DNS1=8.8.8.8
重启网络 service network restart
[root@bogon network-scripts]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.58.134  netmask 255.255.255.0  broadcast 192.168.58.255
        inet6 fe80::20c:29ff:fe49:296c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:29:6c  txqueuelen 1000  (Ethernet)
        RX packets 2233  bytes 737958 (720.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1743  bytes 320982 (313.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno33554984: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.88.21  netmask 255.255.255.0  broadcast 192.168.88.255
        inet6 fe80::20c:29ff:fe49:2976  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:49:29:76  txqueuelen 1000  (Ethernet)
        RX packets 2316913  bytes 247471207 (236.0 MiB)
        RX errors 0  dropped 5815  overruns 0  frame 0
        TX packets 537  bytes 1032636 (1008.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 33  bytes 3074 (3.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 33  bytes 3074 (3.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

此时 88.21ip配置成功 随便找一台window机器 ping以下 88.21 成功


      1.1.4配置路由规则
          查看 more /etc/sysctl.conf
            net.ipv4.ip_forward = 1  该参数表示开启路由转发功能  访问88.21数据后 将数据转换后转发给局域网网卡58.134  
          sysctl -p 参数生效
         如果不存在或者为0  修改为1 表示可以在不同网卡间进行路由转发
         ipvs和参数foward功能图解
          
        ipvsadm实际上就是对数据包的过滤 当客户端发送数据请求到 88.20网卡时 ipvs拦截 通过负载均衡调度算法获取到一台Rserver后
       将数据包 修改为 目标ip为 计算后的RServerip   因为开启了  net.ipv4.ip_forward = 1  所以知道目标地址为58 段 自动将数据包forward到
        58.134的网卡  因为Rserver的ip和该网卡处于同一网段所以 通过Dip发送数据包到Rip 

          在同时使用ip 192.168.88.21和192.168.58.134的Dserver上 配置lvs 安装ipvs软件
             yum -y install ipvsadm
            #清空所有的路由规则
             ipvsadm -C
            #添加一个集群   192.168.88.21:80 必须是外网ip 也就是vip 因为别人才可以访问  rr表示轮询
            ipvsadm -A -t 192.168.88.21:80 -s rr
            #给集群添加一个主机 Rserver   192.168.58.135:80和192.168.58.136:80 这两台机各自部署一个tomcat
            ipvsadm -a -t 192.168.88.21:80 -r 192.168.58.135:80 -m
            ipvsadm -a -t 192.168.88.21:80 -r 192.168.58.136:80 -m  

         常用的ipvsadm命令
集群命令
 添加  ipvsadm -A -t 192.168.88.21:80 -s rr
 修改  ipvsadm -E -t 192.168.88.21:80 -s wrr
 删除 ipvsadm -D -t 192.168.88.21:80
后台主机管理命令
 添加 ipvsadm -a -t 192.168.88.21:80 -r 192.168.58.135:80 -m   (-m表示是nat集群 -g是dr   -w int 设置权重)
 修改 ipvsadm -e -t 192.168.88.21:80 -r 192.168.58.135:80 –m -w 3
 删除  ipvsadm -d -t 192.168.88.21:80 -r 192.168.58.135:80
查看集群
    ipvadm -L -n
将路由规则保存到文件中
  service ipvsadm save
   8种调度算法
1. 轮叫调度 rr
这种算法是最简单的,就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。

2. 加权轮叫 wrr
这种算法比 rr 的算法多了一个权重的概念,可以给 RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多。

3. 最少链接 lc
这个算法会根据后端 RS 的连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,那么请求就优先发给 RS1 

4. 加权最少链接 wlc
这个算法比 lc 多了一个权重的概念。

5. 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

6. 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

7. 目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

8. 源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源


  


  2.rserver配置
     》配置tomcat
       两台ip为 192.168.58.135和 192.168.58.136安装tomcat配置端口为80 启动
     》配置ip 设置网关为DIP
        将135和136的ip都设置为静态ip 并且将网关设置为 转发服务器的dip 也就是 58.134
     58.135和58,.136设置为 对应的ip
TYPE=Ethernet
BOOTPROTO=static
NAME=eno16777736
UUID=1c2310e2-e82e-4ce7-a1aa-60d05aa47f1e
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.58.135
NETMASK=255.255.255.0
GATEWAY=192.168.58.134
~
~

在任意88段网络任意网络  http://192.168.88.21/ 正常访问

   

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值