实验环境
虚拟机名称 | 作用 | IP |
---|---|---|
server1 | lvs | 172.25.254.1 |
server2 | RS1 | 172.25.254.2 |
server3 | RS2 | 172.25.254.3 |
VIP为:172.25.254.100
测试服务:Http 端口:80
物理机为客户端
1. 配置DS
在server1上:
安装 ipvsadm ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。
yum install ipvsadm -y
查看lvs编写的策略:
ipvsadm -l #若速度比较慢可以使用-ln选项
添加策略:
-
ipvsadm
-A
-t 172
.25
.254
.100
:80
-s
rr
#-t表示
TCP协议的虚拟服务,
-s指定策略为轮询
-
ipvsadm
-a
-t 172
.25
.254
.100
:80
-r 172
.25
.63
.2
:80
-g #添加
RS指定并端口,
-g表示为
DR模式
-
ipvsadm
-a
-t 172
.25
.254
.100
:80
-r 172
.25
.63
.3
:80
-g #添加另外一台
RS
添加后查看规则:
-
[
root@server1
~]
# ipvsadm -l
-
IP
Virtual
Server
version
1.2
.1
(size=4096)
-
Prot
LocalAddress:Port
Scheduler
Flags
-
->
RemoteAddress:Port
Forward
Weight
ActiveConn
InActConn
-
TCP
172.25
.254
.100
:http
rr
-
->
server2:http
Route
1
0
0
-
->
server3:http
Route
1
0
0
为DS添加VIP:
ip addr add 172.25.254.100/32 dev eth0 #子网掩码可以为32,也可以为24
ipvs命令的选项:
-A 添加一个虚拟服务,使用ip地址、端口号、协议来唯一定义一个虚拟服务
-E 编辑一个虚拟服务
-D 删除一个虚拟服务
-C 清空虚拟服务列表
-R 从标准输入中还原虚拟服务列表
-S 保存虚拟服务规则至标准输出,输出规则可使用-R选项还原
-L 显示虚拟服务列表
-Z 虚拟服务器列表计数器清零(清空当前连接数)
-a 添加一台真实服务器
-e 编辑一台真实服务器
-d 减少一台真实服务器
-t 使用TCP服务,该参数后需加主机与端口信息
-u 使用UDP服务,该参数后需加主机与端口信息
-s 指定lvs的调度算法
-r 设置真实服务器IP与端口
-g 设置lvs工作模式为DR直连路由
-i 设置lvs工作模式为TUN隧道
-m 设置lvs工作模式为NAT地址转换模式
-w 指定真实服务器权重
-c 连接状态,配和-L使用
-n 数字格式显示
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–set tcp tcpfin udp
设置ipvs连接超时值,三个参数分别代表tcp会话超时时间、收到FIN包后tcp会话超时时间、udp超时时间
–timeout 显示tcp tcpfin udp的timeout值
–start-daemon
启动同步守护进程
–stop-daemon
停止同步守护进程
2.配置RS
server2和server3上:
添加VIP:
ip addr add 172.25.254.100/32 dev eth0 #子网掩码可以为32,也可以为24
为 server2 配置apache服务:
-
[root@server2 html]
# yum install -y httpd
-
[root@server2 html]
# cd /var/www/html/
-
[root@server2 html]
# vim index.html
-
[root@server2 html]
# cat index.html
-
server2
-
[root@server2 html]
# systemctl start httpd
为 server3 配置apache服务:
-
[root@server2 html]
# yum install -y httpd
-
[root@server2 html]
# cd /var/www/html/
-
[root@server2 html]
# vim index.html
-
[root@server2 html]
# cat index.html
-
server3
-
[root@server2 html]
# systemctl start httpd
3.为RS配置arptables
首先需要先了解APR协议:ARP协议详解(https://blog.csdn.net/qq_35887546/article/details/104425939),由于server 1 2 3均有VIP,由ARP协议可知,apr请求将会在局域网内广播, 此配置arptables的作用是当客户端访问VIP时,让其访问DS而不是RS
也可通过修改内核参数实现,此处使用arptables
在server2 上:
-
yum
install
-y
arptables-0
.0
.4-8
.el7
.x86_64
-
arptables
-nL #查看策略
-
arptables
-A
INPUT
-d 172
.25
.254
.100
-j
DROP #添加策略,将目的地址为172
.25
.254
.100的
arp请求丢弃
-
arptables
-A
OUTPUT
-s 172
.25
.254
.100
-j
mangle
--mangle-ip-s 172
.25
.63
.2 #将源
ip为
VIP的
arp响应的源
IP改成
RS的
IP
策略配置完成查看策略:
-
[root@server2 html]
# arptables -nL
-
Chain INPUT (policy ACCEPT)
-
-j
DROP -d
172.25
.63
.100
-
-
Chain
OUTPUT (
policy
ACCEPT)
-
-j mangle -s
172.25
.254
.100
--mangle-ip-s 172.25.254.2
-
-
Chain FORWARD (
policy
ACCEPT)
在server3 上做同样的操作:
-
yum
install
-y
arptables-0
.0
.4-8
.el7
.x86_64
-
arptables
-nL #查看策略
-
arptables
-A
INPUT
-d 172
.25
.254
.100
-j
DROP #添加策略,将目的地址为172
.25
.63
.100的
arp请求丢弃
-
arptables
-A
OUTPUT
-s 172
.25
.254
.100
-j
mangle
--mangle-ip-s 172
.25
.254
.3 #将源
ip为
VIP的
arp响应的源
IP改成
RS的
IP
4.测试
在客户端(物理机)上:
-
[
kiosk@foundation63
~]
$
curl
172.25
.254
.100
-
server2
-
[
kiosk@foundation63
~]
$
curl
172.25
.254
.100
-
server3
-
[
kiosk@foundation63
~]
$
curl
172.25
.254
.100
-
server2
-
[
kiosk@foundation63
~]
$
curl
172.25
.254
.100
-
server3
-
[
kiosk@foundation63
~]
$
curl
172.25
.254
.100
-
server2
-
[
root@server1
~]
# ipvsadm -l
-
IP
Virtual
Server
version
1.2
.1
(size=4096)
-
Prot
LocalAddress:Port
Scheduler
Flags
-
->
RemoteAddress:Port
Forward
Weight
ActiveConn
InActConn
-
TCP
server1:http
rr
-
->
server2:http
Route
1
0
2
-
->
server3:http
Route
1
0
2