Linux Virtual Server NAT模型 的实现

  • 查看内核是否具有ipvs的功能
    这里写图片描述
  • 从这里可以看到IP_VS支持的协议以及支持的十种算法,并且自带了支持FTP协议的模块,上面是内核提供的模块,如果不存在,就需要自行编译内核;
  • 接下来需要安装,用户空间的管理工具ipvsadm
[root@server21 ~]# yum install ipvsadm -y
  • ipvsadm的功能:

    • 管理集群服务
      • 添加:
        • -A:表示添加集群服务
          • -t:TCP协议的集群,service-address: IP:Port;
          • -u:UDP协议的集群,service-address: IP:Port;
          • -f:FWM防火墙标记(Fire Wall Mark)LVS的持久连接有关,service-address:Mark Number;
          • -s:表示用于指定调度方法;
          • 例如:ipvsadm -A -t 172.25.23.21:80 -s rr;
      • 修改:
        • -E:
      • 删除:
        • -D: -t | -u | f service-address,直接可以用于删除某个服务;
    • 管理集群服务中的Real Server;
      • 添加: -a -t | u | f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
        • -a:
          • -t server-address
          • -u: server-address
          • -f:server-address
          • -r:server-address,某RS的地址,在NAT模型中,可使用IP:Port进行端口映射;
          • -g:表示DR模型;
          • -i:表示TUN模型
          • -m:表示NAT模型;
          • -w:用于说明权重;
          • -x:用于时设置连接的阀值的最大值;
          • -y:用于设置连接的阀值的最小值;
          • 例如:ipvsadm -a -t 172.25.23.100:80 -r 192.168.10.1 | 2
      • 修改:-e -t|u|f service-address -r server-addres [-g|i|m] [-w weight] [-x upper] [-y lower]
      • 删除:
        • -d -t|u|f service-address -r server-address
    • 查看服务的规则:
      • -L:
        • -n:表示数字格式显示IP地址和端口号,不进行反解;
        • --state:显示统计信息;
        • --rate:表示用于显示速率;
        • --timeout:用于显示TCP(UDP)协议的会话超时时间时长;
        • --sort:对于集群服务进行排序;
        • -c:用于显示连接状态的;
    • -Z:用于清空统计信息包括上面显示 的速率等等信息;
    • -C:表示用于清空IPvs规则;
    • -S:用于保存的生效的规则,通常是#ipvsadm -S > /path/to/somewhere ;
    • -R:用于载入此前生效的规则,例如:# ipvsadm -R < /path/to/somewhere;
  • 按照下面的规划实现NAT模型
    这里写图片描述

  • 这里修改关于IP地址的规划:

    • VIP地址为:172.25.23.21,GIP192.168.10.100;
    • RIP1192.168.10.1,RIP2192.168.10.2;
  • 根据上面的配置,首先更改LVS主机的地址为VIP以及GIP

  • 更改VIP,可以使用setuptools进行修改,或者通过修改配置文件进行修改

  • 选择Network的选项
    这里写图片描述

  • 选择Device的选项:
    这里写图片描述

  • 选择eth0;
    这里写图片描述

  • 配置IP地址如下:
    这里写图片描述

  • 底下是eth0的配置文件信息

