基于MQ的GeoServer集群搭建(负载均衡,Session共享,JMS消息同步)

GeoServer 集群化部署方案

目前部署了三个节点,节点信息如下:

内网IP用户名密码
172.16.131.210rootxxxxx
172.16.131.209rootxxxxx
172.16.131.211rootxxxxx

总体设计

总体技术是通过Nginx去做负载均衡,通过Redis和Tomcat实现session共享,通过MQ实现各个实例的同步

部署结构图

在这里插入图片描述

官网部署介绍

在这里插入图片描述

部署包版本信息

软件版本是否强依赖部署方式
Redislatestdocker
ActiveMQlatestdocker
Tomcatapache-tomcat-9.0.52直接部署(需要调整jar)
GeoServergeoserver-2.19.x-latest-war直接部署(需要调整jar)
1. docker 部署 redis
  • 拉取镜像 docker pull redis
  • 运行redis容器,并设置密码(不设置密码小心被攻击,这里没有将-v的外挂信息配置出来) docker run -p 6379:6379 --name gs-redis --requirepass “xxxxxxx”
  • 客户端连接测试连通性
2. 安装ActiveMQ
  • 拉取镜像 docker pull activemq
  • 运行activemq容器
    docker run --name=‘activemq’
    -itd
    -p 8161:8161
    -p 61616:61616
    -e ACTIVEMQ_ADMIN_LOGIN=admin
    -e ACTIVEMQ_ADMIN_PASSWORD=123456
    –restart=always
    -v /usr/soft/activemq:/data/activemq
    -v /usr/soft/activemq/log:/var/log/activemq
    webcenter/activemq:latest
3. 安装JDK(不做赘述)
4. 部署tomcat
GeoServer 部署
  • Geoserver jms jar包准备
    下载地址 https://build.geoserver.org/geoserver/
    下载 geoserver-2.19.x-latest-war.zip,geoserver-2.19-SNAPSHOT-jms-cluster-plugin.zip
  • 解压zip将war拷贝到tomcat webapps目录下
    unzip geoserver-2.19.x-latest-war.zip -d ./ 解压命名
  • 启动tomcat
    ./cataline.sh start
  • 停止tomcat
    ./cataline.sh stop
  • 将geoserver-2.19-SNAPSHOT-jms-cluster-plugin.zip 解压之后的jar拷贝到webapps/geoserver/WEB-INF/lib下面
  • 重启tomcat
    ./cataline.sh start
  • 停止tomcat
    ./cataline.sh stop
  • 进去到geoserver/data/cluster路径下,配置cluster.properties
    配置情况如下:
toggleSlave=true
topicName=VirtualTopic.geoserver
connection=enabled
brokerURL=tcp\://172.16.131.211\:61616
durable=true
xbeanURL=./broker.xml
toggleMaster=true
embeddedBroker=disabled
CLUSTER_CONFIG_DIR=/root/app/tomcat/apache-tomcat-9.0.52/webapps/geoserver/data/cluster/002
embeddedBrokerProperties=embedded-broker.properties
connection.retry=10
readOnly=disabled
instanceName=681a53e8-8d39-434f-ac0e-2156cc0a0f11
group=geoserver-cluster
connection.maxwait=500
  • 解释
    • connection 打开连接
    • brokerURL MQ 地址(上面docker启动的activeMQ地址)
    • embeddedBroker 关闭内嵌启动MQ,(网上的所有博客错误的地方,基本上没人解释为啥)
tomcat Redis Session
  • Tomcat Redis session共享jar准备
    链接: https://pan.baidu.com/s/16uh2aS_jR4QVj-mtBionTA
    提取码: d66b
    共四个jar
  • 将jar包里面的commons-pool2-2.7.0.jar/slf4j-api-1.6.4.jar替换成和GeoServer里面版本的jar,不然导致GeoServer启动不了,此处解决冲突问题
  • 将里面的4个jar包导到t每个tomcat的lib目录下。
  • 修改redis-data-cache.properties文件,根据自己redis信息进行修改,修改完成将其放到每个tomcat的conf文件夹下.
  • 在修改每个tomcat下conf文件夹下的context.xml文件
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager"/>

部署Nginx

  • 拉起nginx镜像 docker pull nginx
  • 启动nginx docker run --rm -d -p 80:80 --name geoserver-nginx -v /app/nginx/www:/usr/share/nginx/html -v /app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /app/nginx/conf.d:/etc/nginx/conf.d -v /app/nginx/logs:/var/log/nginx nginx
  • 配置geoserver.conf
 upstream mygeoserver {
         ip_hash;
        server 172.16.131.210:8080;
        server 172.16.131.209:8080;
        server 172.16.131.211:8080;

}

server {
    listen       80;
    server_name  39.107.101.131;
    location /geoserver/ {
            proxy_pass http://mygeoserver/geoserver/;
            proxy_set_header  Host $host:$server_port;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

可以不配置ip_hash,因为统一做了session共享拦截

  • 重启ngnix docker restart xxxxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值