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
nginx安装以及配置的详细过程记录
Sep 15 Servers
Z-Order加速Hudi大规模数据集方案分析
Mar 31 Servers
Linux中如何安装并部署Redis
Apr 18 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
Nginx 常用配置
May 15 Servers
使用Apache Camel表达REST服务的方法
Jun 10 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 23 Servers
keepalived + nginx 实现高可用方案
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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
Javascript核心读书有感之语句
2015/02/11 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
微信小程序实现城市列表选择
2018/06/05 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
详解python的argpare和click模块小结
2019/03/31 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
python实现代码统计程序
2019/09/19 Python
Django 框架模型操作入门教程
2019/11/05 Python
详解python中各种文件打开模式
2020/01/19 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
UDP协议功能
2013/01/06 面试题
Ajax的工作原理
2015/12/04 面试题
退休教师欢送会主持词
2014/03/31 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers