《水经注地图服务》横向扩展部署说明

news2024/11/24 18:37:08

在地图服务器中,随着数据量的不断增大,可能会存在原有的存储设备空间不够的情况,或无法承受高并发请求的情况。

此时,我们就可以通过横向扩展部署,增加新的设备来进行分担缓减,从而达到动态扩展存储设备以及动态对高并发请求进行分流的目的。

这里就来讲解一下横向扩展部署的具体实施方法,并以新增服务器的操作系统为Linux为例,目的主要是为了解决存储空间不足的问题。

挂载文件系统

当存储空间不足时,首先就需要对原有的数据进行拆分,先将旧的设备挂载到新的设备上(反之也可以,只要能够实现数据传输即可)。

当然,采取移动硬盘直接拷贝也是可以的,但是考虑到数据的大小(至少几十个TB),采取直接让两台机器实现数据传输是更好的选择,具体的操作可以参考下面的命令:

sudo mount -t nfs [NFS服务器地址]:[共享路径] [本地挂载点]

sudo 获取管理员权限

mount 挂载命令

-t nfs 指定挂载设备类型为远程NFS服务器

操作示例:

sudo mount -t nfs  192.168.3.100:vol1  /home/rivermap/288T_vol1

挂载后的文件系统

 

数据拷贝

由于新的服务器是Linux操作系统,我们通过命令进行拷贝,如果是Windows操作系统,直接拷贝即可。

根据对数据大小的估计,这里我们将原服务器上编号4-512的文件夹拷贝到新的服务器上,使用-r选项递归复制,通过正则表达式(表示需要拷贝的文件夹名称),具体的操作参考命令如下:

cp [选项] [数据目录]{开始..结束} [目标目录]

​选项:

-r 或 --recursive:递归复制目录及其内容。

-i 或 --interactive:在复制之前进行交互式确认,避免覆盖现有文件。

-u 或 --update:仅复制比目标文件更新的源文件。

-v 或 --verbose:显示详细的复制过程。

-p 或 --preserve:保留源文件的属性,包括所有者、权限和时间戳。

-f 或 --force:强制复制,覆盖现有的目标文件。

-n 或 --no-clobber:不要覆盖现有的目标文件。

-s 或 --symbolic-link:创建符号链接而不是复制实际文件。

-l 或 --link:创建硬链接而不是复制实际文件。

--backup:在复制时创建备份文件。

​通配符操作:

*:匹配任意字符序列(包括空字符),例如,*.txt 匹配所有以 .txt 结尾的文件。

?:匹配单个字符,例如,file?.txt 匹配类似于 file1.txt、fileA.txt 的文件。

[...]:匹配方括号内的任意单个字符,例如,file[123].txt 匹配 file1.txt、file2.txt、file3.txt。

[!...] 或 [^...]:匹配除方括号内指定字符之外的任意单个字符,例如,file[!12].txt 匹配除了 file1.txt 和 file2.txt 之外的文件。

​操作示例:

cp -r /home/rivermap/288T_vol1/G2120west/West/{4..512} /media/rivermap/96T/West512

拷贝命令

 

启用mod_proxy和mod_proxy_balancer模块

为了实现服务分流,需要启用mod_proxy和mod_proxy_balancer这两个模块,模块启用需修改\Apache24\conf\httpd.conf文件,删除两个模块前面的#,去掉注释即可。

启用模块

 

启用虚拟主机

除了开启模块之外,还需要启用虚拟主机配置,同样的还是去掉注释的#号即可,如下图所示。

启用虚拟主机配置

 

添加虚拟主机

一个Apache可以监听多个端口,可以通过虚拟主机监听指定端口的服务,添加监听端口方法如下图所示。

添加监听端口

打开\Apache24\conf\extra\httpd-vhosts.conf 文件,添加虚拟主机并分别绑定8085端口和8080端口。

操作示例:

<VirtualHost *:8085>
</VirtualHost>
<VirtualHost *:80>
</VirtualHost>

添加反向代理服务

上一步完成了虚拟主机的添加,现在为虚拟主机添加反向代理:

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
ProxyPass 收到的请求地址 转发的代理服务器
</VirtualHost>

ProxyPass 将收到的请求转发到指定的服务器上去

ProxyRequests off 开启反向代理服务 on 开启代理服务

​操作示例:

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
Proxy /WeServer/ http://localhost:8080
</VirtualHost>

​上面的操作表示将8085收到的请求中带有/WeServer/的url转发到8080服务上去

添加负载均衡服务器

添加完反向代理之后,在上一步的基础上添加一个负载均衡服务器。

<VirtualHost *:8085>
ProxyRequests Off
<Proxy 负载均衡服务器名字>
     BalancerMember 后端服务器成员 负载均衡配置
  ProxySet 负载均衡算法
</Proxy>
ProxyPass 收到的请求地址 转发的代理服务器
ProxyPassReverse 收到的请求地址 转发的代理服务器
</VirtualHost>

​Proxy 负载均衡器:

BalancerMember 负载均衡器的成员(后端服务器)以及其配置

​ProxySet 负载均衡算法:

​lbmethod=byrequests:按请求数进行负载均衡。根据每个后端服务器收到的请求数来分配请求。

​lbmethod=bytraffic:按流量进行负载均衡。根据每个后端服务器处理的数据流量来分配请求。

​lbmethod=bybusyness:按繁忙程度进行负载均衡。根据每个后端服务器的当前负载情况来分配请求。

​lbmethod=heartbeat:使用心跳检测进行负载均衡。通过监视后端服务器的心跳信号来确定其可用性,并根据可用性分配请求。

​操作示例:设置一个名为balancer://mycluster/的负载均衡器,将8085上收到的请求转发到该负载均衡器上,负载均衡器中有两个服务,请求会按照1:1的转发到两个服务器上。

<VirtualHost *:8085>
ProxyRequests Off
# 反向代理的配置
ProxyPass / balancer://mycluster/  
ProxyPassReverse  / balancer://mycluster/
<Proxy balancer://mycluster>
# 后端服务器成员的配置
BalancerMember http://backend1.example.com loadfactor=1
BalancerMember http://backend2.example.com loadfactor=1
# 其他负载均衡相关的配置
ProxySet lbmethod=roundrobin
</Proxy>
</VirtualHost>

添加分流

上一步添加了一个负载均衡服务器后,再增加一个负载均衡服务器来分流:

<VirtualHost *:8085>
ProxyRequests Off
<Proxy 负载均衡服务器1>
     BalancerMember 后端服务器成员 负载均衡配置
  ProxySet 负载均衡算法
</Proxy>
<Proxy 负载均衡服务器2>
     BalancerMember 后端服务器成员 负载均衡配置
  ProxySet 负载均衡算法
</Proxy>
<LocationMatch 正则表达式>
    ProxyPass / 负载均衡服务器2
    ProxyPassReverse / 负载均衡服务器2
</LocationMatch>
ProxyPass  / 负载均衡服务器1
ProxyPassReverse  / 负载均衡服务器1
</VirtualHost>

​LocationMatch用于匹配请求 URL 路径,当获取的请求满足后面的正则表达的时候,就会启用他下面的配置,否则就使用下面的默认配置。

​操作示例:

该虚拟主机上存在两个服务,分别占用9010端口和9015端口,如果收到的url中带有wmts就转发给9010端口的服务,否则就转发给9015的服务。

<VirtualHost *:8085>
  <Proxy balancer://mycluster2>
    BalancerMember http://127.0.0.1:9010/WeServer/
  </Proxy>
  <Proxy balancer://mycluster>
    BalancerMember http://127.0.0.1:9015/WeServer/
  </Proxy>
<LocationMatch "/wmts/.*">
    ProxyPass / balancer://mycluster2
    ProxyPassReverse / balancer://mycluster2
</LocationMatch>
ProxyPass /balancer://mycluster/
ProxyPassReverse / balancer://mycluster/ 
</VirtualHost>

结果验证

