Linux系统架构-----LVS应用基础--构建LVS群集

目录

 

一.群集的类型

二.负载均衡的分层结构

三.负载均衡的工作模式

四.LVS的负载调度算法

五.ipvsadm管理工具

六.构建LVS-NAT

七.构建LVS-DR


一.群集的类型

  • 负载均衡群集(Load balance Cluster):以提高应用系统的响应能力、尽可能处理更多的访问请求、以减少延迟为目标,获得高并发、高负载(LB)的整体性能。如“DNS轮询”,“应用层交换”,“反向代理”等都可用作负载均衡群集。LB的负载分配依赖于主节点的分流算法,将客户机的访问请求分担给多个服务器节点,从而解放整个系统的负载压力。
  • 高可用群集(High Availability Cluster):以提高系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。如“故障切换”、“双机热备”、“多机热备”等属于高可用群集技术。
  • 高性能运算群集(High Performance Computer Cluster):以提高应用系统的cpu运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力(HPC)。如“云计算”、“网格计算”也可以视为高性能运算的一种。高性能运算群集的高性能依赖于“分布式运算”和“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现了只用大型、超级计算机才具备的计算能力。

二.负载均衡的分层结构

  • 典型的负载均衡群集中,包括三个层次的组件。前端有一个负载调度器(Load Balancer)负责响应并发来自客户机的访问请求;后端由大量的真实服务器构成服务器池,提供实际的应用服务,整个群集的伸缩性通过增加、删除服务器节点来完成,而这些对于客户机是透明的;而且为保持服务的一致性,所有节点使用共享存储设备

  • 第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP(虚拟IP)地址,也称为群集的IP地址。通常会配置主、备两台调度器实现热备份(下一篇将讲解keepalive实现热备份),当主调度失效以后平滑替换至备用调度器,确保高可用性。
  • 第二层,服务器池:群集所提供的应用服务(如web,ftp)由服务器池承担,其中的每个节点具有独立的RIP(真实IP地址)地址,只处理调度器发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后重新纳入服务器池。
  • 第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(网络文件系统)共享服务的专用服务器

三.负载均衡的工作模式

  • 对于群集的负载调度技术,可以基于IP、端口、内容等进行分发,其中基于IP负载调度的效率是最高的。基于IP的负载均衡模式,常用的有地址转换(NAT)、IP隧道(TUN)和直接路由(DR)
  • 地址转换(NAT):简称NAT模式,类似于防火墙的私有网络结构,负载调度器作为所有服务器点的网关,即作为客户机的访问入口,也是各个节点回应客户机的访问出口。服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。

  • IP隧道:简称为TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各个节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器。服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

  • 直接路由:简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各个节点服务器通过本地网络连接,不需要建立专用的IP隧道

四.LVS的负载调度算法

  • LVS(Linux Virtual Server)是针对Linux内核开发的一个负载均衡项目,LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法
  • LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。
  • 在centos7上,加载ip_vs模块且查看系统中的ip_vs模块信息
[root@mysql1 ~]# modprobe ip_vs    //加载ip_vs模块
[root@mysql1 ~]# cat /proc/net/ip_vs      //查看ip_vs版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@mysql1 ~]#
  • 对于不同的网络服务和配置需要,LVS调度器提供多种不同的负载调度算法,其中包括轮询、加权轮询、最少连接、加权最少连接
  • 轮询(RR):将收到的访问请求按照顺序轮流分配给群集集中的个节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
  • 加权轮询(WRR):根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询个节点的负载情况,并且动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量
  • 最少连接(LC):根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能相近,采用这种方式更好地均衡负载
  • 加权最少连接(WLC):在服务器节点性能差异较大的情况下,可以为真实服务器自动调整权,权重较高的节点将承担更大比例的活动连接负载

五.ipvsadm管理工具

  • ipvsadm是在负载调度器上使用的LVS群集管理工具,通过调度ip_vs模块来添加、删除服务器节点,以及查看群集的运行状态
  • 在centos7系统中,安装ipvsadm软件包
