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 + consul + upsync 完成动态负载均衡的方法详解
Mar 31 Servers
Shell脚本一键安装Nginx服务自定义Nginx版本
Mar 20 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
Dashboard管理Kubernetes集群与API访问配置
Apr 01 Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 Servers
Windows10安装Apache2.4的方法步骤
Jun 25 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 Servers
修改Nginx配置返回指定content-type的方法
Sep 23 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 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连接Oracle for NT 远程数据库
2006/10/09 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python正则分组的应用
2013/11/10 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
python实现ping的方法
2015/07/06 Python
Python引用模块和查找模块路径
2016/03/17 Python
详解Python装饰器由浅入深
2016/12/09 Python
python list元素为tuple时的排序方法
2018/04/18 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Python压缩模块zipfile实现原理及用法解析
2020/08/14 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
应届生护士求职信
2013/11/01 职场文书
物业管理专业求职信
2014/06/11 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
先进员工事迹材料
2014/12/20 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python