RHEL6.5---LVS(IP-TUN)
实验环境:
主机名 | 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)的更多相关文章
- 集群之LVS(负载均衡)详解
提高服务器响应能力的方法 scale on 在原有服务器的基础上进行升级或者直接换一台新的性能更高的服务器. scale out 横向扩展,将多台服务器并发向外响应客户端的请求.优点:成本低,扩展 ...
- CentOS6.4 配置LVS(DR模式)
DR模式中LVS主机与实际服务器都有一块网卡连在同一物理网段上. IP分配 VIP:10.10.3.170 RIP1:10.10.3.140 RIP2:10.10.3.141 1.安装所需的依赖包 y ...
- 计算机网络初探(ip协议)
粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...
- uva 1590 - IP Networks(IP地址)
习题4-5 IP网络(IP Networks, ACM/ICPC NEERC 2005, UVa1590) 可以用一个网络地址和一个子网掩码描述一个子网(即连续的IP地址范围).其中子网 掩码包含32 ...
- 自动化脚本-配置LVS(DR模式)
一,获取所需配置的主机IP cat get_ip.sh #!/bin/bash #将获得到的IP地址写进IP.txt >ip.txt #将原有的hosts信息清除 >/root/.ssh/ ...
- linux LVS (keepalived+ipvsadm)负载均衡搭建
ipsvadm 配置 一:安装配置 LVS+DR+Keepalivedclient 访问的地址 VIP 192.168.133.100 负载服务器master真实IP 192 ...
- 如何使用VMware安装rhel6.4操作系统(详细步骤)
第一步,打开VMwareWorkStation11创建新的虚拟机.如下图所示. 第二步,点击文件,然后选新建虚拟机.,新建虚拟机向导,选择自定义. 第三步,选择虚拟机硬件兼容性.选择WorkStati ...
- flum到kafka 收集数据 存储到redis 案例 (ip.txt)
ip.scala package ip import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.kafka. ...
- bugkuCTF-管理员系统(IP伪造)
题目地址:http://123.206.31.85:1003/ 登进去是一个管理员后台登录的样子 试了sql的万能密码,发现进不了,而且下面还报错了ip禁止 禁止了我们的ip,但是他本地的ip肯定没有 ...
- centos7部署phpipam(ip管理系统)
安装必要的软件 yum install httpd mariadb-server php php-cli php-gd php-common php-ldap php-pdo php-pear php ...
随机推荐
- 单字节的FIFO缓存(30天自制操作系统--读书笔记)
从今天起,写一些读书笔记.最近几个月都在看<30天自制操作系统这本书>,书虽说看的是电子书,但可以花钱买的正版书,既然花费了金钱,就总得有些收获. 任何人都不能总是固步自封,想要进步就得学 ...
- 转:zip版Tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决
源地址:http://www.iflym.com/index.php/code/zip-tomcat67-can-not-register-windows-services-resolve.html ...
- Android自定义控件实现带有清除按钮的EditText
首先声明我也是参考了别人的思路,只是稍微做了下修改,增加显示密码与隐藏密码,没有输入字符串时让EditText进行抖动,废话少说这里附上效果图 效果很赞有木有 那么怎么实现这种效果呢?那就跟着我一起来 ...
- android按压背景
android:background="?android:actionBarItemBackground"
- Redis和StackExchange.Redis
redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库以整数表示的号码.redisDb.dict 存储着该 ...
- I.MX6 MAC Address hacking
/************************************************************************** * I.MX6 MAC Address hack ...
- BZOJ_1492_[NOI2007]货币兑换Cash_CDQ分治+斜率优化
BZOJ_1492_[NOI2007]货币兑换Cash_CDQ分治+斜率优化 Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券 ...
- 「LuoguP1145」 约瑟夫(打表
Description n 个人站成一圈,从某个人开始数数,每次数到 m 的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人, k 个好人站在一起, k 个坏人站在一起.从第一个好 ...
- angularJS ng-if的用法
ng-if主要是用来判断是否显示,也可以做为而者选择其中一个的方法,满足判断条件ng-if="变量名" 显示,否者不显示,也可以用ng-if="!变量名"取反, ...
- angularJS 的双向数据绑定
input 里面的vale="变量名";加上ng-model="变量名";控制器的变量名会根据视图层的数据改变而改变,而渲染内容也会根据控制器里面的变量改变而改 ...