本章主要内容:
> 第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的 VIP(Virtual IP 虚拟IP)地址,也称为群集IP地址。通常会配置主,备 两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
> 第二层,服务器池:群集所提供的应用服务(如 HTTP,FTP)由服务器池承担,其中每个节点具有独立的 RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户机请求,当某个节点暂时失效时,负载调度器的容错机制将其隔离,等待错误排除以后再重新纳入服务器池。
> 第三次,共享存储:为服务器池中的所有节点提供稳定,一致的文件存取服务,确保整个群集的统一性。在 Linux/UNIX 环境中,共享存储可以使用 NAS设备,或者提供 NFS(Network File System,网络文件系统)共享服务的专用服务器
[root@LVS ~]# modprobe ip_vs //加载ip_vs模块
[root@LVS ~]# 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@LVS ~]#
开启路由转发
[root@LVS ~]# vim /etc/sysctl.conf
[root@LVS ~]# cat /etc/sysctl.conf | grep net
net.ipv4.ip_forward = 1
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@LVS ~]#
下面将介绍LVS 所支持的主要负载调度算法,以及在LVS 负载均衡调度器上如何使用 ipvsadm管理工具
针对不同的网络服务喝配置需要,LVS 调度器提供多种不同的负载调度算法,其中最常用的四种算法时轮询,加权轮询,最少连接和加权最少连接
[root@LVS ~]# yum -y install ipvsadm
[root@LVS ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@LVS ~]# ipvsadm -A -t 192.168.182.100:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.101:80 -m -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.182.100:80 -r 192.168.182.102:80 -m -w 1
上述操作中,有以下选择
[root@LVS ~]# 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.182.100:80 rr
-> 192.168.182.101:80 Masq 1 0 0
-> 192.168.182.102:80 Masq 1 0 0
[root@LVS ~]#
[root@LVS ~]# ipvsadm -d -t 192.168.182.100:80 -r 192.168.182.101:80
或
[root@LVS ~]# ipvsadm -d -r 192.168.182.101:80 -t 192.168.182.100:80
[root@LVS ~]# 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.182.100:80 rr
-> 192.168.182.102:80 Masq 1 0 0
[root@LVS ~]#
[root@LVS ~]# ipvsadm-save > /etc/sysconfig/ipvsadm //保存策略
[root@LVS ~]# cat /etc/sysconfig/ipvsadm //确认保存结果
-A -t LVS:http -s rr
-a -t LVS:http -r 192.168.182.101:http -m -w 1
-a -t LVS:http -r 192.168.182.102:http -m -w 1
[root@LVS ~]# systemctl stop ipvsadm.service //停止服务(清楚策略)
[root@LVS ~]# systemctl start ipvsadm.service //启动服务(重建规则)
[root@LVS ~]# systemctl status ipvsadm.service
[root@nfs ~]# yum -y install nfs-utils rpcbind
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# systemctl enable rpcbind
[root@nfs ~]# mkdir -p /opt/wwwroot
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/opt/wwwroot 192.168.182.0/24(rw,sync,no_root_squash)
[root@nfs ~]# vim /etc/exports
/var/ftp/public 192.168.182.101(ro) 192.168.182.102(rw)
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# netstat -anpt | grep rpc
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 64248/rpcbind
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 64447/rpc.mountd
tcp 0 0 0.0.0.0:40730 0.0.0.0:* LISTEN 64443/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 64248/rpcbind
tcp6 0 0 :::20048 :::* LISTEN 64447/rpc.mountd
tcp6 0 0 :::55161 :::* LISTEN 64443/rpc.statd
[root@nfs ~]#
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/wwwroot 192.168.182.0/24
[root@nfs ~]#
[root@node01 ~]# yum -y install rpcbind nfs-utils
[root@node01 ~]# systemctl enable rpcbind
[root@node01 ~]# systemctl start rpcbind
[root@node01 ~]# showmount -e 192.168.182.105
Export list for 192.168.182.105:
/opt/wwwroot 192.168.182.0/24
[root@node01 ~]#
[root@node01 ~]# yum -y install httpd
[root@node01 ~]# systemctl start httpd
[root@node01 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@node01 ~]#
[root@node01 ~]# mount 192.168.182.105:/opt/wwwroot /var/www/html
[root@node01 ~]# tail -1 /etc/mtab //确认挂载结果
192.168.182.105:/opt/wwwroot /var/www/html nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.182.101,local_lock=none,addr=192.168.182.105 0 0
[root@node01 ~]#
[root@node01 ~]# vim /var/www/html/index.html
[root@node01 ~]# cat /var/www/html/index.html
hello word
[root@node01 ~]#
[root@LVS ~]# vim /etc/fstab
[root@LVS ~]# cat /etc/fstab | grep nfs
192.168.182.105:/opt/wwwroot /var/www/html nfs defaults,netdev 0 0
[root@LVS ~]#