云环境下地理科学应用的部署与实践
在当今数字化时代,地理科学应用在各个领域发挥着越来越重要的作用。将地理科学应用部署到云服务上,能够充分利用云的强大计算能力和灵活性,满足地理科学应用对资源的高要求。然而,与简单的 Web 应用部署相比,地理科学应用的部署过程更为复杂。下面让我们深入了解地理科学应用部署的相关知识和实践案例。
1. 地理科学应用的常见组件
地理科学应用部署到云服务需要更复杂的硬件和软件配置,主要包括以下几个常见组件:
-
服务器端编程
:服务器端编程是一种通过直接运行程序来生成动态 Web 页面以满足用户请求的技术。服务器端程序在服务器上执行,生成的 Web 内容传递给最终用户。常见的服务器端编程语言有 ASP、PHP、JSP、Perl 和 Ruby 等。对于许多基于 Web 的地理科学应用,需要从数据库或地理科学服务中检索数据来生成动态 Web 内容。服务器端编程具有以下能力:
- 提供对地理科学服务(如地图图层服务)的安全访问。
- 提供与数据库交互的连接。
- 使用应用逻辑和最新数据生成新结果。
- 应用开发人员可以通过更改数据库中存储的信息轻松更新 Web 应用,而无需更改 Web 页面。服务器端编程是大多数在线地理科学应用和云服务 Web 控制台的默认必需组件。
-
数据库
:数据库是地理科学应用中的另一个常见组件。地理科学应用依赖大量异构的地理科学数据,如地球观测(EO)数据。数据库可用于存储、管理和检索地理科学数据和元数据。许多数据库管理系统(DBMS)具有空间插件,使传统数据库能够存储地理科学数据,这种数据库被称为空间数据库。使用空间数据库可以帮助减少数据冗余、提高数据访问性能和增强数据安全性。例如,GEOSS 信息交换中心基于 PostgreSQL/PostGIS;Climate@Home 基于 MySQL 开发。
-
高性能计算
:地理科学数据处理和分析通常很耗时,尤其是对于大型数据集。许多地理科学应用(如沙尘暴预报和实时路由)需要快速响应,这需要大量的计算资源。传统的单处理单元往往无法满足这些应用的计算需求。高性能计算(HPC)提供了解决方案,并行计算是实现 HPC 的常用方法,它可以在更短的时间内处理更大的数据集和更高的分辨率。并行计算将串行计算任务分解为子任务,并将子任务分配到不同的处理器上。常见的任务分解方法有两种:
-
域分解
:将数据分区并分布到不同的处理器上,每个处理器处理一部分数据。
-
功能分解
:每个处理器同时执行过程的不同部分。在地理科学应用中,域分解更为常用。
一个 HPC 系统通常由一个头节点和多个计算节点组成。计算节点可以独立运行并通过计算机网络进行通信。所有节点上都安装和配置了中间件,以监控和支持头节点与计算节点之间的通信。头节点负责调度和分发任务到计算节点、通过配置中间件激活计算任务以及收集计算节点的结果。可以使用一些开源解决方案来部署 HPC 系统,如 Condor、MPICH 和 Hadoop MapReduce。
2. 云环境下地理科学应用的部署流程
部署地理科学应用到云服务的一般工作流程与简单 Web 应用的部署类似,但在“设置环境”和“部署应用”步骤中有特殊考虑:
-
设置环境
:虚拟机默认包含操作系统,但许多地理科学应用需要一些软件和库,如 HTTP 服务器、DBMS 和 Java 运行时环境(JRE)等。这些软件和库需要正确安装和配置,同时还需要设置环境变量。例如,Java 应用需要 JAVA_PATH 和 PATH,Tomcat 服务器需要 JRE_PATH。
-
部署应用
:在部署应用之前,需要根据应用需求对虚拟机进行适当的定制,例如使用数据库脚本定制数据库,配置虚拟机的存储服务、电子邮件服务和日志服务等。
下面是部署地理科学应用到云服务的一般步骤流程图:
graph LR
A[云账户管理] --> B[安全、访问管理]
B --> C[启动实例]
C --> D[连接到实例]
D --> E[为应用创建镜像]
E --> F[部署应用]
F --> G[定制化]
H[设置环境] --> F
I[软件] --> H
J[库] --> H
K[其他] --> H
3. 实践案例
为了更好地理解地理科学应用在云服务上的部署过程,下面介绍两个典型的实践案例。
3.1 数据库驱动的 Web 应用
大多数云提供商将数据库作为服务提供给消费者,例如亚马逊网络服务(AWS)提供关系数据库服务(RDS)、DynamoDB 和 SimpleDB;Windows Azure 提供 SQL Azure。云消费者也可以在虚拟机上安装自己喜欢的 DBMS。
以 Drupal 为例,Drupal 是一个开源的内容管理框架,支持通过复杂的编程接口组织、管理和发布 Web 内容。地理科学应用可以基于 Drupal 构建,Drupal 需要一个数据库来存储 Web 内容,如 MySQL、PostgreSQL 和 SQL 服务器等。下面是将基于 Drupal 的 Web 应用(由 MySQL 数据库支持)部署到 Amazon EC2 的步骤:
1.
授权网络访问
:打开安全外壳(SSH)的端口 22 和 HTTP 的端口 80。
2.
启动实例
:Drupal 支持大多数 Linux 版本,但 Drupal 社区强烈推荐使用 Ubuntu。因此,选择 Ubuntu 12.04 LTS 镜像来托管应用。可以从 Amazon EC2 管理控制台的快速启动向导或 AWS 市场启动该镜像。
3.
登录到实例
:Linux 和 Mac 用户可以在终端中使用 SSH 命令登录到实例;Windows 用户可以使用 PuTTY。
4.
设置环境
:登录到实例后,首先要设置环境,安装和配置 Apache HTTP 服务器和 MySQL DBMS。可以使用以下命令:
$: sudo apt-get update
$: sudo apt-get install apache2
$: sudo apt-get install mysql-server mysql-client php5-gd
$: sudo tasksel install lamp-server
使用以下命令确保安装安全:
$: sudo mysql_secure_installation
建议启用 Apache2 的重写功能,以帮助正确重定向 Drupal 的 URL。修改配置文件
/etc/Apache2/sites-available/default
,将
AllowOverride None
替换为
AllowOverride All
,可以使用 GNU nano 进行修改。执行以下命令激活 Apache 的重写模块:
$: sudo a2enmod rewrite
创建 MySQL 账户和数据库:
$: mysql -u root -p
mysql> create database drupal;
mysql> grant all privileges on drupal.* to ec2drupal@localhost identified by ‘your_password’;
mysql> flush privileges;
mysql> \q
-
将文件传输到实例
:有两种方式将 Drupal 安装文件传输到运行的实例:
- 直接在运行的实例上从 Drupal 网站下载。
- 在本地 Linux/Mac/Windows 机器上下载文件,然后上传到运行的实例。可以使用以下命令从 Drupal 网站下载安装文件:
$: wget http://ftp.drupal.org/files/projects/drupal-7.19.zip
使用
scp
命令或 Winscp 上传文件:
$: scp -i ubuntu.pem drupal-7.19.zip ubuntu@ec2-23-22-98-241.compute-1.amazonaws.com:/home/ubuntu
- 部署应用 :将 Drupal 安装文件传输到实例后,使用以下命令部署应用:
$: sudo apt-get install unzip
$: sudo unzip drupal-7.19.zip
$: sudo mv drupal-7.19 /var/www/drupal
$: sudo chown www-data:www-data /var/www/drupal –R
$: sudo service apache2 restart
-
定制化
:通过 Web 界面(
http://INSTANCEIP/Drupal/install.php)配置 Drupal 的数据库和网站管理员。可以按照向导完成所有步骤来启动网站。例如,添加和定制 Simple Google Maps 模块的步骤如下:- 从 Drupal 的项目网站下载该模块。
-
将模块文件提取到 Drupal 路径
/var/www/Drupal/sites/all/modules。 - 管理员登录到网站,在“主页 - 管理 - 模块”页面启用该模块。
- 启用地图模块后,在“主页 - 管理 - 结构 - 内容类型”页面为基本页面内容添加一个字段。
- 在“主页 - 管理 - 结构 - 内容类型 - 基本页面”页面管理新字段的显示。
- 点击“齿轮”图标配置新的 Google 地图字段,设置地图大小为 800*600,缩放级别为 4。
- 在添加基本页面时,在 Google 地图字段中输入名称或地址(如美国)来设置初始地图位置。勾选“提供菜单链接”复选框并输入菜单链接标题,使地图显示在自己的标签中。
- 从运行的实例创建新的 AMI :创建新的 AMI 为这个 Web 应用进行完整备份。
3.2 典型的高性能计算应用
下面介绍如何将一个高性能计算应用部署到 Amazon EC2 以支持大规模数字高程模型(DEM)插值,具体步骤如下:
1.
授权网络访问
:打开 SSH 的端口 22 以及头节点和计算节点之间通信的端口(如 9000 - 9999)。
2.
启动实例
:EC2 提供集群实例用于运行 HPC 应用。集群实例提供相对较高的 CPU 资源和增强的网络性能,非常适合 HPC 应用。可以从特殊的 EBS(弹性块存储)支持的 Amazon 机器镜像(AMI)使用硬件虚拟机(HVM)虚拟化启动集群实例。用户还可以根据地理科学应用是数据密集型还是计算密集型选择高 CPU 实例或高内存集群实例。在这个例子中,启动一个具有 8 个 CPU 核心和 23 GB 内存的集群实例。启动头节点实例后,使用 SSH 登录到节点:
$ ssh -i EC2Key.pem root@ec2-67-202-12-83.compute-1.amazonaws.com
- 安装中间件包 :在这个案例中,选择 Condor 作为中间件解决方案。在 CentOS 6 系统上安装 Condor 的 shell 命令如下:
$ rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm ## 安装额外的包
$ yum install yum-plugin-priorities
$ rpm -Uvh http://repo.grid.iu.edu/osg-el6-release-latest.rpm
$ yum install condor
$ touch /etc/condor/condor_config.local ## 创建 Condor 配置文件
安装成功后,在
/etc/condor/config.d/
目录下创建名为
local.conf
的配置文件,并添加以下命令:
## OSG 集群配置
# 节点上的守护进程列表(Condor 中央管理器需要收集器和协商器,
# 调度器需要提交作业,启动器需要运行作业)
DAEMON_LIST = MASTER, COLLECTOR, NEGOTIATOR
使用以下命令启动和停止 Condor 服务:
$ service condor start ## 启动服务
$ service condor stop ## 停止服务
使用 Condor 的几个重要命令如下表所示:
| 命令 | 描述 | 使用方法 | 示例 |
| ---- | ---- | ---- | ---- |
| condor_submit | 提交作业 | condor_submit [提交文件] | $ condor_submit submit.file |
| condor_q | 显示作业状态 | condor_q [集群] | $ condor_q 1170 |
| condor_rm | 从队列中移除作业 | condor_rm [集群] | $ condor_rm 1170 |
| condor_status | 显示资源状态 | condor_status | $ condor_status-all |
由于编译 DEM 插值代码需要 Java 开发工具包(JDK),因此所有节点都必须安装 JDK。基于 Amazon Linux AMIs 的实例将预装 JDK,否则可以从 Oracle 下载 JDK(版本 6,更新 14)二进制包,并使用以下命令安装:
[root@domU-12-31-39-13-DD-FF ~]# chmod a+x jdk-6u14-linux-x64.bin
[root@domU-12-31-39-13-DD-FF ~]# ./jdk-6u14-linux-x64.bin
- 从头节点创建新的 AMI :创建新的 AMI 存储 HPC 环境的软件依赖和配置,以防头节点崩溃。同时,也可以通过直接从这个 AMI 启动计算实例轻松向集群添加新的计算节点。
- 从新的 AMI 启动其他实例作为计算节点 :参考步骤 2 的方法启动计算节点。
-
配置所有节点上的中间件以启用通信
:从新的 AMI 启动计算节点后,需要对头节点和计算节点进行进一步配置。在计算节点上,将配置文件
/etc/condor/config.d/local.conf修改为以下内容:
## OSG 集群配置
# 节点上的守护进程列表(Condor 中央管理器需要收集器和协商器,
# 调度器需要提交作业,启动器需要运行作业)
DAEMON_LIST = MASTER, SCHEDD, STARTD
同时,计算节点应具有一个本地配置文件
/etc/condor/condor_config.local
,内容如下:
UID_DOMAIN = $(FULL_HOSTNAME)
COLLECTOR_NAME = "OSG Cluster Condor at $(UID_DOMAIN)"
FILESYSTEM_DOMAIN = $(UID_DOMAIN)
ALLOW_WRITE = *.*
CONDOR_ADMIN = root@$(FULL_HOSTNAME)
CONDOR_HOST = ip-10-112-79-17.ec2.internal ## 头节点域名
IN_HIGHPORT = 9999
IN_LOWPORT = 9000
SEC_DAEMON_AUTHENTICATION = required
SEC_DAEMON_AUTHENTICATION_METHODS = password
SEC_CLIENT_AUTHENTICATION_METHODS = password,fs,gsi
SEC_PASSWORD_FILE = /var/lib/condor/condor_credential
ALLOW_DAEMON = condor_pool@*
NEGOTIATOR_INTERVAL = 20
TRUST_UID_DOMAIN = TRUE
START = TRUE
SUSPEND = FALSE
PREEMPT = FALSE
KILL = FALSE
删除默认的 Condor 配置文件
/etc/condor/condor_config.local
以避免混淆。
7.
传输 DEM 数据和插值代码
:配置并启动基于云的 HPC 集群后,将 DEM 数据和插值代码传输到头节点。为了向 Condor 计算池提交 HPC 任务,需要创建一个提交文件来指定处理参数,如输入目录、计算资源要求、程序和数据文件以及并发进程数。以下是 DEM 插值的提交文件示例:
Universe = java
Executable = interpolate.class
Arguments = interpolate DEMfile.txt ## interpolate 是 Java 主程序,DEMfile.txt 是输入
initialdir = dir.$(Process) ## 输入目录
output =../interpolate.output.$(Process) ## 输出文件
error = interpolate.error.$(Process)
log = ../interpolate.log
requirements = (Memory > 1024) # 选择内存大小大于 1024Mb 的机器
transfer_input_files = MyPoint.class, PngWriter.class,interpolate.class, cutfile.txt
should_transfer_files = ALWAYS
when_to_transfer_output = ON_EXIT
queue 12 ## 并发进程数
使用以下命令提交任务:
[root@domU-12-31-39-13-DD-FF ~]# su condor # 使用 condor 账户
[root@domU-12-31-39-13-DD-FF ~]# condor_submit interpolate_submit
提交任务后,可以使用
condor_q
命令检查所有任务的状态。输出文件
interpolate.output.X
(X 表示进程号)包含每个任务的状态。
通过以上介绍,我们了解了地理科学应用在云服务上部署的常见组件、一般流程以及两个典型的实践案例。虽然不同的地理科学应用可能依赖不同的技术和配置,但总体的部署工作流程和步骤适用于大多数应用。希望这些内容能为你在地理科学应用的云部署方面提供有价值的参考。
云环境下地理科学应用的部署与实践(续)
4. 总结与问题探讨
地理科学应用在云服务上的部署是一个复杂但具有重要意义的过程。通过前面的介绍,我们了解到部署地理科学应用到云服务需要考虑多个常见组件,包括服务器端编程、数据库和高性能计算。同时,遵循特定的部署流程,如设置环境和部署应用,并结合实际案例进行操作,可以更好地实现地理科学应用在云服务上的部署。
然而,在实际应用中,还可能会遇到一些问题,下面对相关问题进行探讨。
4.1 其他所需组件
除了服务器端脚本、数据库和高性能计算外,地理科学应用可能还需要其他组件,例如:
-
地理信息系统(GIS)软件
:用于处理和分析地理空间数据,如 ArcGIS、QGIS 等。许多地理科学应用需要进行地图绘制、空间分析等操作,GIS 软件可以提供强大的功能支持。
-
数据可视化工具
:将地理科学数据以直观的图表、地图等形式展示出来,帮助用户更好地理解数据。常见的数据可视化工具包括 Tableau、PowerBI 等。
-
传感器数据采集设备和接口
:对于一些实时监测的地理科学应用,需要通过传感器采集数据,并通过相应的接口将数据传输到系统中进行处理和分析。
4.2 部署应用到云服务的一般步骤
部署应用到云服务的一般步骤如下:
1.
云账户管理
:创建和管理云服务账户,确保账户的安全性和权限设置。
2.
安全、访问管理
:设置安全策略,如防火墙规则、访问控制列表等,保障应用的安全访问。
3.
启动实例
:根据应用的需求选择合适的实例类型,并启动实例。
4.
连接到实例
:使用 SSH 等方式连接到启动的实例。
5.
为应用创建镜像
:将应用所需的软件、配置等打包成镜像,方便后续的部署和使用。
6.
设置环境
:安装和配置应用所需的软件、库和环境变量。
7.
部署应用
:将应用程序部署到实例上,并进行必要的配置和测试。
8.
定制化
:根据应用的具体需求对实例进行定制化设置,如数据库配置、存储服务配置等。
以下是部署应用到云服务的一般步骤流程图:
graph LR
A[云账户管理] --> B[安全、访问管理]
B --> C[启动实例]
C --> D[连接到实例]
D --> E[为应用创建镜像]
E --> F[设置环境]
F --> G[部署应用]
G --> H[定制化]
4.3 云提供商的数据库服务
不同的云提供商提供了多种数据库服务:
-
亚马逊网络服务(AWS)
:提供关系数据库服务(RDS)、DynamoDB 和 SimpleDB 等。RDS 支持多种数据库引擎,如 MySQL、PostgreSQL、Oracle 等;DynamoDB 是一种 NoSQL 数据库,适用于高可扩展性和低延迟的应用;SimpleDB 是一种简单的键值存储数据库。
-
Windows Azure
:提供 SQL Azure,它是一种基于云的关系数据库服务,支持 SQL Server 数据库引擎。
4.4 在 Drupal 中启用其他模块
在 Drupal 案例中,如果要启用其他模块(如电子邮件模块),可以按照以下步骤操作:
1.
下载模块
:从 Drupal 的项目网站下载所需的模块。
2.
提取模块文件
:将下载的模块文件提取到 Drupal 路径
/var/www/Drupal/sites/all/modules
。
3.
启用模块
:管理员登录到网站,在“主页 - 管理 - 模块”页面找到要启用的模块,并勾选相应的复选框,然后保存设置。
4.
配置模块
:根据模块的要求进行相应的配置,例如设置电子邮件服务器的地址、端口等信息。
4.5 其他地理科学应用
除了文中提到的应用外,还有许多其他的地理科学应用,例如:
1.
地质灾害预警系统
:通过对地质数据的监测和分析,提前预警地震、滑坡、泥石流等地质灾害,保障人民生命财产安全。
2.
农业资源管理系统
:对农田土壤、气象、作物生长等数据进行管理和分析,为农业生产提供决策支持,提高农业生产效率。
3.
城市规划与管理系统
:利用地理空间数据进行城市规划、土地利用分析、交通规划等,优化城市布局和资源配置。
4.
海洋环境监测系统
:实时监测海洋温度、盐度、海流等环境参数,为海洋资源开发、海洋环境保护等提供数据支持。
5.
生态系统评估系统
:评估生态系统的健康状况、服务功能等,为生态保护和可持续发展提供科学依据。
4.6 在 Amazon EC2 中配置虚拟 Condor HPC 环境
在 Amazon EC2 中配置虚拟 Condor HPC 环境的步骤如下:
1.
授权网络访问
:打开 SSH 的端口 22 以及头节点和计算节点之间通信的端口(如 9000 - 9999)。
2.
启动实例
:选择合适的实例类型,如集群实例,启动头节点实例。
3.
安装中间件包
:在 CentOS 6 系统上安装 Condor 中间件,具体命令如下:
$ rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm ## 安装额外的包
$ yum install yum-plugin-priorities
$ rpm -Uvh http://repo.grid.iu.edu/osg-el6-release-latest.rpm
$ yum install condor
$ touch /etc/condor/condor_config.local ## 创建 Condor 配置文件
-
配置 Condor
:在
/etc/condor/config.d/目录下创建名为local.conf的配置文件,并添加以下命令:
## OSG 集群配置
# 节点上的守护进程列表(Condor 中央管理器需要收集器和协商器,
# 调度器需要提交作业,启动器需要运行作业)
DAEMON_LIST = MASTER, COLLECTOR, NEGOTIATOR
- 启动和停止 Condor 服务 :使用以下命令启动和停止 Condor 服务:
$ service condor start ## 启动服务
$ service condor stop ## 停止服务
- 创建新的 AMI :从头节点创建新的 AMI,存储 HPC 环境的软件依赖和配置。
- 启动计算节点 :从新的 AMI 启动其他实例作为计算节点。
-
配置计算节点
:在计算节点上修改配置文件
/etc/condor/config.d/local.conf和/etc/condor/condor_config.local,具体内容参考前面的案例。 - 传输数据和代码 :将 DEM 数据和插值代码传输到头节点,并创建提交文件提交 HPC 任务。
通过以上对相关问题的探讨,可以更好地应对地理科学应用在云服务上部署过程中可能遇到的各种情况,进一步优化部署过程,提高应用的性能和可靠性。
总之,地理科学应用在云服务上的部署是一个不断发展和完善的领域,随着技术的不断进步和应用需求的增加,我们需要不断学习和探索,以更好地实现地理科学应用的价值。希望本文的内容能为相关领域的从业者和爱好者提供有益的参考和帮助。
1590

被折叠的 条评论
为什么被折叠?



