nginx实现多geoserver服务的负载均衡


Posted in Servers onMay 15, 2022

概述

为了提高服务的访问速度,减轻geoserver服务的压力,同时避免服务节点出现问题而影响服务访问的稳定性,我们通常会通过部署多个geoserver来解决,但是部署了多个geoserver后,我们需要一个统一的接口提供出来供使用,nginx很好地可以这样的需求,本文讲讲如何通过nginx实现多geoserver服务的负载均衡。

实现效果

nginx实现多geoserver服务的负载均衡

实现

1. 多geoserver部署

为了保持geoserver的服务一致,我们先配置好一个geoserver服务,配置好之后将部署的Tomcat复制,克隆多个出来,本文为演示复制了两个(共三个geoserver),修改Tomcat的端口,使三个端口不冲突,复制好之后分别启动三个Tomcat。

2. nginx配置

修改nginx.conf文件,配置信息如下:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    # 反向代理配置
    upstream server_list{
       # 这个是tomcat的访问路径
       server localhost:8081;
       server localhost:8082;
       server localhost:8083;
    }
    server {
        listen       80;
        server_name  localhost;
     
        location / {
            add_header 'Access-Control-Allow-Origin' $http_origin;
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain; charset=utf-8';
                add_header 'Content-Length' 0;
                return 204;
            }
            root   html;
            proxy_pass http://server_list;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

配置好nginx后,启动nginx。

3. 前端调用

根据上述的配置,nginx的端口为80,因此geoserver的地址为http://localhost/geoserver,在ol中的调用代码如下:

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>OpenLayers map preview</title>
  <link rel="stylesheet" href="lib/ol/ol.css" rel="external nofollow"  type="text/css">
  <link rel="stylesheet" href="css/common.css" rel="external nofollow" >
  <script src="../ol5/ol.js" type="text/javascript"></script>
</head>
<body>
<div id="map" class="map"></div>
<script>
  const options = {
    center: [52102781.07568731, 4456849.777083951],
    zoom: 3,
    minZoom: 0,
    maxZoom: 18
  }

  const base = new ol.layer.Tile({
    visible: true,
    source: new ol.source.OSM()
  });
  const wms = new ol.layer.Tile({
    source: new ol.source.TileWMS({
      url: 'http://localhost/geoserver/mapbox/wms',
      params: {'LAYERS': 'mapbox:city', 'TILED': true},
      serverType: 'geoserver',
      transition: 0
    })
  })

  window.map = new ol.Map({
    controls: ol.control.defaults({
      attribution: false
    }).extend([new ol.control.ScaleLine()]),
    target: 'map',
    layers: [base, wms],
    view: new ol.View({
      center: options.center,
      zoom: options.zoom,
      minZoom: options.minZoom,
      maxZoom: options.maxZoom
    })
  });
</script>
</body>
</html>

到此这篇关于nginx实现多geoserver服务的负载均衡的示例代码的文章就介绍到这了,更多相关nginx 多geoserver负载均衡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
Nginx 过滤静态资源文件的访问日志的实现
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
设置IIS Express并发数
Jul 07 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 Servers
Nginx 常用配置
鲲鹏 CentOS 7 安装Python3.7
May 11 #Servers
在容器中使用nginx搭建上传下载服务器
May 11 #Servers
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
May 11 #Servers
nginx 配置缓存
May 11 #Servers
Nginx的gzip相关介绍
May 11 #Servers
详解如何使用Nginx解决跨域问题
May 06 #Servers
You might like
解析PHP提交后跳转
2013/06/23 PHP
PHP cdata 处理(详细介绍)
2013/07/05 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
python添加菜单图文讲解
2019/06/04 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
最简单的matplotlib安装教程(小白)
2020/07/28 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
中专自我鉴定范文
2013/10/16 职场文书
会计毕业生自荐信
2013/11/21 职场文书
出纳岗位职责模板
2013/11/27 职场文书
12岁生日感言
2014/01/21 职场文书
大专毕业生求职信
2014/07/05 职场文书
佛光寺导游词
2015/02/10 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
高中历史教学反思
2016/02/19 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android