群集技术概述:
1.群集类型:
1)负载均衡群集:提高应用系统的响应能力,尽可能去处理更多的访问请求,减少延迟,获得高并发,高负载的整体性能
2)高可用群集:提高应用系统的可靠性,尽可能地减少中断时间为目标确保服务的连续性,达到高可用的容错效果
3)高性能运算群集:提高应用系统的CPU运算速度,扩展硬件资源和分析能力,获得相当于大型,超级计算机的高性能运算能力
2.负载均衡的分层结构
1)第一层:负载调度器(LVS)
2)第二层:服务器池(HTTP)
3)第三层:共享存储(NFS)
3.基于IP的负载均很三种工作模式
1)地址转换(NAT)
2)IP隧道(TUN)
3)直接路由(DR)ss
准备工作:
[ root@LVS ~ ]# modprobe ip_vs #加载ip_vs模块
[ root@LVS ~ ]# cat /proc/net/ip_vs #查看ip_vs版本信息
[ root@LVS ~ ]# yum -y install ipvsadm
[ root@LVS ~ ]# ipvsadm -v
ipvsadm命令详解:
[ root@LVS ~ ]# ipvsadm -A -t 192.168.3.1:80 -s rr
#-A:创建虚拟服务器
#-t:用来指定VIP地址及TCP端口
#-s:用来指定负载调度器算法——(轮询”rr“)(加权轮询”wrr“)(最少连接”lc“)(加权最少连接”wlc“)
[ root@LVS ~ ]# ipvsadm -a -t 192.168.3.1:80 -r 192.168.3.2:80 -m -w 1
#-r:用来指定RIP地址及TCP端口
#-m:使用NAT群集模式——(“-g”DR模式)(”-i“TUN模式)
#-w:表示权重(当权重为0时表示暂停改节点)
[ root@LVS ~ ]# ipvsadm -d -t 192.168.3.1:80 -r 192.168.3.2:80 -m -w 1
#-d:删除该节点
[ root@LVS ~ ]# ipvsadm -ln #查看节点状态
[ root@LVS ~ ]# ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
[ root@LVS ~ ]# cat /etc/susconfig/ipvsadm #确认保存结果
[ root@LVS ~ ]# systemctl stop ipvsadm #停止服务(清楚策略)
[ root@LVS ~ ]# systemctl start ipvsadm #启动服务(重建策略)
一.地址转换(NAT)实验:
实验环境:
一台LVS服务器,两台提供服务的服务器(HTTP),一台共享存储服务器(NFS),一台客户端(Client)
LVS:内网(192.168.3.1),VIP(192.168.2.1)
HTTP-1(192.168.3.2)
HTTP-2(192.168.3.3)
NFS(192.168.3.4)
Client(192.168.2.2)
前提准备工作:
http服务器中已经安装http服务
nfs已经搭建能够成功实现共享,并且设置http服务器开机自动挂载目录
—HTTP—
[root@HTTP ~]# mkdir -p /opt/www/
[root@HTTP ~]# vim /usr/local/httpd/conf/httpd.conf
...
DocumentRoot "/opt/www/"
<Directory "/opt/www/">
...
[root@HTTP ~]# systemctl restart httpd.service
[root@HTTP ~]# yum -y install nfs-utils rpcbind
[root@HTTP ~]# systemctl enable rpcbind
[root@HTTP ~]# systemctl restart rpcbind
[root@HTTP ~]# systemctl enable nfs-server
[root@HTTP ~]# systemctl restart nfs-server
[root@HTTP ~]# showmount -e 192.168.3.1 #查看nfs服务器是否成功
[root@HTTP ~]# mount -t nfs 192.168.3.4:/opt/www/ /opt/www/
[root@HTTP ~]# df -h #查看是否挂载成功
[root@HTTP ~]# vi /etc/fstab
192.168.3.4:/opt/www/ /opt/www/ defaults,_netdev 0 0
:wq!
—LVS—
[root@LVS ~]# vim /etc/sysctl.conf #开启路由转发功能
net.ipv4.ip_forward = 1
:wq!
[root@LVS ~]# sysctl -p
[root@LVS ~]# modprobe ip_vs #加载ip_vs模块
[root@LVS ~]# modprobe ip_vs #查看是否加载成功
[root@LVS ~]# yum -y install ipvsadm #安装ipvsadm服务
[root@LVS ~]# ipvsadm -v #查看版本号
[root@LVS ~]# ipvsadm -A -t 192.168.2.1:80 -s rr #宣告自己为虚拟主机
[root@LVS ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.3.2:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.2.1:80 -r 192.168.3.2:80 -m -w 3
[root@LVS ~]# ipvsadm-save >/etc/sysconfig/ipvsadm
[root@LVS ~]# systemctl enable ipvsadm
二.直接路由(DR)实验:
实验环境:
一台LVS服务器,两台拥有外网IP的HTTP服务器(HTTP),一台客户端(Client)
LVS(192.168.3.4),虚拟IP(192.168.3.5)
HTTP-1(192.168.3.3),虚拟IP(192.168.3.5)
HTTP-2(192.168.3.2),虚拟IP(192.168.3.5)
Client(192.168.3.100)
前提准备工作:
http服务器中已经安装http服务
—LVS—
[root@LVS ~]# modprobe ip_vs
[root@LVS ~]# yum -y install ipvsadm
[root@LVS ~]# cd /etc/sysconfig/network-scripts/
[root@LVS ~]# cp ifcfg-ens32 ifcfg-ens32:0
[root@LVS ~]# vim ifcfg-ens32:0 #配置虚拟IP地址
NAME=ens32:0
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.3.5
NETMASK=255.255.255.0
:wq!
[root@LVS ~]# ifup ens32:0 #开启虚拟IP
[root@LVS ~]# ifconfig ens32:0 #查看
[root@LVS ~]# vim /etc/sysctl.conf #调整/proc响应参数
...
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens32.send_redirects = 0
:wq!
[root@LVS ~]# ipvsadm -C
[root@LVS ~]# ipvsadm -A -t 192.168.3.5:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.3.5:80 -r 192.168.3.3:80 -g -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.3.5:80 -r 192.168.3.2:80 -g -w 1
[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@LVS ~]# systemctl enable ipvsadm.service
[root@LVS ~]# systemctl start ipvsadm.service
—HTTP—
[root@HTTP ~]# cd /etc/sysconfig/network-scripts/
[root@HTTP ~]# cp ifcfg-lo ifcfg-lo:0
[root@HTTP ~]# vim ifcfg-lo:0 #配置虚拟IP,要和LVS虚拟IP一致,子网掩码全为1
DEVICE=lo:0
IPADDR=192.168.3.5
NETMASK=255.255.255.255
:wq!
[root@HTTP ~]# ifup lo:0
[root@HTTP ~]# ifconfig lo:0
[root@HTTP ~]# vim /etc/rc.local #添加VIP本地访问路由
...
/sbin/route add -host 192.168.3.5 dev lo:0
:wq!
[root@HTTP ~]# route add -host 192.168.3.5 dev lo:0
[root@HTTP ~]# vim /etc/sysctl.conf #调整/proc响应参数
...
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
:wq!
[root@HTTP ~]# sysctl -p
测试:
多个客户端访问http://192.168.3.5
载LVS服务器上输入命令“ipvsadm -ln”查看连接状态
搭建NFS共享存储
三.搭建NFS服务:
NFS服务器:
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# vim /etc/exports
/opt/www/ 192.168.3.0/24(rw,sync,no_root_squash)
#/var/ftp/pub 192.168.3.3(rw) 192.168.3.2(ro)
:wq!
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs-server
[root@localhost ~]# systemctl restart nfs-server
[root@localhost ~]# rpcinfo -p #检查NFS服务器是否挂载我们想共享的目录 /opt/www/
[root@localhost ~]# exportfs -r #使配置生效
[root@localhost ~]# exportfs
NFS客户机:
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs-server
[root@localhost ~]# systemctl restart nfs-server
[root@localhost ~]# showmount -e 192.168.3.4 #查看服务器是否配置成功
[root@localhost ~]# mount -t nfs 192.168.3.4:/opt/www/ /opt/www/
[root@localhost ~]# df -hT #查看是否挂载成功
[root@localhost ~]# vi /etc/fstab #设置开机自动挂载,在每台http服务器上都要设置
192.168.3.4:/opt/www/ /opt/www/ nfs defaults,_netdev 0 0
:wq!