keepalive+lvs+web+nfs高可用集群

06-01 1548阅读

1 、keepalive+lvs+web+nfs高可用集群概述

1.1 高可用集群项目背景

近年来,随着公司业务规模的迅猛扩张,业务量呈现出爆发式增长的态势。这一增长给现有的服务器系统带来了巨大的压力,使得服务器负载达到了极限。大量用户反馈在访问公司服务时频繁遭遇卡顿现象,甚至出现掉线的情况,严重影响了用户体验和公司业务的正常开展。为了有效缓解服务器压力,确保服务的稳定运行和正常访问,对公司现有的服务器架构进行调整已成为当务之急。

1.2 keepalive+lvs+web+nfs项目功能

 keepalive+lvs+web+nfs项目所提供的解决方案,恰好能够精准地满足公司当前面临的这一紧迫需求。该方案具备多项强大且实用的功能,能够从多个层面优化服务器性能和服务质量。其实现原理基于先进的技术架构,通过科学合理的资源分配和负载均衡策略,保障系统的高效运行。

具体而言,本项目采用了 Keepalive+LVS+Nginx+NFS 的高可用集群架构。Keepalive 负责监控服务器的运行状态,确保在出现故障时能够快速切换,实现服务的不间断提供;LVS(Linux Virtual Server)作为负载均衡器,能够根据预设的算法将用户请求均匀地分发到多个服务器节点上,有效分散服务器压力;Nginx 则在应用层进一步处理请求,优化请求响应速度,并具备强大的缓存功能,减少对后端服务器的资源消耗;NFS(Network File System)实现了文件系统的共享,方便各服务器节点之间的数据交互和资源共享。通过这一高可用集群架构,项目能够显著提升公司服务器系统的稳定性、可靠性和性能表现。

2 keepalive+lvs+web+nfs 项目的部署

2.1  部署环境介绍

项目架构解析:

LVS:实现四层负载均衡,调度请求到后端Nginx服务器

Keepalived:为LVS提供高可用保障,防止单点故障

Nginx:作为Web服务器处理静态请求

NFS:统一存储网站文件,保证多节点数据一致性

LVS-master

192.168.1.130

LVS-node01

192.168.1.131

Web1-RS

192.168.1.132

Web2-RS

192.168.1.133

Nfs

192.168.1.134

VIP

192.168.1.50

2.2  项目的拓扑结构

keepalive+lvs+web+nfs高可用集群

2.3 项目的部署

准备工作:

配置网络

vi /etc/sysconfig/network-scripts/ifcfg-ens33

systemctl restart network

关闭防火墙和selinux

systemctl stop firewalld

setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#重启生效

Reboot

keepalive+lvs+web+nfs高可用集群

修改主机名

hostnamectl set-hostname master-yzf

bash

keepalive+lvs+web+nfs高可用集群

hostnamectl set-hostname node01-yzf

bash

keepalive+lvs+web+nfs高可用集群

keepalived与LVS(DR)相关配置:

安装keepalived  ipvsadm

yum -y install keepalived ipvsadm

keepalive+lvs+web+nfs高可用集群

加载内核模块

modprobe  ip_vs

keepalive+lvs+web+nfs高可用集群

备份keepalived配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

keepalive+lvs+web+nfs高可用集群

修改配置文件

Vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id LVS_MASTER

}

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id  10

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.50

    }

}

virtual_server 192.168.1.50 80 {

   delay_loop 15

   lb_algo rr

    lb_kind DR

!    persistence_timeout 50

    protocol TCP

    real_server 192.168.1.132 80 {

        weight 1

       TCP_CHECK {

        connect_port 80

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 4

       }

    }

     real_server 192.168.1.133 80 {

        weight 1

       TCP_CHECK {

        connect_port 80

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 4

       }

    }

}

keepalive+lvs+web+nfs高可用集群

备机配置:

克隆一台master节点作为node01节点并且修改ip为192.168.1.131,并且修改主机名为node01

修改备机keepalived配置文件

注意1、修改router id

2、修改优先权

(只需要改这两个地方)

! Configuration File for keepalived

global_defs {

   router_id LVS_BACKUP

}

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id  10

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.50

    }

}

virtual_server 192.168.1.50 80 {

   delay_loop 15

   lb_algo rr

    lb_kind DR

!    persistence_timeout 50

    protocol TCP

    real_server 192.168.1.132 80 {

        weight 1

       TCP_CHECK {

        connect_port 80

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 4

       }

    }

     real_server 192.168.1.133 80 {

        weight 1

       TCP_CHECK {

        connect_port 80

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 4

       }

    }

}

keepalive+lvs+web+nfs高可用集群

主备启动keepalived并设置开机自启

systemctl start keepalived

systemctl enable keepalived

systemctl status keepalived

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

ip addr show dev ens33

实际状态为 MASTER 的主服务器将为 ens33 接口自动添加 VIP 地址,通过 ip 命令可以查看。