打开\Apache24\conf\httpd.conf文件,启用log_config_module模块(去掉注释的#号),如下图所示。

启用log_config_module模块

​找到CustomLog "logs/access.log" combined,取消注释,开放请求信息日志,如下图所示。

开放请求信息日志

CustomLog请求可以设置日志请求信息显示格式,也可以使用系统预定义的日志格式

​common:常用的日志格式,包含常见的请求信息。

​combined:综合的日志格式,包含更详细的请求信息,如来源 IP、请求时间、请求方法、请求 URL 等。

​完成以上步骤后重启Apache服务,就可以在\Apache24\logs\access.log中看到该服务收到请求,以此判断数据分流时评是否正确,如果分流正确但是没有图,也可检查是否是因为分流时字符拼接错误。

免费从网盘下载的卫星影像和高程DEM如何使用?

只需10分钟,给你全世界!水经注全球三维离线GIS系统

(本文首发于“水经注GIS”公号,关注公号免费领取地图数据)

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

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

相关文章

华为流程体系:IPD流程框架(限制版)

目录 前言 详细内容 专栏列表 CSDN学院课程地址 前言 今天主要来谈谈 IPD 体系的主体框架所涉及的一些相关内容。 其实关于 IPD 体系&#xff0c;我在之前的文章或课程中都有过不同程度的讲解。 但是&#xff0c;由于这个体系所涉及的面是非常广泛的。 这个时候就必须通…

加固你的数据防线:避免成为SQL注入攻击的下一个目标

SQL注入是一种常见的Web应用程序安全漏洞&#xff0c;攻击者利用该漏洞通过构造恶意的SQL查询语句&#xff0c;以执行未经授权的操作或获取敏感数据。本文将介绍SQL注入的概念、攻击原理以及常见的防范方案&#xff0c;帮助开发人员和系统管理员加强对Web应用程序的安全性。 1、…

深入理解迭代器,笛卡尔积,from itertools import product 小白一看就会

文章目录 一、product()是什么&#xff1f;二、product()的具体使用案例代码详细分析 总结 一、product()是什么&#xff1f; 在Python中&#xff0c;product()是内置函数itertools提供的一个工具函数&#xff0c;可以计算多个可迭代对象的笛卡尔积。product()接受一个或多个可…

7、微服务组件gateway

1、引入gateway 在原来的项目中添加gateway模块 gateway是springcloud中的组件&#xff0c;所以要确保父项目的pom.xml中引入了springcloud 那么在gateway模块的pom.xml中引入gateway&#xff0c;如下&#xff1a; <?xml version"1.0" encoding"UTF-8&quo…

Jmeter集成到jenkins

Jmeter集成到Jenkins 序号 修改人 版本 创建日期 修改日期 备注 1 进击的雷神 V1.0 Jmeter集成到Jenkins. 1 软件下载... 4 一:环境配置... 4 1.JDK安装&#xff…

ADC动态指标

量化误差ADC输出-ADC模拟输入 量化噪声功率&#xff1a; 信噪比&#xff1a; 由于仅仅考虑了量化噪声&#xff0c;上式为ADC的SNDR所能达到的极限值 N8,SNDR_max50dB N12,SNDR_max74dB N16,SNDR_max98dB N20,SNDR_max122dB 实际ADC还需要考虑期间噪声和电路非理想特性&am…

Python10行以内代码能有什么高端操作

Python10行以内代码能有什么高端操作 Python凭借其简洁的代码&#xff0c;赢得了许多开发者的喜爱。因此也就促使了更多开发者用Python开发新的模块&#xff0c;从而形成良性循环&#xff0c;Python可以凭借更加简短的代码实现许多有趣的操作。下面我们来看看&#xff0c;我们…

关于组织申报国家重点研发计划“高性能制造技术与重大装备”等重点专项2023年度项目的通知

源自&#xff1a;上海市科学技术委员会 各有关单位&#xff1a; 根据《科技部关于发布国家重点研发计划“高性能制造技术与重大装备”等6个重点专项2023年度项目申报指南的通知》&#xff08;国科发资〔2023〕90号&#xff09;《科技部关于发布国家重点研发计划“文化科技与现…

Linux---端口(nmap、netstat)、进程管理(ps、kill)

1. 端口 端口&#xff0c;是设备与外界通讯交流的出入口。端口可以分为&#xff1a;物理端口和虚拟端口两类。 物理端口&#xff1a;又可称之为接口&#xff0c;是可见的端口&#xff0c;如USB接口&#xff0c;RJ45网口&#xff0c;HDMI端口等。 虚拟端口&#xff1a;是指计…

制定测试计划和测试用例

制定测试计划和测试用例 测试是软件开发过程中很重要的一环&#xff0c;通过测试可以发现和修复软件中的缺陷或错误&#xff0c;保证软件的质量和可靠性。在进行软件测试时&#xff0c;制定合理的测试计划和测试用例是非常必要的&#xff0c;下面我将从这两个方面分别进行讲解。…

第10篇:强化学习Q-learning求解迷宫问题 代码实现

你好&#xff0c;我是郭震&#xff08;zhenguo&#xff09; 今天重新发布强化学习第10篇&#xff1a;强化学习Q-learning求解迷宫问题 代码实现 我想对此篇做一些更加详细的解释。 1 创建地图 创建迷宫地图&#xff0c;包括墙网格&#xff0c;走到墙网格就是负奖励。 注意&…

使用JRS303校验对参数进行提前校验

文章目录 前言JRS303简单使用版本JRS303提供的常用校验注解 JRS303进阶使用版本情景一&#xff1a;对于一个主键id字段我想要新增的时候不校验 但是更新的时候进行校验情景二&#xff1a; 在实际项目中 我们有一些字段只能填入规定的几个值 类似于枚举 那么就需要我们编写自定义…

N-Gram语言模型工具kenlm的详细安装教程

【本配置过程基于Linux系统】 下载源代码&#xff1a; wget -O - https://kheafield.com/code/kenlm.tar.gz |tar xz 编译&#xff1a; makdir kenlm/build cd kenlm/build cmake .. && make -j4 发现报错&#xff1a; 系统中没有cmake&#xff0c;按照错误提示&am…

华为认证 | HCIA-SDN 考试大纲

01 考试概述 02 考试范围 HCIA-SDN V1.0考试覆盖数据通信基础知识&#xff0c;SDN架构&#xff0c;SDN二、三层网络原理&#xff0c;SDN接口协议原理比如OpenFlow协议、Netconf协议、RestFul协议原理&#xff0c;以及在华为交换机与路由器中的实现。 SDN二三层技术&#xff1…

【JVM系列】java类加载机制详解

文章目录 一、类的生命周期二、类的加载过程加载验证准备解析初始化 三、类加载时机四、类加载器分类五、双亲委派原则六、Java字节码文件中的JVM指令 类是在运行期间第一次使用时动态加载的&#xff0c;而不是一次性加载所有类。因为如果一次性加载&#xff0c;那么会占用很多…

chatgpt赋能python:Python怎么生成程序?

Python怎么生成程序&#xff1f; 介绍 Python作为一种高级编程语言&#xff0c;最初是为简化代码编写而设计的。Python是一种相对简单的语言&#xff0c;因此在编写软件时非常有用。随着搜索引擎优化的出现和与之相关的需求&#xff0c;Python成为了生成程序的主要方式之一。…

策略模式(二十五)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了状态模式(二十四), 如果没有看过, 请观看上一章 一. 策略模式 引用 菜鸟教程里面 策略模式介绍: https://www.runoob.com/design-pattern/strategy-pattern.html 在策略模式&#xff08;Strategy Pattern&#xff09;…

【MySQL函数】:让你的数据库操作更高效(二)

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL日期时间、条件判断、系统信息、加密、进制转换和IP地址转换函数的讲解✨ 目录 前言一、日期和时间函数二、条件判断函数三、系统信息函数四、加密函数五、进制转换函数六、IP地址转换函数七、总结 一、日期和时…

chatgpt赋能python:Python怎么直接打出两个括号?

Python怎么直接打出两个括号&#xff1f; 你是否曾经在使用Python编写代码时&#xff0c;需要频繁地输入括号&#xff1f;每次都需要输入Shift键和9/0键来输入左右两个括号&#xff0c;有时还会出现输入错误的情况。那么有没有一种更加快捷的方法来输入括号呢&#xff1f;答案…

【Python 随练】企业奖金计算器

题目&#xff1a; 企业发放的奖金根据利润提成。利润 &#xff1a; 低于或等于 10 万元时&#xff0c;奖金可提 10%&#xff1b;高于 10 万元&#xff0c;低于 20 万元时&#xff0c;低于 10 万元的部分按 10%提成&#xff0c;高于 10万元的部分&#xff0c;可提成7.5%&#…