[root@localhost ~]# rpm -q ipvsadm
未安装软件包 ipvsadm 
[root@localhost ~]# yum install ipvsadm -y
  • LVS群集的管理工作主要包括创建虚拟服务器,添加服务器节点、查看群集节点状态、删除服务器节点和保存负载分配策略
  • 创建虚拟服务器,如果VIP地址为192.168.10.100,针对TCP80提供负载分流服务,使用的调度算法为轮询,则对应的ipvsadm命令操作,对于负载均衡服务器来说,VIP必须是本机实际开启用的IP地址。
[root@localhost ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
[root@localhost ~]# 
## -A表示添加虚拟服务器,-t用来指定VIP地址以及TCP端口,
-s用来指定负载调度算法——轮询(rr)、加权轮询(wrr)、最少连接(lc)、加权最少连接(wlc)
  • 添加服务器节点服务器,为虚拟服务器192.168.10.100添加四个服务器节点,IP地址为192.168.43.101,对应的ipvsadm命令操作如下。若希望使用保持连接,还添加“-p 60”选项,其中60为保持时间秒

[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.43.101:80 -m -w 1
[root@localhost ~]# 
##选项-a表示添加真实服务器,-t用来指定VIP(虚拟地址)以及TCP端口,
-r用来指定RIP地址(真实地址)以及TCP端口,
-m表示使用NAT群集模式(-g DR模式和-i TUN模式),
-w用来设置权重(权重为0时,表示暂停节点)
  • 查看群集节点状态,结合选项-l可以列表查看LVS虚拟服务器,可以指定只查看某一个VIP地址(默认查看所有),结合选项-n将以数字形式显示地址、端口等信息
[root@localhost ~]# 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.100:80 rr
  -> 192.168.43.101:80            Masq    1      0          0         
[root@localhost ~]# 
##forwording列下的Masq对应Masquerade(地址伪装),
表示采用的群集模式为NAT;
如果是Route,表示采用的群集模式为DR
  • 删除服务器节点,需要从服务器池中删除某一个节点是,使用选项-d。执行删除操作必须指定目标对象,包括节点地址、虚拟IP地址。
[root@localhost ~]# ipvsadm -d -r 192.168.43.101:80 -t 192.168.10.100:80
[root@localhost ~]# 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.100:80 rr
[root@localhost ~]# 

##此外,需要删除整个虚拟服务器时,使用选项-D并且指定虚拟IP地址就可以,无需指定节点。
##例如,执行 "ipvsadm -D -t 192.168.10.100:80",删除此虚拟服务器
  • 保存负载分配策略,使用导出、导入工具ipvsadm-save/ipvsadm-restore可以保存、恢复LVS策略,操作方法类似iptables规则的导出、导入。通过系统服务ipvsadm也可以保存策略,如可执”service ipvsadm save“;也可以快速清除、重建负载分配策略

[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.43.101:80 -m -w 1
[root@localhost ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@localhost ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.10.100:http -s rr
-a -t 192.168.10.100:http -r localhost.localdomain:http -m -w 1
##使用ipvsadm保存策略

六.构建LVS-NAT

  • 配置环境
类别 IP地址 系统 软件包
LVS调度器

ens33:192.168.43.101/24

esn37:12.0.0.1/24

centos7

ipvsadm
web服务器1 192.168.43.102/24 centos7 httpd
web服务器2 192.168.43.103/24 centos7 httpd
NFS存储服务器 192.168.43.104/24 centos7

rpcbind

nfs-utils

外部客户机 12.0.0.12 win10  
  • 实验拓补图

  • 配置NFS存储服务器(前期博客有具体配置NFS和磁盘阵列的博客)
1.添加两个硬盘,在现网上一般做磁盘阵列
fdisk /dev/sdb
fdisk /dev/sdc
2.格式化磁盘
[root@localhost ~]# mkfs.xfs /dev/sdb1
[root@localhost ~]# mkfs.xfs /dev/sdc1
3.建立挂载点
[root@localhost ~]# mkdir /opt/data /opt/yun
4.在配置文件里面设置自动挂载
[root@localhost ~]# vim /etc/fstab
/dev/sdb1       /opt/data       xfs     defaults        0 0
/dev/sdc1       /opt/yun        xfs     defaults        0 0
5.开启自动挂载
[root@localhost ~]# mount -a
6.查看挂载情况
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        20G  4.5G   16G   23% /
devtmpfs        471M     0  471M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  8.6M  478M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda5        10G   37M   10G    1% /home
/dev/sda1       8.0G  164M  7.9G    2% /boot
tmpfs            98M  4.0K   98M    1% /run/user/42
tmpfs            98M   24K   98M    1% /run/user/0
/dev/sdb1        20G   33M   20G    1% /opt/data
/dev/sdc1        20G   33M   20G    1% /opt/yun
6.关闭安全性功能,设置nfs服务
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/exports
/opt/data       192.168.43.0/24(rw,sync,no_root_squash)
/opt/yun        192.168.43.0/24(rw,sync,no_root_squash)
##rw代表可读写,sync代表同步写入,no_root_squash代表不进行降级处理
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# showmount -e      ##查看共享点的具体情况
Export list for localhost.localdomain:
/opt/yun  192.168.43.0/24
/opt/data 192.168.43.0/24

7.修改网卡为仅主机模式,按拓扑图配置IP地址信息
  • 配置两台web服务器
配置web server 1
1.安装httpd软件包
yum install httpd -y
2.修改网卡信息,关闭安全性功能
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# service network restart 
3.配置主页面信息
cd /var/www/html
echo "<h1><this is data/h1>"
4.查看NFS服务
[root@localhost ~]# showmount -e 192.168.43.104
Export list for 192.168.43.104:
/opt/yun  192.168.43.0/24
/opt/data 192.168.43.0/24
5.设置网络挂载点,将web服务的主页面挂载到NFS服务器上
[root@localhost ~]# vim /etc/fstab
192.168.43.104:/opt/data        /var/www/html   nfs    defaults,_netdev        0 0
[root@localhost ~]# mount -a
6.开启httpd服务
systemctl start httpd

配置web server 2
1.安装httpd软件包
yum install httpd -y
2.修改网卡信息,关闭安全性功能
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# service network restart 
3.配置主页面信息
cd /var/www/html
echo "<h1><this is yun/h1>"
4.查看NFS服务
[root@localhost ~]# showmount -e 192.168.43.104
Export list for 192.168.43.104:
/opt/yun  192.168.43.0/24
/opt/data 192.168.43.0/24
5.设置网络挂载点,将web服务的主页面挂载到NFS服务器上
[root@localhost ~]# vim /etc/fstab
192.168.43.104:/opt/yun        /var/www/html   nfs    defaults,_netdev        0 0
[root@localhost ~]# mount -a
6.开启httpd服务
systemctl start httpd
  • 配置LVS调度器
1.安装ipvsadm工具
yum insatll ipvsadm -y
2.添加双网卡,修改为仅主机模式,修改IP地址信息,不需要网关
#先使用ifconfig查看网卡名称
3.重启网卡
[root@localhost network-scripts]# service network restart 
Restarting network (via systemctl):                        [  确定  ]
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.43.101  netmask 255.255.255.0  broadcast 192.168.43.255
        inet6 fe80::ba30:ef5e:b59f:4f1c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:5f:24  txqueuelen 1000  (Ethernet)
        RX packets 4807  bytes 6504865 (6.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2551  bytes 162985 (159.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 12.0.0.1  netmask 255.255.255.0  broadcast 12.0.0.255
        inet6 fe80::ece2:7d1e:9841:aaa4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ce:5f:2e  txqueuelen 1000  (Ethernet)
        RX packets 31  bytes 3737 (3.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 64  bytes 9975 (9.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
4.开启路由转发功能,添加防火墙规则
##开启路由转发功能
vim /etc/sysctl.conf
#在最后加入
net.ipv4.ip_forward=1
##重新加载
sysctl -p
##清除转发表
iptables -F
#清除nat地址转换表
iptables -t nat -F
#添加防火墙规则帮助转发
iptables -t nat -A POSTROUTING -o ens37 -s 192.168.43.0/24 -j SNAT --to-source 12.0.0.1
5.设置ip_vs模块
##加载LVS内阁模块
modprobe ip_vs
##将命令保存到systemctl列表中
ipvsadm --save > /etc/sysconfig/ipvsadm
6.开启ip_vs模块功能
systemctl start ipvsadm.service
7.编写脚本,设置ip_vs规则
vim /opt/nat.s
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.110:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.111:80 -m
ipvsadm
8.给予权限,执行脚本
chmod +x /opt/nat.sh
##执行脚本
[root@localhost opt]# ./nat.sh 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.43.102:http          Masq    1      0          0         
  -> 192.168.43.103:http          Masq    1      0          0         
[root@localhost opt]# 
  • 将外部客户机改为仅主机模式,IP地址修改为:12.0.0.12,模拟外部客户访问,进行验证

七.构建LVS-DR

  • 配置环境
类型 IP地址 系统 软件包
客户机 12.0.0.12/24 win10  
路由器

ens33:192.168.100.1/24

ens37:12.0.0.1/24

centos7  
LVS调度器

RIP:192.168.100.110/24

VIP:192.168.100.100/24

centos7 ipvsadm
web1

RIP:192.168.43.120/24

VIP:192.168.100.100/24

centos7

httpd

web2

RIP:192.168.43.130/24

VIP:192.168.100.100/24

centos7 httpd
NFS RIP:192.168.43.140/24 centos7

rpcbind

nfs-utils

  • 网络拓补图

  • 配置NFS存储设备
1.添加两块磁盘,创建分区,格式化
[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
2.创建挂载目录
[root@localhost ~]# mkdir /opt/data /opt/yun
3.设置自动挂载
[root@localhost ~]# vim /etc/fstab
/dev/sdb1       /opt/data       xfs     defaults        0 0
/dev/sdc1       /opt/yun        xfs     defaults        0 0
~        
4.开启自动挂载                                                    
[root@localhost ~]# mount -a
5.查看挂载情况
[root@localhost ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        20G  4.5G   16G   23% /
devtmpfs        471M     0  471M    0% /dev
tmpfs           487M     0  487M    0% /dev/shm
tmpfs           487M  8.5M  478M    2% /run
tmpfs           487M     0  487M    0% /sys/fs/cgroup
/dev/sda5        10G   37M   10G    1% /home
/dev/sda1       8.0G  164M  7.9G    2% /boot
tmpfs            98M   24K   98M    1% /run/user/0
/dev/sdb1        20G   33M   20G    1% /opt/data
/dev/sdc1        20G   33M   20G    1% /opt/yun
6.设置nfs服务内容
[root@localhost ~]# vim /etc/exports
/opt/data       192.168.43.0/24(rw,sync,no_root_squash)
/opt/yun        192.168.43.0/24(rw,sync,no_root_squash)
7.关闭安全性功能,开启NFS服务
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
8.验证NFS服务
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/yun  192.168.100.0/24
/opt/data 192.168.100.0/24
[root@localhost ~]# 
9。修改网卡模式为仅主机模式

  • 配置web服务器
配置web server 1
1.安装httpd的软件包
yum install httpd -y
2.添加web站点信息
[root@localhost ~]# cd /var/www/html
[root@localhost html]# echo "<h1>data web server</h1>" > index.html
3.修改真实网卡信息,RIP
[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.100.120
GATEWAY=192.168.100.1

4.添加虚拟网卡信息,VIP
[root@localhost network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.0
ONBOOT=yes
~       
5.编辑服务器的LVS与VIP的脚本
[root@localhost network-scripts]# cd /etc/init.d
[root@localhost init.d]# ls
functions  netconsole  network  README
[root@localhost init.d]# vim web.sh

#!/bin/bash
VIP=192.168.100.100
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/route add -host $VIP 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
                sysctl -p > /dev/null 2>&1
                echo "real server start ok"
                ;;
        stop)
                ifconfig lo:0 down
                route del $VIP /dev/null 2>&1
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
                echo "real server stop"  
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0
~                   
6.关闭安全功能,开启各个服务
[root@localhost init.d]# ifup lo:0
[root@localhost init.d]# chmod +x web.sh 
[root@localhost init.d]# service web.sh start 
real server start ok
[root@localhost init.d]# systemctl start httpd.service
[root@localhost init.d]# systemctl stop firewalld
[root@localhost init.d]# setenforce 0

配置web server 2
1.安装httpd的软件包
yum install httpd -y
2.添加web站点信息
[root@localhost ~]# cd /var/www/html
[root@localhost html]# echo "<h1>yun web server</h1>" > index.html
3.修改真实网卡信息,RIP
[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.100.130
GATEWAY=192.168.100.1

4.添加虚拟网卡信息,VIP
[root@localhost network-scripts]# cp -p ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.0
ONBOOT=yes
~       
5.编辑服务器的LVS与VIP的脚本
[root@localhost network-scripts]# cd /etc/init.d
[root@localhost init.d]# ls
functions  netconsole  network  README
[root@localhost init.d]# vim web.sh

#!/bin/bash
VIP=192.168.100.100
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/route add -host $VIP 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
                sysctl -p > /dev/null 2>&1
                echo "real server start ok"
                ;;
        stop)
                ifconfig lo:0 down
                route del $VIP /dev/null 2>&1
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
                echo "real server stop"  
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0
~                   
6.关闭安全功能,开启各个服务
[root@localhost init.d]# ifup lo:0
[root@localhost init.d]# chmod +x web.sh 
[root@localhost init.d]# service web.sh start 
real server start ok
[root@localhost init.d]# systemctl start httpd.service
[root@localhost init.d]# systemctl stop firewalld
[root@localhost init.d]# setenforce 0
  • 配置LVS调度器
1.安装ipvsadm工具
yum install ipvsadm -y
2.修改真实网卡信息,RIP
IPADDR=192.168.100.110
GATEWAY=192.168.100.1
3.添加虚拟VIP
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@localhost network-scripts]# vim ifcfg-ens33:0

DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.100
NETMASK=255.255.255.0

4.开启路由转发功能,关闭重定向功能

[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

5.编辑LVS脚本
[root@localhost network-scripts]# cd /etc/init.d
[root@localhost init.d]# vim dr.sh

#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.100
RIP1=192.168.100.120
RIP2=192.168.100.130
case "$1" in
start)
        /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
        systemctl start ipvsadm
        /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
        /sbin/route add -host $VIP dev ens33:0
        /sbin/ipvsadm -A -t $VIP:80 -s rr
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
        /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
        echo "ipvsadm starting ok"
        ;;
stop)
        /sbin/ipvsadm -C
        systemctl stop ipvsadm
        ifconfig ens33:0 down
        route del $VIP
        echo "ipvsadm stoped ok"
        ;;
status)
        if [ ! -e /var/lock/subsys/ipvsadm ];then
        echo "ipvsadm stoped"
        exit 1
                else
                echo "ipvsadm Runing ok"
        fi
        ;;
*)
        echo "Usage: $0 {start|stop|status}"
        exit 1
        esac
        exit 0

6.开启脚本与服务
[root@localhost init.d]# ifup ens33:0
[root@localhost init.d]# service dr.sh start
ipvsadm starting ok
[root@localhost init.d]# systemctl stop firewalld
[root@localhost init.d]# setenforce 0
  • 配置路由器
1.开启路由转发功能
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

2.设置双网卡 
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens37
[root@localhost network-scripts]# vim ifcfg-ens33

IPADDR=192.168.100.1
NETMASK=255.255.255.0

[root@localhost network-scripts]# vim ifcfg-ens37

IPADDR=12.0.0.1
NETMASK=255.255.255.0

[root@localhost network-scripts]# service network restart 
Restarting network (via systemctl):                        [  确定  ]

3.关闭防火墙和SEliinux
[root@localhost network-scripts]# systemctl stop firewalld
[root@localhost network-scripts]# setenforce 0
  • 配置外部客户机,并且验证功能

注:现网中会使用其他技术,保持服务器之间数据同步

发布了104 篇原创文章 · 获赞 120 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42761527/article/details/103970164