[root@server21 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=52:54:00:62:3a:95
TYPE=Ethernet
UUID=b093f393-3eae-43fc-8d4d-b7f980324778
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.25.23.21
PREFIX=24
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no
GATEWAY=172.25.23.24
  • 配置eth1的文件信息如下
    这里写图片描述
  • eth1的配置文件信息如下
DEVICE=eth1
BOOTPROTO=none
NETMASK=255.255.255.0
TYPE=Ethernet
HWADDR=52:54:00:73:bb:96
IPADDR=192.168.10.100
  • 补充关于KVM虚拟机添加虚拟网卡
  • 首先命令行输入
[root@my Desktop]# virt-manager 

这里写图片描述

  • 找到需要添加虚拟网卡的虚拟机,并且进行双击

这里写图片描述

  • 选择右下角的Add HardWare,选择网卡并且选择网卡类型
    这里写图片描述

  • 回到正题

  • 配置好网段之后,然后需要重新启动网络服务,并且查看网络地址

[root@server21 ~]# /etc/init.d/network restart

这里写图片描述

  • 接下来配置Real ServerIP地址
  • RIP1 192.168.10.1,并且配置RIP2 192.168.10.2;
    这里写图片描述

这里写图片描述

  • 按照规划已经配置好所有主机的IP地址;
  • REAL SERVER提供服务
  • 提供httpd以及telnet-server服务
  • RS 1:
[root@server10 ~]# yum install httpd telnet-server -y 
  • RS2:
[root@server20 ~]# yum install httpd telnet-server -y 
  • 因为i这里配置的是NAT模式,所以RS的网关指向LVS
  • RS1:
[root@server10 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
HWADDR=52:54:00:07:F3:6F
TYPE=Ethernet
UUID=39920ff6-c429-459b-9a06-274cff582c2e
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.1
PREFIX=24
GATEWAY=192.168.10.100

//重新启动网络服务
[root@server10 ~]# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 192.168.10.1 is already in use for device eth0...
                                                           [  OK  ]
//查看路由信息
[root@server10 ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         192.168.10.100  0.0.0.0         UG    0      0        0 eth0
  • RS 2:
[root@server20 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=52:54:00:03:aa:77
TYPE=Ethernet
UUID=69ac772e-21b8-4ba0-a1a2-3f3aeb4d76f8
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.10.2
PREFIX=24
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no
GATEWAY=192.168.10.100

//重新启动网络服务
[root@server20 ~]# /etc/init.d/network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Determining if ip address 192.168.10.2 is already in use for device eth0...
                                                           [  OK  ]

//查看路由信息
[root@server20 ~]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.10.100  0.0.0.0         UG    0      0        0 eth0
  • 接下来为每个RS提供httpd的配置页面
[root@server10 ~]# echo "RS 1 server" > /var/www/html/index.html
[root@server10 ~]# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ]

[root@server20 ~]# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ]
  • 确保服务本地访问正常
    这里写图片描述

这里写图片描述

  • 确定LVS可以和RS 1以及RS 2进行通信
    这里写图片描述

这里写图片描述

  • 确保HTTP服务访问正常
    这里写图片描述
  • LVS确定网卡间转发打开
[root@server21 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 
[root@server21 ~]# cat /proc/sys/net/ipv4/ip_forward
1
  • LVS上面接下来添加集群服务,并且添加集群节点
[root@server21 ~]# ipvsadm -A -t 172.25.23.21:80 -s rr 
[root@server21 ~]# ipvsadm -a -t 172.25.23.21:80 -r 192.168.10.1 -m 
[root@server21 ~]# ipvsadm -a -t 172.25.23.21:80 -r 192.168.10.2 -m 
  • 通过文本进行浏览器的访问操作
[root@my Desktop]# curl http://172.25.23.21
RS 2 server
[root@my Desktop]# curl http://172.25.23.21
RS 1 server
[root@my Desktop]# curl http://172.25.23.21
RS 2 server
  • 查看LVS监控到的信息

这里写图片描述

  • 通过浏览器进行访问
    这里写图片描述
  • 查看统计信息
    这里写图片描述
  • 修改规则,添加权重
[root@server21 ~]# ipvsadm -E -t 172.25.23.21:80 -s wrr
[root@server21 ~]# ipvsadm -e -t 172.25.23.21:80 -r 192.168.10.1 -m -w 3
[root@server21 ~]# ipvsadm -e -t 172.25.23.21:80 -r 192.168.10.2 -m -w 3
  • 查看修改之后的规则
    这里写图片描述

  • 使用简单的命令测试服务器的性能

[root@server21 ~]# ab -n 1000 -c 100 http://172.25.23.21/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 172.25.23.21 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        Apache/2.2.15
Server Hostname:        172.25.23.21
Server Port:            80

Document Path:          /index.html
Document Length:        21 bytes

Concurrency Level:      100
Time taken for tests:   0.622 seconds
Complete requests:      1000
Failed requests:        749
   (Connect: 0, Receive: 0, Length: 749, Exceptions: 0)
Write errors:           0
Total transferred:      288829 bytes
HTML transferred:       20293 bytes
Requests per second:    1608.13 [#/sec] (mean)
Time per request:       62.184 [ms] (mean)
Time per request:       0.622 [ms] (mean, across all concurrent requests)
Transfer rate:          453.59 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5   5.8      4      82
Processing:     0   48  28.8     60     101
Waiting:        0   47  28.6     58     101
Total:          1   54  28.7     65     105

Percentage of the requests served within a certain time (ms)
  50%     65
  66%     68
  75%     70
  80%     76
  90%     90
  95%     95
  98%    100
  99%    102
 100%    105 (longest request)
  • 查看监控的状态
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值