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 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
nginx配置ssl实现https的方法示例
Mar 31 Servers
Nginx访问日志及错误日志参数说明
Mar 31 Servers
Nginx安装完成没有生成sbin目录的解决方法
Mar 31 Servers
Nginx源码编译安装过程记录
Nov 17 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
Docker下安装Oracle19c
Apr 13 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
Tomcat安装使用及部署Web项目的3种方法汇总
Aug 14 Servers
ubuntu如何搭建vsftpd服务器
Dec 24 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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的源码中深入了解stdClass类
2014/04/18 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
angularjs实现分页和搜索功能
2018/01/03 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
python 随机森林算法及其优化详解
2019/07/11 Python
详解python 中in 的 用法
2019/12/12 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
财务会计实习报告体会
2013/12/20 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
大专会计自我鉴定
2014/02/06 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
2014年收银工作总结
2014/11/13 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技