目录
一.群集的类型
- 负载均衡群集(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
- 配置外部客户机,并且验证功能
注:现网中会使用其他技术,保持服务器之间数据同步