LVS 负载均衡集群构建

    科技2024-03-22  89

    负载均衡集群(LBC)

    1.负载均衡集群的概述 所有节点的工作内容一致,做的都是同一件事,互相分担节点服务器的压力。如访问量,单台节点的访问量不能够很好的满足客户端的访问,这个时候,我们就可以增加服务器的数量来解决这个问题,这样就可以很好的提高用户访问的效率

    2.集群中各节点的特点 每台服务器分担集群节点的压力、工作目标明确、工作内容一致、提供的是工作效率

    3.LVS负载均衡集群的分类

    模式工作原理LVS-DR模式又叫直接路由模式,客户端发送一个包含VIP地址的请求到负载调度器上,负载调度器根据算法提交给内网真实服务器处理,然后内网真实服务器直接返回给客户端。唯一的好处就是返回的数据包不经过负载调度器,减轻了负载调度器的压力LVS-NAT模式客户端请求负载调度器,负载调度器根据NAT地址转换功能,将请求发送给内网真实服务器去处理,真实服务处理了之后返回负载调度器,再由负载调度器返回给客户端。整个过程都要经过负载调度器,极大的增加负载调度器的压力

    LVS-DR模式的搭建

    准备工作

    1.准备三台centos 7 的操作系统 2.一台为LVS负载调度器、两台为httpd服务器 3.LVS负载调度器上存在两张网卡,一张内网网卡,主要连接两台httpd服务器的。一张外网,主要和外网进行通信 3.两台httpd服务器存在于内网当中

    关闭防火墙、selinux以及网卡守护进程

    [root@lvs-dr ~]# systemctl stop firewalld [root@lvs-dr ~]# systemctl disable firewalld [root@lvs-dr ~]# vi /etc/selinux/config ...... SELINUX=disabled ...... [root@lvs-dr ~]# setenforce 0 [root@lvs-dr ~]# systemctl stop NetworkManager //关闭网卡守护进程 [root@lvs-dr ~]# systemctl disable NetworkManager 注:所有系统均有执行以上操作

    Lvs-dr 负载调度器的配置

    [root@lvs-dr ~]# vi /etc/sysctl.conf //编辑这个文件 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 [root@lvs-dr ~]# sysctl -p //执行这个生效 [root@lvs-dr ~]# yum install -y ipvsadm //安装ipvsadm软件 [root@lvs-dr ~]# modprobe ip_vs //把ipvsadm加载到内核当中去 [root@lvs-dr ~]# ipvsadm -Ln //查看当前ipvsadm的状态 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn [root@lvs-dr ~]# cd /etc/sysconfig/network-scripts/ //进入网卡配置文件所在的目录 [root@lvs-dr network-scripts]# cp -r ifcfg-ens33 ifcfg-ens33:0 //复制内网网卡作为子网卡 [root@lvs-dr network-scripts]# vi ifcfg-ens33:0 //编辑这张网卡,修改如下的内容 IPADDR=192.168.1.150 //修改IP地址 NAME="ens33:0" //修改名称 #UUID="76ac6300-c65f-4cae-baa5-ca12c5bdcde0" //注释这一行 DEVICE="ens33:0" [root@lvs-dr network-scripts]# systemctl restart network //然后重启网卡即可 [root@lvs-dr network-scripts]# ip a //使用这个命令就可以查看得到我们配置的效果了 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:d8:b0:c3 brd ff:ff:ff:ff:ff:ff inet 192.168.1.10/24 brd 192.168.1.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.1.150/24 brd 192.168.1.255 scope global secondary ens33:0 以上操作完成以后,我们就可以添加集群以及主机了 [root@lvs-dr ~]# ipvsadm -A -t 192.168.1.150:80 -s rr //创建一个集群 [root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.20:80 -g //为集群添加主机 [root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.30:80 -g [root@lvs-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.150:80 rr -> 192.168.1.20:80 Route 1 0 0 -> 192.168.1.30:80 Route 1 0 0 注:-A 创建一个集群 -t 指定VIP 地址 -s 指定算法 rr 代表轮询 -a 添加主机 -g 代表 lvs-dr 模式 优化操作 [root@lvs-dr ~]# ipvsadm -Sn //保存配置 -A -t 192.168.1.150:80 -s rr -a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1 -a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1 [root@lvs-dr ~]# echo "ipvsadm -Sn" >> /etc/sysconfig/ipvsadm //将输出的内容保存到一个文件当中 [root@lvs-dr ~]# ipvsadm -C //清除当前ipvsadm的所有配置 [root@lvs-dr ~]# ipvsadm-restore < /etc/sysconfig/ipvsadm //重新加载配置 [root@lvs-dr ~]# echo "ipvsadm-restore < /etc/sysconfig/ipvsadm" >> /etc/rc.local //加入到开机自启 [root@lvs-dr ~]# ipvsadm -Ln --stats //查看状态 IP Virtual Server version 1.2.1 (size=4096) [root@lvs-dr ~]# [root@lvs-dr ~]# ipvsadm -Sn -A -t 192.168.1.150:80 -s rr -a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1 -a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1

    httpd服务器的配置

    [root@server1 ~]# yum install -y httpd //下载httpd服务器 [root@server1 ~]# systemctl start httpd [root@server1 ~]# systemctl enable httpd [root@server1 ~]# echo "this is server 1" >> /var/www/html/index.html [root@server1 ~]# curl localhost this is server 1 注:两台httpdserver 都要执行以上操作,唯一不同的就是网页的内容,尽量让他们不一样,虽然在真实环境下所有真实服务器的内容都是一致,为了实现实验的效果,只好将他们设置为不一样 以上操作完成以后,在来执行以下操作(两台httpd服务器操作一致) [root@server1 ~]# cd /etc/sysconfig/network-scripts/ //进入网卡配置文件 [root@server1 network-scripts]# cp -r ifcfg-lo ifcfg-lo:0 //复制回环网卡增加一个子网卡 [root@server1 network-scripts]# vi ifcfg-lo:0 //修改这个网卡,修改如下内容 DEVICE=lo:0 IPADDR=192.168.1.150 NETMASK=255.255.255.255 为了访问IP地址方式冲突我们进行修改arp的相应级别操作 [root@server1 network-scripts]# vi /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 [root@server1 network-scripts]# sysctl -p //执行这个生效 [root@server1 ~]# systemctl restart network //重启网卡操作 [root@server1 ~]# 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 inet 192.168.1.150/32 brd 192.168.1.150 scope global lo:0 valid_lft forever preferred_lft forever 然后我们添加一条路由(当来自192.168.1.150的数据都交给lo:0网卡去处理) [root@server1 ~]# route add -host 192.168.1.150 dev lo:0 [root@server1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.1.150 0.0.0.0 255.255.255.255 UH 0 0 0 lo [root@server1 ~]# echo "route add -host 192.168.1.150 dev lo:0" >> /etc/rc.local //写入到开机自动

    验证测试 第一次访问 当我们不断点击刷新按钮时(就会在两个服务器之间来回切换) 负载调度器上查看分担的量

    [root@lvs-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.150:80 6 191 0 52055 0 -> 192.168.1.20:80 3 121 0 34211 0 -> 192.168.1.30:80 3 70 0 17844 0

    以上就是LVS-DR 模式的构建

    LVS-NAT模式的搭建

    我们基于以上的主机来创建,因为我之前拍摄的有快照,所有这里就直接恢复然后进行操作了

    lvs-nat 负载调度器的配置

    [root@lvs-nat ~]# vi /etc/sysctl.conf //编辑这个文件 net.ipv4.ip_forward = 1 //开启路由转发功能 [root@lvs-nat ~]# sysctl -p [root@lvs-nat ~]# yum install -y ipvsadm //安装ipvsadm [root@lvs-nat ~]# ipvsadm -A -t 10.1.1.10:80 -s rr //创建集群并且添加主机 [root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.20:80 -m [root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.30:80 -m [root@lvs-nat ~]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.1.1.10:80 rr -> 192.168.1.20:80 Masq 1 0 0 -> 192.168.1.30:80 Masq 1 0 0 注:这里的集群对外的IP地址为负载调度器上外网卡的IP地址 优化操作 和LVS-DR模式的一致,这里就不写了

    httpd服务器的配置 (两台服务器的操作一致)

    [root@server2 ~]# yum install -y httpd [root@server2 ~]# systemctl start httpd [root@server2 ~]# echo "this is server 1" >> /var/www/html/index.html [root@server2 ~]# curl localhost this is server 1 这里还是一样,两台服务器的内容一致,主要好区分效果 然后我们为两台服务器添加网关,网关指向负载调度器上内网网卡的IP地址 [root@server2 ~]# echo "GATEWAY=192.168.1.10" >>/etc/sysconfig/network-scripts/ifcfg-ens33 [root@server2 ~]# systemctl restart network

    浏览器上测试 第一次访问 第二次访问(不断刷新页面) 至此,负载均衡集群的两种模式就此搭建完成,如有错误,欢迎指出改正

    Processed: 0.013, SQL: 8