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 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
May 27 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
Nginx安装配置详解
Jun 25 Servers
nginx之queue的具体使用
Jun 28 Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 Servers
Nginx跨域问题解析与解决
Aug 05 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
长波有什么东西
2021/03/01 无线电
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php和asp语法上的区别总结
2019/05/12 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
Python中偏函数用法示例
2018/06/07 Python
Django进阶之CSRF的解决
2018/08/01 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
Django中的cookie和session
2019/08/27 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
2020/03/10 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
研究生毕业自我鉴定范文
2014/03/27 职场文书
个人承诺书格式范文
2015/04/29 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android