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配置文件使用环境变量的操作方法
Jun 02 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
Nginx+Tomcat负载均衡集群的实现示例
Oct 24 Servers
nginx内存池源码解析
Nov 20 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
Windows server 2012搭建FTP服务器
Apr 29 Servers
centos7安装mysql5.7经验记录
May 02 Servers
如何Tomcat中使用ipv6地址
May 06 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 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 strtr() 函数使用说明
2008/11/21 PHP
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
非常好的js代码
2006/06/27 Javascript
JSON 学习之完全手册 图文
2007/05/29 Javascript
JavaScript中两种链式调用实现代码
2011/01/12 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
js断点调试经验分享
2017/12/08 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
使用numba对Python运算加速的方法
2018/10/15 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python中@contextmanager实例用法
2021/02/07 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
表演方阵解说词
2014/02/08 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL