实验环境:

主机名 IP  所需软件
master

eth0==>192.168.30.160(RIP)

eth0:1==>192.168.30.130(VIP)

ipvsadm
node-1 eth0==>192.168.30.131 httpd
node-2 eth0==>192.168.30.132

在master上

安装ipvsadm
[root@master ~]# yum install -y ipvsadm
配置网卡
[root@master ~]# cd /etc/sysconfig/network-scripts/
[root@master network-scripts]# cp ifcfg-eth0 ifcfg-eth0:
[root@master network-scripts]# vim ifcfg-eth0:
DEVICE=eth0:
TYPE=Ethernet
UUID=a186cc9d-8d79--a180-a1b17d884a7b
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=:0C::4D::
IPADDR=192.168.30.130
PREFIX=
GATEWAY=192.168.30.2
DNS1=119.29.29.29
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0:1"
重启网络服务并查看
[root@master ~]# service network restart
Shutting down interface eth0: Device state: (disconnected)
[ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/
[ OK ]
[root@master ~]# ifconfig
eth0 Link encap:Ethernet HWaddr :0C::4D::
inet addr:192.168.30.160 Bcast:192.168.30.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe4d:/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (206.1 KiB) TX bytes: (166.8 KiB) eth0: Link encap:Ethernet HWaddr :0C::4D::
inet addr:192.168.30.130 Bcast:192.168.30.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU: Metric: lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (960.0 b) TX bytes: (960.0 b) 添加规则
[root@master ~]# ipvsadm -C
[root@master ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@master ~]# ipvsadm -A -t 192.168.30.130: -s rr
[root@master ~]# ipvsadm -a -t 192.168.30.130: -r 192.168.30.131 -i
[root@master ~]# ipvsadm -a -t 192.168.30.130: -r 192.168.30.132 -i
[root@master ~]# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@master ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.30.130: rr
-> 192.168.30.131: Tunnel
-> 192.168.30.132: Tunnel

在realserver上(node-1和node-2)

[root@node- ~]# modprobe ipip #加载ipip模块后使用ifconfig会看到默认的tunl0隧道
[root@node- ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr :::3B:FA:
inet addr:192.168.30.131 Bcast:192.168.30.255 Mask:255.255.255.0
inet6 addr: fe80:::56ff:fe3b:fa94/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (53.6 KiB) TX bytes: (32.5 KiB) lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (720.0 b) TX bytes: (720.0 b) lo: Link encap:Local Loopback
inet addr:192.168.30.130 Mask:255.255.255.255
UP LOOPBACK RUNNING MTU: Metric: tunl0 Link encap:IPIP Tunnel HWaddr
NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 b) TX bytes: (0.0 b)
[root@node- ~]# lsmod | grep ipip
ipip
tunnel4 ipip

配置VIP

[root@node- ~]# cd /etc/sysconfig/network-scripts/
[root@node- network-scripts]# cp ifcfg-lo ifcfg-tunl0
[root@node- network-scripts]# vim ifcfg-tunl0
DEVICE=tunl0
IPADDR=192.168.30.130
NETMASK=255.255.255.250
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
ONBOOT=yes
NAME=tunl0
#这里遇到一个问题不知道各位在做的过程中有没有遇到过,就是这里配置完VIP后,直接ifconfig 就会看到结果,但是不可以重启网络服务,一旦重启,VIP就没有了,尴尬。。。

查看VIP

[root@node- ~]# ifconfig
eth0 Link encap:Ethernet HWaddr :::3B:FA:
inet addr:192.168.30.131 Bcast:192.168.30.255 Mask:255.255.255.0
inet6 addr: fe80:::56ff:fe3b:fa94/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (7.2 KiB) TX bytes: (8.1 KiB) lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (240.0 b) TX bytes: (240.0 b) tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:192.168.30.130 Mask:255.255.255.255
UP RUNNING NOARP MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (0.0 b) TX bytes: (0.0 b)

关闭ARP转发

[root@node- ~]# vim /etc/sysctl.conf
#末尾添加下面几行内容
net.ipv4.conf.tunl0.arp_ignore =
net.ipv4.conf.tunl0.arp_announce =
net.ipv4.conf.all.arp_ignore =
net.ipv4.conf.all.arp_announce =
net.ipv4.conf.tunl0.rp_filter =
net.ipv4.conf.all.rp_filter =

使立即生效

[root@node- ~]# sysctl -p
net.ipv4.ip_forward =
net.ipv4.conf.default.rp_filter =
net.ipv4.conf.default.accept_source_route =
kernel.sysrq =
kernel.core_uses_pid =
net.ipv4.tcp_syncookies =
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb =
kernel.msgmax =
kernel.shmmax =
kernel.shmall =
net.ipv4.conf.tunl0.arp_ignore =
net.ipv4.conf.tunl0.arp_announce =
net.ipv4.conf.all.arp_ignore =
net.ipv4.conf.all.arp_announce =
net.ipv4.conf.tunl0.rp_filter =
net.ipv4.conf.all.rp_filter =

部署web服务器

[root@node- ~]# yum install -y httpd  #安装httpd服务
创建测试页面
[root@node- ~]# cat /var/www/html/index.html
<h1>This is node- WebServer:192.168.30.131</h1>
启动httpd服务
[root@node- ~]# service httpd start
Starting httpd: [ OK ]
设置开机启动
[root@node- ~]# chkconfig httpd on

在node-2上做相同操作;

然后在物理机上使用物理机浏览器首先测试node1和node-2是否可以正常访问

然后测试director(master:192.168.30.130)

按F5刷新

网站压测:(ab命令:需要http-tools支持)

ab命令常用参数:

用法: ab [options] [http[s]://]hostname[:port]/path

参数:

-A auth-username:password
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-d 显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-e csv-file
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-g gnuplot-file
把所有测试结果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-h 显示使用方法。
-H custom-header
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit").
-i 执行HEAD请求,而不是GET。
-k 启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能.
-n requests
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。
-p POST-file
包含了需要POST的数据的文件.
-P proxy-auth-username:password
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q 如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记可以抑制这些信息。
-s 用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S 不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持).
-t timelimit
测试所进行的最大秒数。其内部隐含值是-n 。 它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T content-type
POST数据所使用的Content-type头信息。
-v verbosity
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(, 200等), 2或更大值可以显示警告和其他信息。
-V 显示版本号并退出。
-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
设置<table>属性的字符串。 此属性被填入<table 这里 >.
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
设置<tr>属性的字符串.
-z <td>-attributes
设置<td>属性的字符串.
该段内容摘自:http://linux.51yip.com/search/ab

单独对node-1直接进行

[root@xueji ~]# ab -c   -n  http://192.168.30.131/
This is ApacheBench, Version 2.3 <$Revision: $>
Copyright Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.30.131 (be patient)
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Completed requests
Finished requests Server Software: Apache/2.2.
Server Hostname: 192.168.30.131
Server Port: Document Path: /
Document Length: bytes Concurrency Level:
Time taken for tests: 0.123 seconds
Complete requests:
Failed requests:
Write errors:
Total transferred: bytes
HTML transferred: bytes
Requests per second: 8121.56 [#/sec] (mean)
Time per request: 1.231 [ms] (mean)
Time per request: 0.123 [ms] (mean, across all concurrent requests)
Transfer rate: 2516.71 [Kbytes/sec] received Connection Times (ms)
min mean[+/-sd] median max
Connect: 0.2
Processing: 0.6
Waiting: 0.5
Total: 0.7 Percentage of the requests served within a certain time (ms)
%
%
%
%
%
%
%
%
% (longest request)

对master(Director进行测试)

[root@xueji ~]# ab -c   -n  -q http://192.168.30.130/    #对192.168.30.130进行1000次请求,并发用户1000
This is ApacheBench, Version 2.3 <$Revision: $>
Copyright Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.30.130 (be patient).....done Server Software: Apache/2.2.
Server Hostname: 192.168.30.130
Server Port: Document Path: /
Document Length: bytes #测试的站点文件大小(即index.html的文件大小) Concurrency Level: 1000 #并发请求总数
Time taken for tests: 1.514 seconds #测试总用时1.514秒
Complete requests: 1000 #测试的总请求数
Failed requests: 0 #失败的请求数
Write errors:
Total transferred: bytes #测试共传输的总字节数
HTML transferred: bytes #测试共传输的HTML字节数
Requests per second: 660.30 [#/sec] (mean) #每秒处理的请求数
Time per request: 1514.463 [ms] (mean) #每个请求平均花费的时间
Time per request: 1.514 [ms] (mean, across all concurrent requests) #平均每个请求花费的时间
Transfer rate: 204.41 [Kbytes/sec] received #平均每秒传输字节数 Connection Times (ms)
min mean[+/-sd] median max #左-->右 最小值 平均值 中位数 最大值
Connect: 88.1 1003 #连接
Processing: 411.4 1495 #传输中
Waiting: 411.4 1495 #等待
Total: 413.1 1510 #总计 Percentage of the requests served within a certain time (ms) #每个请求完成的百分进度
%
%
%
%
%
%
%
%
% (longest request)

使用webbench测试

安装过程
[root@node- ~]# yum install -y lrzsz
[root@node- ~]# rz
[root@node- ~]# ll -h webbench-1.5.tar.gz
-rw-r--r-- root root .5K Sep webbench-1.5.tar.gz
[root@node- ~]# tar -xf webbench-1.5.tar.gz -C /usr/local/src/
[root@node- ~]# cd /usr/local/src/webbench-1.5/
[root@node- webbench-1.5]# ls
ChangeLog COPYRIGHT debian Makefile socket.c webbench. webbench.c
[root@node- webbench-1.5]# mkdir -p /usr/local/man/man1 #不创建该目录会报错
[root@node- webbench-1.5]# make -j ;make install
[root@node- webbench-1.5]# cd
[root@node- ~]# webbench #敲下web直接可以tab出来

webbench参数解释

[root@node- ~]# webbench --help
webbench [option]... URL
-f|--force 不等待服务器的回复
-r|--reload 发送重新加载请求
-t|--time <sec> 在<秒>秒内运行基准测试。 默认30。
-p|--proxy <server:port> 使用代理服务器进行请求。
-c|--clients <n> 立即运行<n>个 HTTP客户端。 默认一个.
-|--http09 使用HTTP / .9样式请求。
-|--http10 使用HTTP / .0样式请求。
-|--http11 使用HTTP / .1样式请求。
--get 使用GET请求方法。
--head 使用HEAD请求方法。
--options 使用OPTIONS请求方法.
--trace 使用TRACE请求方法.
-?|-h|--help 帮助信息.
-V|--version 程序版本

测试

[root@node- ~]# webbench -c  -t  http://192.168.30.130/index.html
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar -, GPL Open Source Software. Benchmarking: GET http://192.168.30.130/index.html
client, running sec. Speed= pages/min, bytes/sec.
Requests: susceed, failed.
说明:speed:只有一个客户端时,每分钟可以响应404039个页面,1秒可以传输2609861字节

使用100个客户端并发访问持续20秒

[root@node- ~]# webbench -c  -t  http://192.168.30.130/index.html
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar -, GPL Open Source Software. Benchmarking: GET http://192.168.30.130/index.html
clients, running sec. Speed= pages/min, bytes/sec.
Requests: susceed, failed
同时在另个终端查看主机性能
[root@node- ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st

逐渐增大并发量,当并发量1000时

[root@node- ~]# webbench -c  -t  http://192.168.30.130/index.html
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar -, GPL Open Source Software. Benchmarking: GET http://192.168.30.130/index.html
clients, running sec. Speed= pages/min, bytes/sec.
Requests: susceed, failed.
[root@node- ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st

RHEL6.5---LVS(IP-TUN)的更多相关文章

  1. 集群之LVS(负载均衡)详解

    提高服务器响应能力的方法 scale on  在原有服务器的基础上进行升级或者直接换一台新的性能更高的服务器. scale out  横向扩展,将多台服务器并发向外响应客户端的请求.优点:成本低,扩展 ...

  2. CentOS6.4 配置LVS(DR模式)

    DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 y ...

  3. 计算机网络初探(ip协议)

    粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...

  4. uva 1590 - IP Networks(IP地址)

    习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590) 可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围).其中子网 掩码包含32 ...

  5. 自动化脚本-配置LVS(DR模式)

    一,获取所需配置的主机IP cat get_ip.sh #!/bin/bash #将获得到的IP地址写进IP.txt >ip.txt #将原有的hosts信息清除 >/root/.ssh/ ...

  6. linux LVS (keepalived+ipvsadm)负载均衡搭建

    ipsvadm 配置 一:安装配置 LVS+DR+Keepalivedclient 访问的地址 VIP 192.168.133.100       负载服务器master真实IP        192 ...

  7. 如何使用VMware安装rhel6.4操作系统(详细步骤)

    第一步,打开VMwareWorkStation11创建新的虚拟机.如下图所示. 第二步,点击文件,然后选新建虚拟机.,新建虚拟机向导,选择自定义. 第三步,选择虚拟机硬件兼容性.选择WorkStati ...

  8. flum到kafka 收集数据 存储到redis 案例 (ip.txt)

    ip.scala package ip import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.kafka. ...

  9. bugkuCTF-管理员系统(IP伪造)

    题目地址:http://123.206.31.85:1003/ 登进去是一个管理员后台登录的样子 试了sql的万能密码,发现进不了,而且下面还报错了ip禁止 禁止了我们的ip,但是他本地的ip肯定没有 ...

  10. centos7部署phpipam(ip管理系统)

    安装必要的软件 yum install httpd mariadb-server php php-cli php-gd php-common php-ldap php-pdo php-pear php ...

随机推荐

  1. 【Nginx安装】CentOS7安装Nginx及配置

    [Nginx安装]CentOS7安装Nginx及配置 2018年03月05日 11:07:21 阅读数:7073 Nginx是一款轻量级的网页服务器.反向代理服务器.相较于Apache.lighttp ...

  2. box-sizing: border-box;的作用

    box-sizing 属性可以被用来调整这些表现: content-box  是默认值.如果你设置一个元素的宽为100px,那么这个元素的内容区会有100px宽,并且任何边框和内边距的宽度都会被增加到 ...

  3. MySQL数据库设计常犯的错以及对性能的影响

    1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于M ...

  4. html5--6-60 阶段练习7-下拉菜单

    html5--6-60 阶段练习7-下拉菜单 学习要点 综合运用所学过的知识完成一个下拉菜单的小练习,加深对学过知识点的综合应用能力. <!DOCTYPE html> <html l ...

  5. 关于布局(Layout)的一切

    之前在布局中有很多问题也有很多经验,遗憾都没记下来.现在一点点记下一些东西. 1.外层用LinearLayout的话,常常把orientation设成vertical, android:orienta ...

  6. ibatis 中 $与#的区别

    ibatis 中 $与#的区别 使用#: select * from table where id = #id# 如果字段为整型:#id#表示成id select * from table where ...

  7. B. Arpa’s obvious problem and Mehrdad’s terrible solution

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  8. 用Python在局域网根据IP地址查找计算机名

    1.要使用socket模块 代码如下: import sys, socket # hostname = socket.gethostname()# print("Host name:&quo ...

  9. emacs版本差异(转载)

    emacs23 就是原装的,由 gnu 发布的 emacs.emacs-lucid 是由 ubuntu 调整过的.emacs-nox 是不带 x system 的 emacs 版本.除非只在终端下用, ...

  10. [NEXT] 时间管理实践

    此文已由作者杨卫强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 我个人认为,浪费时间比较主要的原因有两个 工作缺乏计划 工作过程被打扰,效率低下 以下记录我自己的时间管理实 ...