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搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx+SpringBoot实现负载均衡的示例
Mar 31 Servers
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
Apr 04 Servers
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 Servers
nginx+lua单机上万并发的实现
May 31 Servers
nginx的zabbix 5.0安装部署的方法步骤
Jul 16 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
Nginx动静分离配置实现与说明
Apr 07 Servers
ubuntu下常用apt命令介绍
Jun 05 Servers
nginx之queue的具体使用
Jun 28 Servers
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
Aug 14 Servers
源码安装apache脚本部署过程详解
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+mysql事务rollback&amp;commit示例
2010/02/08 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
javascript标签在页面中的位置探讨
2013/04/11 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
js opener的使用详解
2014/01/11 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
canvas的神奇用法
2017/02/03 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
Python批量修改文件后缀的方法
2014/01/26 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python如何使用unittest测试接口
2018/04/04 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
Numpy中的mask的使用
2018/07/21 Python
python使用requests.session模拟登录
2019/08/09 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
python实现超市管理系统(后台管理)
2019/10/25 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
购房公证委托书(2014版)
2014/09/12 职场文书
超市开店计划书
2014/09/15 职场文书
班级管理经验交流材料
2015/11/02 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis