Keepalived+LVS+nginx高可用架构

注明:所有软件已经下载好,防火墙和SELinux已经全部关闭

一.搭建NFS

1.服务端

1.创建文件

[root@nfs ~]# mkdir -p /nfs/data

2、修改权限

[root@nfs ~]# chmod o+rw /nfs/data

3、写配置文件

[root@nfs ~]# cat /etc/exports
/nfs/data  192.168.111.118(rw)
/nfs/data  192.168.111.119(rw)

4、重启服务

[root@nfs ~]# systemctl restart nfs-server

5、暴露文件

[root@nfs data]# showmount -e 192.168.111.120
Export list for 192.168.111.120:
/nfs/data (everyone)

2、客户端

RS1

1.创建挂载目录

[root@rs1 ~]# mkdivar/www/haha

2、将创建的目录挂载到服务端的共享目录

[root@rs1 ~]# mount -t nfs 192.168.111.120:/nfs/data  /var/www

3、查看是否挂载成功

[root@rs1 ~]# df /var/www
Filesystem                1K-blocks    Used Available Use% Mounted on
192.168.111.120:/nfs/data  47202304 2063616  45138688   5% /varvar/www

RS2

1.创建挂载目录

[root@rs2 ~]# mkdir -p /var/www/xixi

2、将创建的目录挂载到服务端的共享目录

[root@rs2 ~]# mount -t nfs 192.168.111.120:/nfs/data  /var/www

3、查看是否挂载成功

[root@rs2 nfs]# df /var/www
Filesystem                1K-blocks    Used Available Use% Mounted on
192.168.111.120:/nfs/data  47202304 2063616  45138688   5% /var/www

 二、搭建nginx服务

RS1

1.写nginx的配置文件

[root@rs1 ~]# cat /etc/nginx/conf.d/haha.conf 
server {
    server_name  192.168.111.118;
    root /var/www/haha;
    access_log /var/log/nginx/hehe_access.log;
    error_log  /var/log/nginx/hehe_error.log;
}

2.在NFS里面写入nginx的页面

[root@nfs ~]# echo "welcome rs1" > /nfs/data/haha/index.html

3.重启服务

[root@rs1 ~]# systemctl restart nginx

4.测试服务
[root@rs1 ~]# curl 192.168.111.118
welcome rs1

RS2

1.写nginx的配置文件

[root@rs2 ~]# cat /etc/nginx/conf.d/xixi.conf 
server {
    server_name  192.168.111.119;
    root /var/www/xixi;
    access_log /var/log/nginx/xixi_access.log;
    error_log  /var/log/nginx/xixi_error.log;
}

2.在NFS里面写入nginx的页面

[root@nfs ~]# echo "welcome rs2" > /nfs/data/xixi/index.html

3.重启服务

[root@rs2 ~]# systemctl restart nginx

4.测试服务
[root@rs2 ~]# curl 192.168.111.119
welcome rs2

 三、搭建keepalived+lvs服务

master

1.修改keepalived的配置文件

[root@lvs-master ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm

[root@lvs-master ~]# cat /etc/keepalived/keepalived.conf 
global_defs {
   router_id lvs_master
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.100
    }
}

#配置lvs,需要指定VIP地址

