什么是服务器集群? 这么做是为了在使用不同源的服务器访问服务时依然可以正常访问,不会出现No ‘Access-Control-Allow-Origin’ 的情况,要不要设置,视具体情况而定。 启动后会自动将geoserver.war包解压为web项目geoserver 编辑web.xml 保存。 7.2.下载并解压安装包 7.3.安装nginx 7.4.配置nginx.conf 将端口号改成9090 localhost修改为你服务器ip地址。 其中“ip_hash”的作用是支持session,使其能够访问同一个地址,如果您部署的集群服务有多个GeoServer,但始终在各GeoServer登录页跳来跳去,而无法进入管理页面,那么就是缺少“ip_hash”。 然后在http的server节点中添加location配置,如下所示,其中proxy_pass配置路径转发: location / { } 或 查看nginx进程是否启动: 进入安装目录中, 命令: cd /usr/local/nginx/sbin 启动,关闭,重启,命令: ./nginx 启动 ./nginx -s stop 关闭 ./nginx -s reload 重启 出现如下内容,则表示正常启动 前端页面正常访问服务
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器,集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。一旦在服务器上安装并运行了群集服务,该服务器即可加入集群。群集化操作可以减少单点故障数量,并且实现了群集化资源的高可用性。
为什么要实现服务器集群?
实现服务器集群主要是为了负载均衡(有两台以上的服务器或者站点提供服务)服务器服务将来自客户端的请求,基于某种算法,尽量平分请求到集群的机器中,从而避免一台服务器因为负荷太高而出现故障或导致计算缓慢,集群部署GEOSERVER能够提高请求瓦片的响应速度和WFS数据的请求速度。
软件准备
1.apache-tomcat8
2.geoserver.war
3.nginx软件
说明:tomcat需要下载linux版本,下载地址
https://tomcat.apache.org/download-80.cgi
geoserver下载实现包
https://geoserver.org/release/stable/
3.nginx软件可以下载后上传到服务器,也可以直接用linux命令下载。这里推荐使用linux命令下载,稍后将会介绍。
部署说明
生产环境下geoserver集群的部署应该是一个节点一个机器,如nginx服务器,geoserver node1服务器,geoserver node2服务器,geoserver node2服务器,文件服务器,数据库服务器等来组成linux集群。但是在本次讲解中因为只有一台liunx服务器节点,所以我将其都部署在了同一个机器上,用不同的端口号来进行区分,如果你拥有多台机器,则可以不用修改端口号。
在本次部署中我为各个节点分配的端口为:
1.nginx负载均衡服务器————-9090端口
2.geoserver node1 ——————9091端口
3.geoserver node2 ——————9092端口
4.geoserver node3 ——————9093端口
部署过程
1.准备tomcat,更改服务端口
在linux服务器上适当位置创建目录“geoserver”,下载三个tomcat8服务器软件并解压到目录中,如下图所示
此处我已将三个tomcat服务器的名称重命名为了占用端口的名称
如果不熟悉liunx上tomcat8的部署,参考博客:
Linux系统(Centos)安装tomcat和部署Web项目
https://blog.csdn.net/qq_21077715/article/details/85541685
更改每一个tomcat服务器的服务端口
以tomcat-9091为例
在server.xml中
修改这三处端口即可。
为什么是+1,这是为了区分几个tomcat服务器使用的不同端口,同理,node2是+2,node3是+3。
2.设置tomcat允许跨域
把如下这段,添加在每一个tomcat安装目录下 conf > web.xml中,(我是添加在 589行左右)。<filter> <filter-name>CorsFilter</filter-name> <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> <init-param> <param-name>cors.allowed.origins</param-name> <param-value>*</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3.嵌入geoserver
将geoserver.war上传至每个节点下的webapps目录下。
当tomcat服务器启动后,会自动将war包解压为web项目,此处我之前已经解压过了一遍,所以“geoserver”已经存在了。
4.启动三个tomcat服务器
分别在在bin/下执行sh startup.sh
5.测试geoserver各个节点是否已经启动
在浏览器中输入 ip:9091/geoserver/,进入如下页面则代表成功:
同理去测试另外两个geoserver子节点。
6.为三个geoserver子节点配置数据同步
虽然我们现在已经启动了三个geoserver服务,但是其服务并没有同步,想要三个子节点同时提供一个服务,还需要去三个geoserver的web管理页面配置三个相同的服务,如果节点数很多,这是非常麻烦且不方便的。
所以我们要将三个geoserver节点的数据目录设置为统一的目录,不再使用各个节点默认的单独的目录。最好的方式是将该目录设置到一台NFS文件服务器上,但此处因为我们只有一台机器,我们就创建一个统一的数据目录,命名为GEOSERVER_DATA_DIR。
我们还需要将每个geoserver的数据目录重新指定一下:geoserver/tomcat-9091/webapps/geoserver/WEB-INF/web.xml
设置统一的数据目录<-- <context-param> <param-name>GEOSERVER_DATA_DIR</param-name> <param-value>C:eclipseworkspacegeoserver_trunkciteconfCiteWFSPostGIS</param-value> </context-param> --> <context-param> <param-name>GEOSERVER_DATA_DIR</param-name> <param-value>GEOSERVER_DATA_DIR</param-value> </context-param>
重启三个tomcat服务器。
此时在其中一个节点中发布了服务,其他节点也会同步服务,因为他们的数据目录是一致的。
比如说我在9091节点上发布了图层aerial,在9092,9093上都会同步。
至此,三个geoserver节点的配置完成。
7.配置nginx集群
7.1安装依赖包//一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
//创建一个文件夹 cd /usr/local mkdir nginx cd nginx //下载tar包 wget https://nginx.org/download/nginx-1.13.7.tar.gz tar -xvf nginx-1.13.7.tar.gz
//进入nginx目录 cd /usr/local/nginx //进入目录 cd nginx-1.13.7 //执行命令 ./configure //执行make命令 make //执行make install命令 make install
# 打开配置文件 vi /usr/local/nginx/conf/nginx.conf
如下所示,其中server节点指向真实的GeoServer地址upstream mygeoserver { ip_hash; server 服务器ip:9091; server 服务器ip:9092; server 服务器ip:9093; } server { listen 9090; server_name 服务器ip; #charset koi8-r; #access_log logs/host.access.log main; location / { #root html; #index index.html index.htm; proxy_pass https://mygeoserver; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass https://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /.ht { # deny all; #} }
proxy_pass https://mygeoserver;
7.5.启动nginx/usr/local/nginx/sbin/nginx -s reload
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ps -ef | grep nginx
安装完成一般常用命令
7.6检查nginx是否正常占用9090端口lsof -i:9090
如果什么也没出现,则表示配置文件没有生效,nginx默认占用80端口。检查nginx.conf文件。
7.7用nginx访问geoserver web管理页面
浏览器输入
https://服务器ip:9090/geoserver
进入geoserver web管理页面,刷新几次没有问题,则可以验证用nginx反向代理的geoserver集群配置成功。
8.发布wms服务,并用nginx反向代理服务器的地址提供服务
随机进入一个节点,或者通过nginx进入web管理页面,发布一个wms服务。
在前端页面中编写如下代码(cesium调用wms服务)var aerial = new Cesium.WebMapServiceImageryProvider({ url: 'https://服务器ip:9090/geoserver/cluster_test/wms',//使用nginx代理 layers: 'cluster_test:aerial', parameters: { service: 'WMS', format: 'image/png', transparent: true } }); viewer.imageryLayers.addImageryProvider(aerial);
未完待续。
数据库节点和文件服务器还没说。
用geoserver发布各种服务也还没说。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算