lvs群集

12 篇文章 0 订阅

lvs群集


1. lvs介绍

集群简单来说就是多台主机做同一件事,在付出较低成本的情况下获得性能、可靠性、灵活性方面的相对较高的收益


2. l4:四层交换,四层路由:

根据请求报文的目标IP和PORT将其转发至后端主机集群中的某一台主机(根据挑选算法)


3. lvs类型
  • lvs-nat模式
  • dr,默认模式
  • lvs-tun隧道模式

4. 算法
  1. lvs scheduler:lvs调度器

    1. 静态方法

      仅根据算法本身进行调度

    2. 动态方法

      根据算法及各RS的当前负载状态进行调度

  2. ipvs的集群服务

    支持TCP(port),UDP,AH,EST,AH_EST,SCTP等协议


5. 部署nat模式
主机名IP地址服务器
lvs192.168.10.101
192.168.211.132
调度器
rs1192.168.10.102服务器1
rs2192.168.10.103服务器2

在lvs上添加nat模式网卡,配置IP地址

[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:39:99:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe39:9951/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:39:99:5b brd ff:ff:ff:ff:ff:ff
    inet 192.168.211.132/24 brd 192.168.211.255 scope global dynamic noprefixroute ens192
       valid_lft 1748sec preferred_lft 1748sec
    inet6 fe80::4422:d156:b340:e10f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@lvs ~]# 
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# cp ifcfg-ens160 ifcfg-ens192
[root@lvs network-scripts]# ls
ifcfg-ens160  ifcfg-ens192
[root@lvs network-scripts]# vim ifcfg-ens192
TYPE=Ethernet
BOOTPROTO=static
NAME=ens192
DEVICE=ens192
ONBOOT=yes
IPADDR=192.168.211.132
NETMASK=255.255.255.0
DNS1=114.114.114.114
[root@lvs network-scripts]# ifdown ens192;ifup ens192
[root@lvs ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

配置rs1IP地址

[root@rs1 ~]# cd /etc/sysconfig/network-scripts/
[root@rs1 network-scripts]# vim ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
ONBOOT=yes
DEVICE=ens160
IPADDR=192.168.10.102
NETMASK=255.255.255.0
GATEWAY=192.168.10.101
DNS1=114.114.114.114
[root@rs1 network-scripts]# ifdown ens160;ifup ens160

[root@rs1 ~]#  ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:96:20:36 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.102/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe96:2036/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@rs1 ~]# dnf -y install httpd
[root@rs2 ~]# systemctl start httpd
[root@rs1 ~]# cd /var/www/html/
[root@rs1 html]# echo 'test-1.example.com' > index.html

配置rs2IP地址

[root@rs2 ~]# cd /etc/sysconfig/network-scripts/
[root@rs2 network-scripts]# vim ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.103
NETMASK=255.255.255.0
GATEWAY=192.168.10.101
DNS1=114.114.114.114
[root@rs2 network-scripts]# ifdown ens160;ifup ens160

[root@rs2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:31:cf:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.103/24 brd 192.168.10.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe31:cfcc/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

[root@rs2 ~]# dnf -y install httpd
[root@rs2 ~]# systemctl start httpd
[root@rs2 ~]# cd /var/www/html/
[root@rs2 html]# echo 'test-2.exampe.com' > index.html
[root@lvs ~]# dnf -y install ipvsadm
[root@lvs ~]# ipvsadm -A -t 192.168.211.132:80 -s rr
[root@lvs ~]# ipvsadm -a -t 192.168.211.132:80 -r 192.168.10.102 -m
[root@lvs ~]# ipvsadm -a -t 192.168.211.132:80 -r 192.168.10.103 -m

在这里插入图片描述

在这里插入图片描述

6. 配置dr模式

恢复快照后

[root@lvs ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.10.101
NETMASK=255.255.255.0
IPADDR1=192.168.211.140
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=114.114.114.114
[root@lvs ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:92:a3:46 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.101/24 brd 192.168.80.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.211.140/24 brd 192.168.80.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe92:a346/64 scope link 


[root@rs1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.102
PREFIX=24
GATEWAY=192.168.10.2
DNS1=114.114.114.114


[root@rs1 ~]# dnf -y install httpd net-tools
[root@rs1 ~]# echo 'rs1.example.com' > /var/www/html/index.html
[root@rs1 ~]# systemctl enable --now httpd


[root@rs1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


[root@rs1 ~]# ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up
[root@rs1 ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.102  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe96:2036  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:96:20:36  txqueuelen 1000  (Ethernet)
        RX packets 706  bytes 56193 (54.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 598  bytes 97751 (95.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.250  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)


[root@rs1 ~]# route add -host 192.168.10.250 dev lo:0
[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@rs2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.103
PREFIX=24
GATEWAY=192.168.10.2
DNS1=114.114.114.114


[root@rs2 ~]# dnf -y install httpd net-tools
[root@rs2 ~]# echo 'rs2.example.com' > /var/www/html/index.html
[root@rs2 ~]# systemctl enable --now httpd


[root@rs2 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


[root@rs2 ~]# ifconfig lo:0 192.168.10.250/32 broadcast 192.168.10.250 up
[root@rs2 ~]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.103  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe31:cfcc  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:31:cf:cc  txqueuelen 1000  (Ethernet)
        RX packets 714  bytes 58051 (56.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 572  bytes 96349 (94.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.10.250  netmask 0.0.0.0
        loop  txqueuelen 1000  (Local Loopback)


[root@rs2 ~]# route add -host 192.168.10.250 dev lo:0
[root@rs2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 lo
# 配置dip
[root@lvs ~]# dnf -y install net-tools ipvsadm
[root@lvs ~]# cd /etc/sysconfig/network-scripts/
[root@lvs network-scripts]# ls
ifcfg-ens160
[root@lvs network-scripts]# vim ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=static
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.10.101
PREFIX=24
GATEWAY=192.168.10.2
DNS1=114.114.114.114
[root@lvs network-scripts]# ifdown ens160;ifup ens160


# 配置vip
[root@lvs network-scripts]# ifconfig ens160:0 192.168.10.250/32 broadcast 192.168.10.250 up
[root@lvs network-scripts]# ifconfig 
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.101  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::20c:29ff:fe39:9951  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:39:99:51  txqueuelen 1000  (Ethernet)
        RX packets 12037  bytes 15009559 (14.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6478  bytes 438552 (428.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens160:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.250  netmask 0.0.0.0  broadcast 192.168.10.250
        ether 00:0c:29:39:99:51  txqueuelen 1000  (Ethernet)

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 16  bytes 1360 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 1360 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@lvs ~]# route add -host 192.168.10.250 dev ens160:0
[root@lvs ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.2    0.0.0.0         UG    100    0        0 ens160
192.168.10.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.10.250  0.0.0.0         255.255.255.255 UH    0      0        0 ens160

[root@lvs ~]# ipvsadm -A -t 192.168.10.250:80 -s wrr
[root@lvs ~]# ipvsadm -a -t 192.168.10.250:80 -r 192.168.10.102 -g
[root@lvs ~]# ipvsadm -a -t 192.168.10.250:80 -r 192.168.10.103 -g
[root@lvs ~]# 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.10.250:80 wrr
  -> 192.168.10.102:80            Route   1      0          0         
  -> 192.168.10.103:80            Route   1      0          0       


[root@lvs ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.10.250:80 -s wrr
-a -t 192.168.10.250:80 -r 192.168.10.102:80 -g -w 1
-a -t 192.168.10.250:80 -r 192.168.10.103:80 -g -w 1

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值