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 反向代理之 proxy_pass的实现
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
Nginx解决403 forbidden的完整步骤
Apr 01 Servers
nginx内存池源码解析
Nov 20 Servers
Linux安装apache服务器的配置过程
Nov 27 Servers
使用 Apache Dubbo 实现远程通信(微服务架构)
Feb 12 Servers
详解如何使用Nginx解决跨域问题
May 06 Servers
nginx rewrite功能使用场景分析
May 30 Servers
永中文档在线转换预览基于nginx配置部署方案
Jun 10 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
centos环境下nginx高可用集群的搭建指南
Jul 23 Servers
Docker容器harbor私有仓库部署和管理
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
js下函数般调用正则的方法附代码
2008/06/22 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
python3+PyQt5使用数据库表视图
2018/04/24 Python
python微元法计算函数曲线长度的方法
2018/11/08 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
法学院方阵解说词
2014/01/29 职场文书
买卖协议书范本
2014/04/21 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
社团活动总结模板
2014/06/30 职场文书
销售辞职信范文
2015/03/02 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL