一、LVS(NAT模式)搭建过程
一、实验准备
准备四台虚拟机,一台测试机,一台路由器+调度器,两台apache服务器,配置两个不同的网段。
测试机:192.168.152.14
路由+调度器:192.168.152.11
192.168.11.11
应用服务器:192.168.11.12
应用服务器:192.168.11.13
关闭防火墙及SELinux
阶段测试,用ping命令测试网络是否可达。
二、LVS(DR模式)搭建过程
- 配置网络环境
1、根据网络环境配置每台虚拟机的IP地址,网关,并连接xshell。
#配置路由的IP并开启路由转发功能
$ vim /etc/sysctl.conf
net.ipv4.ip_forward = 0 #将0改为1
$ sysctl -p
- 两台真实服务器上安装apache
1.1 RS1:
1.1.1安装配置apache
$ yum -y install httpd
$ cd /var/www/html
$ echo "apache111" > index.html
$ systemctl restart httpd
$ systemctl enable httpd
1.1.2配置lo子网卡,目的是为了客户机提供目标IP以及回复客户机信息的源IP
$ cd /etc/sysconfig/network-scripts/
$ cp -a ifcfg-lo ifcfg-lo:0
$ vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.11.200 #VIP集群的ip
NETMASK=255.255.255.255
$ systmctl restart network
1.1.3优化配置调整内核参数(ARP防止两个真实服务器lo:0IP冲突)
$ vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1 #忽略MAC地址与IP地址在arp解析里面不是绑定关系
net.ipv4.conf.all.arp_announce = 2 #响应级别
#新增前面这两行即可
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
$ sysctl -p
1.1.4添加路由策略,以便lo:0网卡回复客户端的信息可以通过服务器网卡
$ route add -host 192.168.11.200 dev lo:0
1.1.5由于是临时添加,所以需要将此命令添加至/etc/rc.local文件中,以便开机启动
$ vim /etc/rc.local
route add -host 192.168.20.100 dev lo:0
1.2 RS2:
1.2.1安装配置apache
$ yum -y install httpd
$ cd /var/www/html
$ echo "apache222" > index.html
$ systemctl restart httpd
$ systemctl enable httpd
$ curl localhost
1.2.2配置lo子网卡
$ cd /etc/sysconfig/network-scripts/
$ cp -a ifcfg-lo ifcfg-lo:0
$ vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.20.100 #VIP
NETMASK=255.255.255.255
$ systmctl restart network
1.2.3优化配置调整内核参数(ARP防止两个真实服务器lo:0IP冲突)
$ vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2 #新增这两行即可
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
$ sysctl -p
1.2.4#添加路由策略,以便lo:0网卡回复客户端的信息可以通过服务器网卡
$ route add -host 192.168.11.200 dev lo:0
1.2.5由于是临时添加,所以需要将此命令添加至/etc/rc.local文件中,以便开机启动
$ vim /etc/rc.local
route add -host 192.168.11.200 dev lo:0
1.3 阶段测试,用客户机测试
$ curl 192.168.11.130
$ curl 192.168.11.140
2、配置负载调度器
2.1 安装用户管理工具,ipvsadm,进行创建、管理集群
$ yum -y install ipvsadm
2.2 关闭路由重定向(避c免做目标IP地址转换,使用LVS自带的进行MAC地址重定向)
$ vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0 #关闭所有路由重定向,选择all这一条即可,
net.ipv4.conf.default.send_redirects = 0 #关闭默认的路由重定向
net.ipv4.conf.eth0.send_redirects = 0 #关闭eth0网卡路由重定向
$ sysctl –p
2.3创建集群并管理成员
$ ipvsadm -A -t 192.168.11.200:80 -s rr
$ ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.130:80 -g
#-g表示DR模式
$ ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.140:80 -g
$ipvsadm -ln #查看集群
$ipvsadm-save -n >> /root/cluster.txt #形成集群文件
$ipvsadm -D -t 192.168.11.200:80 #删除集群
$ipvsadm-restore < /root/cluster.txt #读取集群文件,重新加载会=回来
2.4 登录测试机进行阶段测试,测试集群VIP
3、配置路由器
#路由器上设置的防火墙规则:
$ iptables -t nat -A PREROUTING -i ens33 -d 192.168.10.110 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.200:80
#规则的位置
-t nat #指定规则写在哪张表里
-A PREROUTING #-A 追加一条规则;链名:路由前,作为判断时机
#判断条件
-i ena33 #判断数据包的入站网卡{-i=input | -o=output}
-d IP地址 #判断数据包的源地址或目标地址{d=目标地址|s=源地址}
-p 协议 #判断此数据包是什么类型协议进行的传输
--dport 端口 #判断数据的目标端口或源端口{--sport | --dport}
注意事项:协议可以独立作为一个判断条件,但是端口不可以,端口一般伴随着协议一起写
#判断后对数据的处理方案
-j DNAT #数据包的一种处理方案{ACCEPT | REJECT | DROP | DNAT(目标地址转化) | SNAT |... }
SNAT|DNAT 还会有特殊的后续选项,指明转换后的地址
$ iptables -t nat -n -L #查看是否添加成功,查看nat表的防火墙规则
4、登录测试机测试,测试ip地址为路由器写入防火墙规则的IP地址
常见故障排除
故障表现:做完实验测试,报错没有到达主机的路由
解决方案:可能是由于网卡和子网卡在LVS中优先级造成的,可以将两个网卡配置文件中的IP调换一下,重启网卡就可以解决
1、集群命令
ipvsadm 命令
查看集群:
ipvsadm -ln
-l #list列出
-n #数字化显示
创建集群:
ipvsadm -A -t VIP:port -s 算法
-A #创建集群
-t #条件判断:判断数据包的传输协议是否是tcp
#ip和port也是数据包的过滤条件
-s #指定集群的调度算法
添加应用服务器:
ipvsadm -a -t VIP:port -r RIP:port -m|-g -w num
-a #向已存在集群内添加应用服务器
-r #指定真实服务器的地址(ip和端口)
-m #lvs工作模式为NAT
-g #lvs工作模式为DR
-w #当调度算法为wrr时,需要使用-w指定权重
删除集群:
ipvsadm -D -t VIP:port
-D #删除集群,以及集群内的应用服务器
删除集群内的指定应用服务器:
ipvsadm -d -t VIP:port -r RIP:port
-d #删除集群内应用服务器
修改集群参数:
ipvsadm -E -t VIP:port -s wrr
-E #修改集群的算法
修改集群中应用服务器的参数:
ipvsadm -e -t VIP:port -r RIP:port -g|-m -w num
-e #修改指定真实服务器的工作模式或权重
2、防火墙命令
iptables 命令
匹配位置:
两表
nat
filter
五链
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
匹配条件:
按网络地址匹配:
-s #匹配数据包的来源地址
-d #匹配数据包的目标地址
按照端口匹配:
--sport #匹配数据包的来源端口
--dport #匹配数据包的目标端口
按照协议类型匹配:
-p icmp|tcp|udp #匹配数据包传输时使用的协议类型
注意事项:编写规则时,协议可以单独出现,端口必须和协议配合生效,并且协议在端口条件之前。
按照网络接口匹配:
-i #匹配数据包的入站接口
-o #匹配数据包的出站接口
执行策略:
ACCEPT #放行
REJECT #拒绝
DROP #丢弃
DNAT #目标地址转换策略
--to-destination
SNAT #源地址转换策略
--to-source