ip addr show dev ens33

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

ipvsadm -ln

keepalive+lvs+web+nfs高可用集群keepalive+lvs+web+nfs高可用集群

Nfs(192.168.1.134)

修改主机名

hostnamectl set-hostname NFS-yzf

bash

keepalive+lvs+web+nfs高可用集群

安装 NFS 工具

yum install -y nfs-utils

keepalive+lvs+web+nfs高可用集群

创建共享目录(把文件内容共享给web服务器),设置权限

mkdir -p /nfs/web

chmod 777 /nfs/web

keepalive+lvs+web+nfs高可用集群

把web服务器ip暴露给nfs,允许 Web 主机 IP 访问

vi /etc/exports

/nfs/web 192.168.1.132(rw,sync,no_root_squash,no_subtree_check)

/nfs/web 192.168.1.133(rw,sync,no_root_squash,no_subtree_check)

keepalive+lvs+web+nfs高可用集群

启动nfs

systemctl start nfs-server

systemctl enable nfs-server

keepalive+lvs+web+nfs高可用集群

验证共享

exportfs -v

keepalive+lvs+web+nfs高可用集群

创建测试文件

echo $(hostname -I | awk '{print $1}') > /nfs/web/index.html  # 写入本机 IP 到 HTML 文件

keepalive+lvs+web+nfs高可用集群

暴露共享位置,一定要先启动服务再暴露位置,不然会报错

showmount -e 192.168.1.134

keepalive+lvs+web+nfs高可用集群

Web01(192.168.1.132)配置,搭建(RS服务器):

修改主机名:

hostnamectl set-hostname web01-yzf

bash

keepalive+lvs+web+nfs高可用集群

安装 NFS 客户端工具

yum install -y nfs-utils

keepalive+lvs+web+nfs高可用集群

创建本地挂载点,并且把共享目录挂载到本地挂载点

 mkdir -p /var/www/html/shared

 mount -t nfs 192.168.1.134:/nfs/web /var/www/html/shared

keepalive+lvs+web+nfs高可用集群

永久挂载

vi /etc/fstab

keepalive+lvs+web+nfs高可用集群

mount -a测试挂载,如果无报错,说明修复成功。

查看挂载情况

df -h | grep nfs  # 查看挂载信息

cat /var/www/html/shared/index.html  # 应显示 NFS 服务端的 IP

keepalive+lvs+web+nfs高可用集群

安装nginx

yum install -y epel-release  # 安装 EPEL 仓库

yum install -y nginx

keepalive+lvs+web+nfs高可用集群

启动nginx

systemctl start nginx

showmount -e 192.168.1.134

keepalive+lvs+web+nfs高可用集群

检查nfs中共享目录的内容web01中是否能查看

keepalive+lvs+web+nfs高可用集群

测试共享是否成功

Nfs服务器

sudo exportfs -a

showmount -e localhost  # 显示本地导出的 NFS 共享目录

keepalive+lvs+web+nfs高可用集群

Web01:

showmount -e 192.168.1.134  # 替换为你的 NFS 服务器 IP

keepalive+lvs+web+nfs高可用集群

共享成功

nginx网页

rpm -ql nginx |grep html

keepalive+lvs+web+nfs高可用集群

Web02配置:(同web01一样)

修改主机名

hostnamectl set-hostname web02-yzf

bash

安装nfs工具

yum install -y nfs-utils

keepalive+lvs+web+nfs高可用集群

创建本地挂载点

查看挂载情况

keepalive+lvs+web+nfs高可用集群

安装nginx

 yum install -y epel-release

yum install -y nginx

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

启动nginx

并设置开机自启

systemctl start nginx

systemctl staus nginx

systemctl enable nginx

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

systemctl enable nginx nfs-server

keepalive+lvs+web+nfs高可用集群

查看共享情况,共享成功

keepalive+lvs+web+nfs高可用集群

查看nginx的网页文件存储目录

rpm -ql nginx |grep html

keepalive+lvs+web+nfs高可用集群

配置nginx,是为了区分web01与web02的内容

cd /nfs/web/

ls

mv index.html index1.html

echo "Web01 index.html" > index1.html

echo "Web02 index.html" > index1.html

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

Web01:

vim /etc/nginx/conf.d/web01.conf

server {

        listen 80;

    server_name 192.168.1.132;

    location / {

        root   /var/www/html/shared;

        index  index1.html;

    }

}

keepalive+lvs+web+nfs高可用集群

systemctl restart nginx

添加虚拟IP 

ifconfig lo:1 192.168.1.50 netmask 255.255.255.255 broadcast 192.168.1.50 up

配置内核参数 /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.ip_forward=0

sysctl -p 更新

keepalive+lvs+web+nfs高可用集群

增加路由

route add -host 192.168.88.50 dev lo:1

Route -n

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

Web02 同样的配置

vim /etc/nginx/conf.d/web02.conf

