LVS应用

一、NAT模式搭建实战

1.给nat机新添加一块网卡

[root@nat ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="ens36"
NAME="ens36"
UUID="d0f9b80a-e098-3e1f-9ec3-0a502b1ed00e"
ONBOOT="yes"
IPADDR=192.168.60.10

-A    添加虚拟服务器    
-t    设置群集地址(VIP,Virtual IP)  tcp/udp    
-s    指定负载调度算法(rr|wrr|Ic|w|c|sh...)
-a    添加真实服务器    
-d            删除真实服务器
-r    指定真实服务器(Real Server)的地址    
-m    使用NAT模式;-g、-i分别对应DR、TUN模式    
-w    为节点服务器设置权重,默认为1

2.设置规则

[root@nat ~]# ipvsadm -A -t 192.168.60.10:80 -s rr                   //rr为轮询
[root@nat ~]# ipvsadm -a -t 192.168.60.10:80 -r 192.168.1.151:80 -m                     //添加真实服务器web1
[root@nat ~]# ipvsadm -a -t 192.168.60.10:80 -r 192.168.1.154:80 -m                     //添加真实服务器web2
[root@nat ~]# ipvsadm -Ln                      //查看集群规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.60.10:80 rr
  -> 192.168.1.151:80              Masq    1      0          0         
  -> 192.168.1.154:80              Masq    1      0          0  

[root@nat ~]# vim /etc/sysctl.conf                          //设置ip转发
net.ipv4.ip_forward=1
[root@nat ~]# sysctl -p                                //这里显示设置生效
net.ipv4.ip_forward = 1

3.设置rs网关

web1
[root@web1 ~]# route del default                                   //清除
[root@web1 ~]# route add default gw 192.168.1.156              //临时修改网关,重启以后就会失效,网关必须指向dip


web2
[root@web2 ~]# route del default                                   //清除
[root@web2 ~]# route add default gw 192.168.1.156              //临时修改网关

4.客户机访问

[root@client ~]# curl 192.168.60.10
i am web1
[root@client ~]# curl 192.168.60.10
i am web2

二、NAT模式脚本:

1.ds(负载均衡服务器nat)

#!/bin/bash
#配置网卡
echo TYPE="Ethernet" >> /etc/sysconfig/network scripts/ifcfg-ens36
echo BOOTPROTO="none" >> /etc/sysconfig/network scripts/ifcfg-ens36
read -p "router name:" router_name
echo NAME='"$rount_name"' >> /etc/sysconfig/network scripts/ifcfg-ens36
uuidkey=$( uuidgen )
echo UUID='"$uuidkey"' >> /etc/sysconfig/networkscripts/ifcfg-ens36 >> /etc/sysconfig/networkscripts/ifcfg-ens36
echo DEVICE='"$rount_name"' >> /etc/sysconfig/networkscripts/ifcfg-ens36
echo ONBOOT="yes" >> /etc/sysconfig/network-scripts/ifcfgens36
echo IPADDR=192.168.10.100 >> /etc/sysconfig/networkscripts/ifcfg-ens36
systemctl restart network
#安装ipvsadm
yum list installed|grep ipvsadm
if[ $? -ne 0 ];then
yum -y install ipvsadm
fi
#配置规则
read -p "vip:" vip
read -p "port:" port
read -p "rule:" s
ipvsadm -A -t $vip:$port -s $s
# ip forward
echo "net.ipv4.ip_forward=1" >/etc/sysctl.conf
sysctl -p


2.rs(真实服务器web1,web2)

#!/bin/bash
read -p "dip:" dip
# 设置网关
route del default
route add defualt gw $dip

三、DR模式

1.性能更优,回路不再经过ds
2.ds和rs为了保证用户响应,都要求配置统一的vip
3.由于rs是直接响应client,网关一定不能设置为ds 的dip
4.对rs的vip进行抑制,让ds的vip接收请求,rs的vip不接受请求
5.rs的vip绑定点lo回路网卡上

四、DR模式搭建实战

重新创建一台主机作ds,只有一张网卡

1.在ds的ens33上挂一个vip 192.168.1.73

[root@dr ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.72  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::b033:7647:1a91:ed98  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::c4fe:4bf0:5e0f:f6d7  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::83ce:d56f:781b:b691  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:c3:2a  txqueuelen 1000  (Ethernet)
        RX packets 1025  bytes 80625 (78.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 493  bytes 48832 (47.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 32  bytes 2592 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@dr ~]# ifconfig ens33:0 192.168.1.73 broadcast 192.168.1.73 netmask 255.255.255.255 up
[root@dr ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.72  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::b033:7647:1a91:ed98  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::c4fe:4bf0:5e0f:f6d7  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::83ce:d56f:781b:b691  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:c3:2a  txqueuelen 1000  (Ethernet)
        RX packets 1275  bytes 104159 (101.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 653  bytes 67306 (65.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 19  base 0x2000  

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.73  netmask 255.255.255.255  broadcast 192.168.1.73
        ether 00:0c:29:ef:c3:2a  txqueuelen 1000  (Ethernet)
        device interrupt 19  base 0x2000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 32  bytes 2592 (2.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 32  bytes 2592 (2.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@dr ~]# route add -host 192.168.1.73 dev ens33:0
192.168.1.72 dip
192.168.1.73 vip  在rs上的vip和这个vip相同


 2.设置规范

[root@dr ~]# ipvsadm -A -t 192.168.1.73:80 -s rr
[root@dr ~]# ipvsadm -a -t 192.168.1.73:80 -r 192.168.1.151:80 -g
[root@dr ~]# ipvsadm -a -t 192.168.1.73:80 -r 192.168.1.154:80 -g
[root@dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.73:80 rr
  -> 192.168.1.151:80              Route   1      0          0         
  -> 192.168.1.154:80              Route   1      0          0   


3.设置rs(web1,web2)主机

1)在lo接口上绑定vip

[root@web1 ~]# ifconfig lo:0 192.168.1.73 broadcast 192.168.1.73 netmask 255.255.255.255 up

2)设置主机路由

[root@web1 ~]# route add -host 192.168.1.73 dev lo:0

3)抑制rs接受请求

[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web1 ~]# nginx


4)生成脚本,在web2执行

[root@web2 ~]# vim x.sh
#!/bin/bash
ifconfig lo:0 192.168.1.73 broadcast 192.168.1.73 netmask 255.255.255.255 up
route add -host 192.168.1.73 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web2 ~]# source x.sh 
[root@web2 ~]# nginx


4.去ds测试,查看状态

[root@dr ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.73:80                     0        0        0        0        0
  -> 192.168.1.151:80                     0        0        0        0        0
  -> 192.168.1.154:80                     0        0        0        0        0

5.去客户机测试(别忘记开启rs的nginx服务)

[root@client ~]# curl 192.168.1.73
i am web1
[root@client ~]# curl 192.168.1.73
i am web2

6.再次去ds查看状态

[root@dr ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.73:80                     9       43        0     2412        0
  -> 192.168.1.151:80                     4       21        0     1176        0
  -> 192.168.1.154:80                     5       22        0     1236        0


五、dr模式脚本:

1.ds

#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip
read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask
255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num
#安装ipvsadm
yum list installed|grep ipvsadm
if [ $? -ne 0 ] ; then
yum -y install ipvsadm
fi
#配置规则(不需要设置ip_forword)
ipvsadm -C
read -p "rule:" rule
read -p "port:" port
ipvsadm -A -t $vip:$port -s $rule
read -p "rip1:" rip1
ipvsadm -a -t $vip:$port -r $rip1 -g
read -p "rip2:" rip2
ipvsadm -a -t $vip:$port -r $rip2 -g


2.rs

#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip
read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask
255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
 

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值