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设置日志打印post请求参数的方法
Mar 31 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
Nginx反向代理配置的全过程记录
Jun 22 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Minikube搭建Kubernetes集群
Mar 31 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
Windows server 2012 NTP时间同步的实现
Jun 25 Servers
nginx之queue的具体使用
Jun 28 Servers
Apache Kafka 分区重分配的实现原理解析
Jul 15 Servers
nginx配置指令之server_name的具体使用
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数字格式化
2006/12/06 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
php图片添加水印例子
2016/07/20 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
Python通过socketserver处理多个链接
2020/03/18 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
Python安装Bs4的多种方法
2020/11/28 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
养殖项目策划书范文
2014/01/13 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
先进员工获奖感言
2014/08/14 职场文书
婚礼答谢词
2015/01/04 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
企业战略合作意向书
2015/05/08 职场文书
电力工程合作意向书
2015/05/11 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
简单了解 MySQL 中相关的锁
2021/05/25 MySQL