server {

        listen 80;

    server_name 192.168.1.133;

    location / {

        root   /var/www/html/shared;

        index  index2.html;

    }

}

keepalive+lvs+web+nfs高可用集群

systemctl restart nginx

添加内核参数

keepalive+lvs+web+nfs高可用集群

增加路由

keepalive+lvs+web+nfs高可用集群

测试:

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

关掉web01

keepalive+lvs+web+nfs高可用集群

可看到web02内容

keepalive+lvs+web+nfs高可用集群

关掉web02

keepalive+lvs+web+nfs高可用集群

keepalive+lvs+web+nfs高可用集群

2.4  项目对应服务使用的日志

keepalive服务日志

keepalived 主要用于实现高可用和负载均衡,其日志记录了 Keepalived 进程的启动、运行状态、VRRP 状态切换(主备切换等)、LVS 规则的管理等信息

Keepalived 的日志默认记录在 /var/log/messages 文件中。你可以使用 tail 命令实时查看最新的日志信息

LVS服务日志

LVS 本身并不直接生成独立的日志文件,它的一些信息会通过 syslog 记录到系统日志中,通常也是在 /var/log/messages 文件中

Nginx服务日志

Nginx 有两种主要的日志文件,即访问日志(access log)和错误日志(error log)

Nginx 的默认访问日志路径通常是 /var/log/nginx/access.log,错误日志路径是 /var/log/nginx/error.log

NFS服务日志

NFS 服务日志记录了 NFS 服务器的文件共享操作,如客户端的挂载请求、文件读写操作、权限验证等。当客户端挂载 NFS 共享目录失败或者访问文件时出现权限问题,会在日志中记录相关的详细信息。

NFS 服务器的日志通常记录在 /var/log/messages文件上

  1. 项目的注意事项

网络配置问题

问题:LVS 负载均衡器、Nginx 服务器、NFS 服务器以及客户端之间的网络通信异常,如 IP 地址冲突、子网掩码错误、网关配置不正确等,导致无法正常进行负载均衡和文件共享。

解决方案:仔细检查各服务器的网络配置,确保 IP 地址设置正确且在同一子网内。使用 ip addr、route 等命令检查网络接口和路由表。对于跨网段的情况,要确保路由器配置正确,允许相关的网络流量通过。同时,可以使用 ping 命令测试网络连通性,使用 traceroute 命令排查网络路径问题。

负载均衡不均衡

问题:LVS 配置了轮询(Round Robin)等负载均衡算法,但实际请求却集中在某一台或某几台后端 Nginx 服务器上,没有实现均衡负载。

解决方案:首先检查 LVS 的配置,确保算法设置正确且没有启用会话保持(Persistence)功能(如果不需要会话保持)。使用 ipvsadm -Ln --stats 命令查看各后端服务器的连接统计信息,分析请求分配情况。另外,检查后端 Nginx 服务器的性能差异,如 CPU、内存、磁盘 I/O 等,如果某台服务器性能明显优于其他服务器,可能会导致请求集中。可以考虑优化服务器性能或调整负载均衡算法参数。

Nginx 配置错误

问题:Nginx 配置文件(nginx.conf 或虚拟主机配置文件)中存在语法错误、配置项缺失或冲突,导致 Nginx 无法正常启动或提供服务。

解决方案:使用 nginx -t 命令检查 Nginx 配置文件的语法正确性。如果发现错误,根据错误提示信息修改配置文件。对于复杂的配置,可以参考 Nginx 的官方文档,确保配置项的正确使用和顺序。同时,定期备份 Nginx 配置文件,以便在出现问题时能够快速恢复。

NFS 共享权限问题

问题:客户端无法挂载 NFS 共享目录,或者挂载后无法进行文件读写操作,提示权限不足。

解决方案:检查 NFS 服务器上 /etc/exports 文件的配置,确保共享目录的权限设置正确,允许客户端的 IP 地址或网段进行读写操作。例如,/data 10.1.1.0/24(rw,sync,no_root_squash)。同时,检查客户端和服务器上的文件系统权限,确保挂载点目录和共享目录的所有者和权限设置合理。可以使用 chown 和 chmod 命令调整文件和目录的权限。

Keepalived 故障切换异常

问题:当主 Keepalived 服务器出现故障时,备份服务器没有及时接管虚拟 IP(VIP)和服务,或者主服务器恢复后 VIP 没有正确回切。

解决方案:检查 Keepalived 的配置文件(keepalived.conf),确保 VRRP 实例的配置正确,包括虚拟路由器 ID(VRID)、优先级、抢占模式等参数。查看 Keepalived 的日志文件(通常在 /var/log/messages 或 /var/log/syslog),分析故障切换过程中出现的错误信息。另外,要确保两台服务器之间的网络连接稳定,避免因网络延迟或丢包导致的故障切换异常。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

相关阅读

目录[+]

取消
微信二维码
微信二维码
支付宝二维码