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 相关文章推荐
Apache站点配置SSL强制跳转443
Mar 09 Servers
nginx常用命令放入shell脚本详解
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
Nginx服务器如何设置url链接
Mar 31 Servers
详解使用内网穿透工具Ngrok代理本地服务
Mar 31 Servers
CentOS7和8下安装Maven3.8.4
Apr 07 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
nginx容器方式反向代理实战
Apr 18 Servers
Windows Server 2022 超融合部署(图文教程)
Jun 25 Servers
Python安装及建立虚拟环境的完整步骤
Jun 25 Servers
Linux安装Docker详细教程
Jul 07 Servers
Windows7下FTP搭建图文教程
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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
JS实现页面数据懒加载
2020/02/13 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
python实现分页效果
2017/10/25 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python随机取list中的元素方法
2018/04/08 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
军校大学生个人的自我评价
2014/02/17 职场文书
双方协议书
2014/04/22 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
实习感想范文
2015/08/10 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python