virtual_server 192.168.111.100 80 {
    delay_loop 6  #健康检查时间间隔,时间为秒
    lb_algo wrr   #负载均衡的算法,rr表示轮询,wrr表示带权轮询
    lb_kind DR  #负载均衡的模式,此处为DR 支持的模式有DR|NAT|TUN
    persistence_timeout 50 #持久化时间,默认为秒。
    protocol TCP  #负载均衡协议

    real_server 192.168.111.118 80 {
        weight 3  #权重
        TCP_CHECK {  #检查
            connect_timeout 3   #连接时间,单位为秒
            retry 3  #重试次数
            delay_before_retry 3  #重试间隔时间
        }
    }
    real_server 192.168.111.119 80 {
        weight 1
        TCP_CHECK {
            url {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

backup

1.修改配置文件

[root@lvs-backup ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm

[root@lvs-backup ~]# cat /etc/keepalived/keepalived.conf 
global_defs {
   router_id lvs_backup
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.111.100
    }
}

virtual_server 192.168.111.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    real_server 192.168.111.118 80 {
        weight 3
        TCP_CHECK {
            url {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.111.119 80 {
        weight 1
        TCP_CHECK {
            url {
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

2.启动两台服务器

[root@lvs-master ~]# systemctl restart keepalived.service  ipvsadm.service

[root@lvs-backup ~]# systemctl restart keepalived.service  ipvsadm.service

3.查看配置规则

[root@lvs-master ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs-master:http wrr persistent 50
  -> 192.168.111.118:http         Route   3      0          0         
  -> 192.168.111.119:http         Route   1      0          1    

[root@lvs-backup ~]# 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.111.100:80 wrr persistent 50
  -> 192.168.111.118:80           Route   3      0          0         
  -> 192.168.111.119:80           Route   1      0          0      

四、修改RS服务

1、为两台 RS 服务器配置 VIP

[root@rs1 ~]# ifconfig lo:1 192.168.111.100 netmask 255.255.255.255 broadcast 192.168.111.100 up
[root@rs2 ~]# ifconfig lo:1 192.168.111.100 netmask 255.255.255.255 broadcast 192.168.111.100 up
 

2、配置核心参数。
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
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

[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
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

3、配置路由

[root@rs1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.111.2   0.0.0.0         UG    100    0        0 ens160
192.168.111.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.111.100 0.0.0.0         255.255.255.255 UH    0      0        0 lo
 

[root@rs2 ~]# route add -host 192.168.111.100 dev lo:1
[root@rs2 ~]# 
[root@rs2 ~]# 
[root@rs2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.111.2   0.0.0.0         UG    100    0        0 ens160
192.168.111.0   0.0.0.0         255.255.255.0   U     100    0        0 ens160
192.168.111.100 0.0.0.0         255.255.255.255 UH    0      0        0 lo

五、测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习处理文本(13)

我们使用基于GRU的编码器和解码器来在Keras中实现这一方法。选择GRU而不是LSTM,会让事情变得简单一些,因为GRU只有一个状态向量,而LSTM有多个状态向量。首先是编码器,如代码清单11-28所示。 代码清单11-28 基于GRU的编码器 fro…

HashMap 底层原理详解

1. 核心数据结构 JDK 1.7 及之前&#xff1a;数组 链表 JDK 1.8 及之后&#xff1a;数组 链表/红黑树&#xff08;链表长度 ≥8 时转红黑树&#xff0c;≤6 时退化为链表&#xff09; // JDK 1.8 的 Node 定义&#xff08;链表节点&#xff09; static class Node<K,V&g…

使用MySQL时出现 Ignoring query to other database 错误

Ignoring query to other database 错误 当在远程连接软件中输入MySQL命令出现该错误 导致错误原因是&#xff1a;登录mysql时账户名没有加上u 如果出现该错误&#xff0c;退出mysql&#xff0c;重新输入正确格式进入即可&#xff01;

哈尔滨工业大学:大模型时代的具身智能

大家好&#xff0c;我是樱木。 机器人在工业领域&#xff0c;已经逐渐成熟。具身容易&#xff0c;智能难。 机器人-》智能机器人&#xff0c;需要自主能力&#xff0c;加上通用能力。 智能机器人-》人类&#xff0c;这个阶段就太有想象空间了。而最受关注的-类人机器人。 如何…

Javascript代码压缩混淆工具terser详解

原始的JavaScript代码在正式的服务器上,如果没有进行压缩,混淆,不仅加载速度比较慢,而且还存在安全和性能问题. 因此现在需要进行压缩,混淆处理. 处理方案简单描述一下: 1. 使用 terser 工具进行 安装 terser工具: # npm 安装 npm install terser --save-dev# 或使用 yarn 安…

Java String 常用方法详解

目录 一、获取字符串信息(一)获取字符串长度(二)获取指定索引处的字符(三)获取子字符串二、字符串比较(一)比较字符串内容(二)忽略大小写比较三、字符串转换(一)转换为大写(二)转换为小写四、字符串查找(一)查找子字符串的位置(二)从指定位置开始查找五、字符…

Linux驱动开发练习案例

1 开发目标 1.1 架构图 操作系统&#xff1a;基于Linux5.10.10源码和STM32MP157开发板&#xff0c;完成tf-a(FSBL)、u-boot(SSBL)、uImage、dtbs的裁剪&#xff1b; 驱动层&#xff1a;为每个外设配置DTS并且单独封装外设驱动模块。其中电压ADC测试&#xff0c;采用linux内核…

leetcode-代码随想录-哈希表-赎金信

题目 题目链接&#xff1a;383. 赎金信 - 力扣&#xff08;LeetCode&#xff09; 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 maga…

精品可编辑PPT | “新基建”在数字化智慧高速公路中的支撑应用方案智慧建筑智慧交通解决方案施工行业解决方案

本文详细阐述了“新基建”在数字化智慧高速公路中的支撑应用方案&#xff0c;从政策背景出发&#xff0c;指出国家在交通领域的一系列发展规划和指导意见&#xff0c;强调了智慧交通建设的重要性。分析了当前高速公路存在的问题&#xff0c;如基础感知设施不足、协同水平低、服…

C语言求3到100之间的素数

一、代码展示 二、运行结果 三、感悟思考 注意: 这个题思路他是一个试除法的一个思路 先进入一个for循环 遍历3到100之间的数字 第二个for循环则是 判断他不是素数 那么就直接退出 这里用break 是素数就打印出来 在第一个for循环内 第二个for循环外

英语—四级CET4考试—蒙猜篇—匹配题

蒙猜方法一 匹配题的做题&#xff1a; 方法一&#xff1a; 首先&#xff0c;什么都不想&#xff0c;把问题中ing形式的&#xff0c;大写字母的&#xff0c;人名&#xff0c;地名&#xff0c;最后几个依次框起来。 然后&#xff0c;比如46题&#xff0c;口里默念meaningful lif…

股票日数据使用_未复权日数据生成前复权日周月季年数据

目录 前置&#xff1a; 准备 代码&#xff1a;数据库交互部分 代码&#xff1a;生成前复权 日、周、月、季、年数据 前置&#xff1a; 1 未复权日数据获取&#xff0c;请查看 https://blog.csdn.net/m0_37967652/article/details/146435589 数据库使用PostgreSQL。更新日…

系统与网络安全------Windows系统安全(6)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 共享文件夹 发布共享文件夹 Windows共享概述 微软公司推出的网络文件/打印机服务系统 可以将一台主机的资源发布给其他主机共有 共享访问的优点 方便、快捷相比光盘 U盘不易受文件大小限制 可以实现访问…

BN 层的作用, 为什么有这个作用?

BN 层&#xff08;Batch Normalization&#xff09;——这是深度神经网络中非常重要的一环&#xff0c;它大大改善了网络的训练速度、稳定性和收敛效果。 &#x1f9e0; 一句话理解 BN 层的作用&#xff1a; Batch Normalization&#xff08;批归一化&#xff09;通过标准化每一…

判断HiveQL语句为ALTER TABLE语句的识别函数

写一个C#字符串解析程序代码&#xff0c;逻辑是从前到后一个一个读取字符&#xff0c;遇到匹配空格、Tab和换行符就继续读取下一个字符&#xff0c;遇到大写或小写的字符a&#xff0c;就读取后一个字符并匹配是否为大写或小写的字符l&#xff0c;以此类推&#xff0c;匹配任意字…

基于编程的运输设备管理系统设计(vue+springboot+ssm+mysql8.x)

基于编程的运输设备管理系统设计&#xff08;vuespringbootssmmysql8.x&#xff09; 运输设备信息管理系统是一个全面的设备管理平台&#xff0c;旨在优化设备管理流程&#xff0c;提高运输效率。系统提供登录入口&#xff0c;确保只有授权用户可以访问。个人中心让用户可以查…

6.1 python加载win32或者C#的dll的方法

python很方便的可以加载win32的方法以及C#编写的dll中的方法或者变量&#xff0c;大致过程如下。 一.python加载win32的方法&#xff0c;使用win32api 1.安装库win32api pip install win32api 2.加载所需的win32函数并且调用 import win32api win32api.MessageBox(0,"…

前端精度计算:Decimal.js 基本用法与详解

一、Decimal.js 简介 decimal.js 是一个用于任意精度算术运算的 JavaScript 库&#xff0c;它可以完美解决浮点数计算中的精度丢失问题。 官方API文档&#xff1a;Decimal.js 特性&#xff1a; 任意精度计算&#xff1a;支持大数、小数的高精度运算。 链式调用&#xff1a;…

SQL Server 数据库实验报告

​​​​​​​ 1.1 实验题目&#xff1a;索引和数据完整性的使用 1.2 实验目的&#xff1a; &#xff08;1&#xff09;掌握SQL Server的资源管理器界面应用&#xff1b; &#xff08;2&#xff09;掌握索引的使用&#xff1b; &#xff08;3&#xff09;掌握数据完整性的…

AI绘画中的LoRa是什么?

Lora是一个多义词&#xff0c;根据不同的上下文可以指代多种事物。以下将详细介绍几种主要的含义&#xff1a; LoRa技术 LoRa&#xff08;Long Range Radio&#xff09;是一种低功耗广域网&#xff08;LPWAN&#xff09;无线通信技术&#xff0c;以其远距离、低功耗和低成本的特…