- 查看内核是否具有
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
,GIP
为192.168.10.100
;RIP1
为192.168.10.1
,RIP2
为192.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 Server
的IP
地址 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)
- 查看监控的状态