集群LVS搭建

本文详细介绍了LVS集群的配置过程,包括负载均衡器、真实服务器和数据共享存储,重点讲解了NAT、DR和TUN模式的工作原理,以及常用的调度算法。通过实例演示了如何设置VIP、DIP和RIP,以及在不同场景下配置和测试LVS集群。
摘要由CSDN通过智能技术生成

1、集群分类
        高性能计算集群HPC  复杂科学问题
         负载均衡LB  用于访问量多
         高可用HA   避免单点故障
LVS集群组成
 前端 --负载均衡  调度器(Director Server)
 中间 --服务器群  实际运行应用真实服务器(Real Server)
 底端 --数据共享存储层  提高存储的区域 
  VIP公布给用户访问
  DIP 调度器连接后端节点服务器的IP
  RIP 真实IP 集群节点使用的IP

工作原理:转发+NAT


代理原理,如下图

     

  LVS不是代理 是负载转发服务器 LVS必须配网关  同网段直通
工作模式

    NAT模式--适用于中小规模集群  缺点:访问量大会出现网卡
    DR 模式  --直连路由 返回数据不经过调度器 适用于大规模集群
    TUN模式--  隧道模式  调度器和服务器不在一起   (VPN)

      LVS支持十中调度算法 常用四种
  1、轮询 (Round Robin)
  2、加权轮询  (Weighted Round Robin)
  3、最少连接   (Least Connections)
  4、加权最少连接  (Weighted  Least Connections)

其他六种
1、源地址散列 --Source Hashing
 2、目标地址散列 -- Destination Hashing
 3、基于局部性的最少连接
 4、带复制的基于局部性的最少连接
 5、最短期望的延迟
 6、最少队列调度

部署LVS-NAT集群
1、关闭web1,2 4网段
 nmtui --关闭4网段
安装http,将防火墙和SELinux设置信任所有
[root@web1 ~]# yum -y install httpd        #安装软件
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html    #创建网页文件
[root@web1 ~]# firewall-cmd --set-default-zone=trusted            #设置防火墙
[root@web1 ~]# setenforce  0 设置SELinux
web2 操作同上
 然后到proxy上访问测试
[root@proxy ~]# curl http://192.168.2.100
192.168.2.100
[root@proxy ~]# curl http://192.168.2.200
192.168.2.200

2、配置网关
[root@web1 ~]# nmcli connection modify eth1 ipv4.method manual ipv4.gateway 192.168.2.5    #配置网关2.5
[root@web1 ~]# nmcli connection up eth1      #激活
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@web1 ~]# ip route show     #查看
default via 192.168.2.5 dev eth1 proto static metric 100
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.100 metric 100
web2 操作同上

3、在proxy开启路由
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@proxy ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@proxy ~]# echo "net.ipv4.ip_forward =1" >>/etc/sysctl.conf
4.创建调度器
[root@proxy ~]# yum -y install ipvsadm
[root@proxy ~]# ipvsadm -A -t 192.168.4.5:80 -s wrr
[root@proxy ~]# 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.4.5:80 wrr

 -s后面指定调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等等

添加真实主机
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.100 -w 1 -m
[root@proxy ~]# ipvsadm -a -t 192.168.4.5:80 -r 192.168.2.200 -w 1 -m
[root@proxy ~]# 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.4.5:80 wrr
  -> 192.168.2.100:80             Masq    1      0          0
  -> 192.168.2.200:80             Masq    1      0          0
到客户机访问测试
[root@client ~]# curl 192.168.4.5
192.168.2.200
[root@client ~]# curl 192.168.4.5
192.168.2.100

IPvsadm 命令选项

(临时)
[root@proxy ~]# ipvsadm -D -t 192.168.4.5:80
[root@proxy ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
永久保存规则
ipvsadm-save -n > /etc/sysconfig/ipvsadm
ipvsadm服务开机自启
systemctl enable ipvsadm

 
清空所有规则     ipvsadm  -C

2、部署LVS-DR集群
调度器两个IP 防止地址冲突
[root@proxy ~]# cd /etc/sysconfig/network-scripts/
[root@proxy network-scripts]# cp ifcfg-有线连接_2 ifcfg-eth0:0
[root@proxy network-scripts]# vim ifcfg-eth0\:0
[root@proxy network-scripts]# cat ifcfg-eth0\:0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.4.15
PREFIX=24

[root@proxy network-scripts]# systemctl restart network
[root@proxy network-scripts]# ip a s
如果看不到两个IP(成功忽略) 如下操作
[root@proxy network-scripts]# systemctl stop NetworkManager
[root@proxy network-scripts]# systemctl restart network
[root@proxy network-scripts]# ip a s
 eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e6:a4:cf brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.5/24 brd 192.168.4.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.4.15/24 brd 192.168.4.255 scope global secondary eth0:0
       valid_lft forever preferred_lft forever

ping测试
[root@client ~]# ping 192.168.4.5
PING 192.168.4.5 (192.168.4.5) 56(84) bytes of data.
64 bytes from 192.168.4.5: icmp_seq=1 ttl=64 time=0.229 ms
[root@client ~]# ping 192.168.4.15
PING 192.168.4.15 (192.168.4.15) 56(84) bytes of data.
64 bytes from 192.168.4.15: icmp_seq=1 ttl=64 time=0.270 ms

web1 配置网络参数
如果之前配置过IP
  nmtui --启用连接--激活4.100的网卡
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@web1 network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
切记不要重启  !!!

这里因为web1也配置与调度器一样的VIP地址,默认肯定会出现地址冲突;
sysctl.conf文件写入这下面四行的主要目的就是访问192.168.4.15的数据包,只有调度器会响应,其他主机都不做任何响应,这样防止地址冲突的问题。
[root@web1 network-scripts]# vim /etc/sysctl.conf

[root@web1 network-scripts]# sysctl -p

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
systemctl restart network
如果重启失败 (成功忽略) 以下操作       systemctl stop NetworkManager
[root@proxy network-scripts]# systemctl restart network
[root@web1 network-scripts]# ip a s
...............
  inet 192.168.4.15/32 brd 192.168.4.15 scope global lo:0
       valid_lft forever preferred_lft forever.................

web2 操作同上

proxy
创建集群
[root@proxy ~]# ipvsadm -C
[root@proxy ~]# ipvsadm -A -t 192.168.4.15:80 -s wrr
[root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.100 -g -w 1
[root@proxy ~]# ipvsadm -a -t 192.168.4.15:80 -r 192.168.4.200 -g -w 1
[root@proxy ~]# 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.4.15:80 wrr
  -> 192.168.4.100:80             Route   1      0          0
  -> 192.168.4.200:80             Route   1      0          0
客户机访问
[root@client ~]# curl http://192.168.4.15
192.168.2.200
[root@client ~]# curl http://192.168.4.15
192.168.2.100

实验排错

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值