1、背景:
近期又有同事和客户在测试关于云存储的相关事项,所以我也重新捡起来部署测试一遍,同时将一些注意事项提出,有任何问题,欢迎沟通。本教程仅作为技术参考,并不代表所有的技术方案,参考赛姐的文档和博客所得。
2、部署环境
操作系统:CentOS 8.3
minio下载:MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容
GIS软件:ArcGISPro、 ArcGIS Server、
3、环境搭建
3.1 修改机器名和解析
操作系统的安装过程就不详细介绍了,现在操作系统准备好之后,我们将hosts文件进行修改,添加一个域名后缀通过软件安装的环境检测,我这边用的 xxinyu.minio 。
同时输入 hostnamectl set-hostname xxinyu.minio 去修改机器名。
3.2 关闭防火墙和禁用IPV6
关闭防火墙:
systemctl stop firewalld
禁用防火墙的开机启动:
systemctl disable firewalld
禁用IPV6
vi /etc/sysctl.conf
加入以下内容
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
执行 sysctl –p
3.3 创建软件安装账户
useradd arcgis
passwd arcgis
3.4 修改系统句柄数
vi /etc/security/limits.conf
以下内容写进去 (注意:此处arcgis是你创建的用户名)
arcgis soft nofile 65535
arcgis hard nofile 65535
arcgis soft nproc 25059
arcgis hard nproc 25059
3.5 软件包上传之后进行授权
chown arcgis:arcgis /home/ArcGIS_Server_Linux_113_zh_CN_190315.tar.gz
chown arcgis:arcgis /home/ServerAdvanced.ecp
3.6 利用openssl创建证书(关键是echo那一行的IP和域名)
openssl genrsa -out minio.key 2048
openssl req -new -key minio.key -out minio.csr
echo "subjectAltName = DNS.1:*.xxinyu.minio, DNS.2:xxinyu.minio, IP.1:10.10.10.111" > cert_extensions
openssl x509 -req -sha256 -in minio.csr -signkey minio.key -extfile cert_extensions -out minio.crt -days 3650
openssl pkcs12 -inkey minio.key -in minio.crt -export -out minio.pfx -name minio
3.7 安装minIO
mkdir /home/agsminio
cp minio /home/agsminio/
chmod +x /home/agsminio/minio
cd /home/agsminio
先执行一下./minio server /home/agsminio/ 然后ctrl + c 退出
cp /home/minio.crt ~/.minio/certs/public.crt
cp /home/minio.key ~/.minio/certs/private.key
cat ~/.minio/certs/public.crt >> /etc/pki/tls/certs/ca-bundle.crt
vi ~/.bashrc 加入下面三行参数
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=admin123
export MINIO_DOMAIN=xxinyu.minio
source ~/.bashrc
正式执行
nohup ./minio server /home/agsminio/ --address :443 --console-address :41413 >minio.log 2>&1&
3.8 配置 minIO的 bucket
浏览器登录https://10.10.10.111 或者 https://xxinyu.minio 提示不安全的链接。需要您把linux中创建的pfx证书复制到客户端,双击安装到本地计算机受信任的根证书颁发机构
然后访问安全连接,创建一个bucket
3.9 将bucket的vhost写入hosts
vi /etc/hosts
3.10 安装GISServer创建站点
su arcgis
cd /home
tar -zxvf ArcGIS_Server_Linux_113_zh_CN_190315.tar.gz
cd /home/ArcGISServer_Chinese_CN/
./Setup -m silent -l yes -a /home/ServerAdvanced.ecp
创建站点
/home/arcgis/server/tools/createsite/createsite.sh -u siteadmin -p admin123
3.11 更改GISserver的默认端口证书
浏览器访问
https://10.10.10.111:6443/arcgis/admin/machines/xxinyu.minio/sslcertificates
首先点击importRootOrIntermediate 导入生成的crt,上传后点击import
然后返回上一级目录 点击 importExistingServerCertificate ,passwd输入的是您生成证书时候的密钥,alias自定义名称,后面需要用到。上传pfx之后,点击submit
回到 https://10.10.10.111:6443/arcgis/admin/machines/XXINYU.MINIO ,点击edit
在Web SSL 处更改名称,填写刚才导入PFX时填写的Alias,然后 点击 save
3.12 更改GISserver通过http访问
浏览器输入,点击update
https://10.10.10.111:6443/arcgis/admin/security/config
将其切换为 http和https,之后可以通过http访问站点和服务
http://10.10.10.111:6080/arcgis/manager
3.13 GISPro注册 S3
在装有pro所在机器的hosts 文件里添加对应的解析记录
10.10.10.111 xxinyu.minio
10.10.10.111 agsminio.xxinyu.minio
打开GISPro,搜索,创建云存储连接文件,或者在数据管理工具箱中找到
打开之后填写对应的信息,ID和密钥就是minio的账户密码,服务提供商可以选择Amazon,也可以选择Minio,服务端点为minio所在机器域名。
如果创建不成功:见文末解决办法。
然后在插入选项卡,将云存储连接文件添加进来
3.13 GISServer注册 S3
访问 https://10.10.10.111:6443/arcgis/manager/site.html
类型选择Amazon S3,输入minio的账户密码,区域选择自定义,将私有URL填写为机器名字 例如我的就是https://xxinyu.minio,存储段选择创建的桶名,勾选上注册缓存目录。
此处如果提示ID或者key无效,先检查账户密码,如果确认账户密码不对,凭据类型设置为IAM角色。
4、常用服务发布
4.1准备工作
本章节主要是各类服务包的发布,利用Extract Package工具(提取包)解压到云存储中,然后用rest api发布服务
S3管理的客户端可以下载一个cyberduck Download
获取已注册的S3的ID
https://10.10.10.111:6443/arcgis/admin/data/items/cloudStores/agsminio
4.1 三维场景服务
4.1.1 提取数据
将所有的三维数据处理成I3S成果,格式为SLPK ,利用解压工具解压到云存储中。
执行成功后可以在看到在 cyberduck 中我们的数据,解压后的成果是一个带.i3srest的文件夹。
4.1.2 服务发布
访问 https://agsminio.xxinyu.minio:6443/arcgis/admin/services 选择 CreateService
输入如下参数:点击创建
{
"serviceName": "slpk111",
"type": "SceneServer",
"description": "",
"capabilities": "Scene,Data,Query",
"provider": "ArcObjects11",
"clusterName": "default",
"minInstancesPerNode": 0,
"maxInstancesPerNode": 0,
"instancesPerContainer": 1,
"maxWaitTime": 60,
"maxStartupTime": 300,
"maxldleTime": 1800,
"maxUsageTime": 600,
"loadBalancing": "ROUND_ROBIN",
"isolationLevel": "HIGH",
"configuredState": "STARTED",
"recyclelnterval": 24,
"recycleStartTime": "00:00",
"keepAliveInterva": 1800,
"private": false,
"isDefault": false,
"maxUploadFileSize": 0,
"allowedUploadFileTypes": "",
"properties": {
"pathInCachedStore": "slpk3857.i3srest",
"cacheStoreId": "f81ab40d-3d52-411e-b421-b4692232e7c9",
"byRefToExtractedCache": "true"
},
"extensions": [],
"frameworkProperties": {},
"datasets": []
}
4.2 矢量切片服务
4.2.1提取数据
矢量切片数据,格式为vtpk ,利用解压工具解压到云存储中。
执行成功后可以在看到在 cyberduck 中我们的数据,解压后的成果是一个带 .vtiles 的文件夹。
4.2.2 发布服务
访问 https://agsminio.xxinyu.minio:6443/arcgis/admin/services 选择 CreateService
输入如下参数:点击创建
{
"serviceName": "testvtpk",
"type": "VectorTileServer",
"description": "",
"capabilities": "TilesOnly,Tilemap",
"provider": "ArcObjects11",
"clusterName": "default",
"minInstancesPerNode": 0,
"maxInstancesPerNode": 0,
"instancesPerContainer": 1,
"maxWaitTime": 60,
"maxStartupTime": 300,
"maxIdleTime": 1800,
"maxUsageTime": 600,
"loadBalancing": "ROUND_ROBIN",
"isolationLevel": "HIGH",
"configuredState": "STARTED",
"recycleInterval": 24,
"recycleStartTime": "00:00",
"keepAliveInterval": 1800,
"private": false,
"isDefault": false,
"maxUploadFileSize": 0,
"allowedUploadFileTypes": "",
"properties":{
"pathInCachedStore": "Test.vtiles",
"cacheStoreId": "f81ab40d-3d52-411e-b421-b4692232e7c9",
"byRefToExtractedCache": "true"
},
"extensions": [],
"frameworkProperties": {},
"datasets": []
}
5、实践深坑
5.1 Pro无法创建云存储连接文件现象
5.1.1 解决办法1:客户端需要安装前面步骤所创建的证书
5.1.2 解决办法2:minio服务器端和客户端的时间需要保持一致
首先可以用date命令查看服务器端和客户端的时间是否一致。
注意:我的操作系统是CentOS8,如果操作系统不一致,请自行查看对应的时间同步方法
安装chrony
系统会默认安装并启动,如果系统不存在则需要安装此工具库。
仓库中直接安装
dnf -y install chrony
启动守护进程
systemctl enable –now chronyd
时间同步配置
设置时区
联网的情况下一般设置时区后会通过网络同步时间
timedatectl set-timezone "Asia/Shanghai"
配置chrony.conf
修改配置加入aliyun pool网络时间,也可以加入多个pool服务器
vi /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.centos.pool.ntp.org iburst
pool ntp.aliyun.com iburst
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
- 重新加载配置
systemctl restart chronyd.service
- 执行时间同步命令
chronyc sources -v
- 查看当前系统时间
date
5.2 在执行时间同步的时候,遇到CentOS8更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist
5.2.1 错误重现
5.2.2 原因 :
CentOS Linux 8已于 2021年12月31日停止更新和维护,由于CentOS 团队从官方镜像中移除CentOS 8的所有包,所以在使用yum源安装或更新会报上述失败错误。
5.2.3 解决办法
进入仓库源文件夹下
cd /etc/yum.repos.d/
修改镜像配置内容
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
清空原有缓存,并重新生成
yum clean all && yum makecache
更新软件包
yum update -y
就可以解决问题了