geoserver集群部署
- 环境准备
- 系统准备
- 软件准备
- 插件准备
- 配置jdk
- 安装tomcat
- 部署geoserver
- 安装mq
- geoserver配置jms
- 修改tomcat 启动文件
- 新建broker.xml放入cluster文件内容如下(三个节点均要新建,内容相同)
- 集群配置
环境准备
系统准备
操作系统 | IP | jdk | 服务版本 | 角色 |
---|
CentOS7 | 192.168.144.7 | jdk1.8 | geoser2.20 | slave |
CentOS7 | 192.168.144.17 | jdk1.8 | geoser2.20 | slave |
CentOS7 | 192.168.144.128 | jdk1.8 | geoser2.20 | master |
软件准备
插件准备
插件下载地址:https://build.geoserver.org/geoserver/2.20.x/community-2022-09-01/ 根据版本选择下载
- geoserver-2.20-SNAPSHOT-activeMQ-broker-plugin.zip
- geoserver-2.20-SNAPSHOT-jms-cluster-plugin.zip
配置jdk
[root@localhost local]# tar -zxvf jdk-8u151-linux-x64.tar.gz
[root@localhost local]#mv jdk1.8.0_151 jdk
[root@localhost local]#cat >>/etc/profile<< EOF
JAVA_HOME=/usr/local/jdk
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
[root@localhost local]#source /etc/profile
安装tomcat
tar -zxvf apache-tomcat-9.0.56.tar.gz
mv apache-tomcat-9.0.56 tomcat
部署geoserver
上传geoserver的war包到tomcat的webappsmu目录。然后启动tomcat.war包回自动解压
访问ip:8080/geoserver
默认的账号密码为 admin geoserver
各节点都需要完成上述操作
安装mq
将geoserver-2.18-SNAPSHOT-activeMQ-broker-plugin.zip解压
将其中的war包上传到主节点的tomcat(其他tomcat也行)中
启动tomcat后自动解压,将/usr/local/tomcat/apache-tomcat-9.0.37/webapps/activemqBroker-2.18-SNAPSHOT/WEB-INF/classes目录下的 standalone-broker.properties和applicationContext.xml删除
重启tomcat
以上操作在一个tomcat中完成即可
geoserver配置jms
解压jms的zip包
将解压后的所有.jar包复制到tomcat中webapps/geoserver/WEB-INF/lib目录下
重启tomcat,等待geoserver启动成功
在/usr/local/tomcat/apache-tomcat-9.0.37/webapps/geoserver/data目录下生成cluster目录
其中包含以两个文件cluster.properties、embedded-broker.properties
如果需要修改geoserver的默认数据文件,需要修改以下文件
修改tomcat 启动文件
修改tomcat启动文件,指定数据文件位置
找到以下代码:
JAVA_OPTS=“$JAVA_OPTS $JSSE_OPTS"
修改为:
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -DCLUSTER_CONFIG_DIR=/data1/geoserver/data/cluster/clusterConfig3"
各节点目录名称可不相同
重启tomcat 生成数据存储目录
每个节点都完成以上操作
新建broker.xml放入cluster文件内容如下(三个节点均要新建,内容相同)
在/data1/geoserver/data/cluster/clusterConfig3(此目录为上面脚本中指定的目录)目录下新建broker.xml文件内容如下(三个节点均要新建,内容相同)
vim broker.xml
复制下面内容到文件中,无须修改
<?xml version="1.0" encoding="UTF-8"?>
<!--DOCTYPE beans PUBLIC "-//ACTIVEMQ//DTD//EN" "http://activemq.org/dtd/activemq.dtd" -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jms="http://www.springframework.org/schema/jms" xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jms
http://www.springframework.org/schema/jms/spring-jms.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<!-- Allows us to use system properties as variables in this configuration
file -->
<bean id="activemq.propertyPlaceholderConfigurer"
class="org.geoserver.cluster.impl.utils.JMSPropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="searchSystemEnvironment" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="ignoreResourceNotFound" value="true" />
<constructor-arg index="0" type="Resource">
<value>embedded-broker.properties</value>
</constructor-arg>
<constructor-arg index="1" type="JMSConfiguration"
ref="JMSConfiguration" />
</bean>
<broker id="broker" persistent="${activemq.broker.persistent}"
useJmx="${activemq.jmx.useJmx}" xmlns="http://activemq.apache.org/schema/core"
dataDirectory="${activemq.base}" tmpDataDirectory="${activemq.base}/tmp"
startAsync="false" start="false" brokerName="${instanceName}">
<!-- The managementContext is used to configure how ActiveMQ is exposed
in JMX. By default, ActiveMQ uses the MBean server that is started by the
JVM. For more information, see: http://activemq.apache.org/jmx.html -->
<managementContext>
<managementContext createConnector="${activemq.jmx.createConnector}"
connectorPort="${activemq.jmx.port}" connectorHost="${activemq.jmx.host}" />
</managementContext>
<!--destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<virtualTopic name=">" prefix="Consumer.*.VirtualTopic."
selectorAware="false" />
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors-->
<!-- Configure message persistence for the broker. The default persistence
mechanism is the KahaDB store (identified by the kahaDB tag). For more information,
see: http://activemq.apache.org/persistence.html -->
<amq:persistenceAdapter>
<kahaDB directory="${activemq.base}/kahadb"
lockKeepAlivePeriod="0" />
<!-- <jdbcPersistenceAdapter dataDirectory="activemq-data" dataSource="#postgres-ds"
lockKeepAlivePeriod="0" /> -->
</amq:persistenceAdapter>
<!-- The systemUsage controls the maximum amount of space the broker will
use before slowing down producers. For more information, see: http://activemq.apache.org/producer-flow-control.html -->
<systemUsage>
<systemUsage>
<memoryUsage>
<memoryUsage limit="${activemq.broker.systemUsage.memoryUsage}" />
</memoryUsage>
<storeUsage>
<storeUsage limit="${activemq.broker.systemUsage.storeUsage}" />
</storeUsage>
<tempUsage>
<tempUsage limit="${activemq.broker.systemUsage.tempUsage}" />
</tempUsage>
</systemUsage>
</systemUsage>
<!-- The transport connectors expose ActiveMQ over a given protocol to
clients and other brokers. For more information, see: http://activemq.apache.org/configuring-transports.html -->
<transportConnectors>
<transportConnector name="openwire"
uri="${activemq.transportConnectors.server.uri}" discoveryUri="${activemq.transportConnectors.server.discoveryURI}" />
</transportConnectors>
<networkConnectors xmlns="http://activemq.apache.org/schema/core">
<networkConnector
uri="${activemq.transportConnectors.server.discoveryURI}" />
</networkConnectors>
<!-- destroy the spring context on shutdown to stop jetty -->
<shutdownHooks>
<bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
</shutdownHooks>
</broker>
<!-- This xbean configuration file supports all the standard spring xml
configuration options -->
<!-- <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource"> -->
<!-- <property name="serverName" value="localhost" /> -->
<!-- <property name="databaseName" value="activemq" /> -->
<!-- <property name="portNumber" value="5432" /> -->
<!-- <property name="user" value="postgres" /> -->
<!-- <property name="password" value="postgres" /> -->
<!-- <property name="dataSourceName" value="postgres" /> -->
<!-- <property name="initialConnections" value="1" /> -->
<!-- <property name="maxConnections" value="30" /> -->
<!-- </bean> -->
<!-- Oracle DataSource Sample Setup -->
<!-- <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/> <property
name="username" value="scott"/> <property name="password" value="tiger"/>
<property name="poolPreparedStatements" value="true"/> </bean> -->
</beans>
集群配置
集群中只有一个节点是主节点,在这个节点新增数据,别的节点会根据activeMQ进行同步
修改各节点以下文件(文件路径为geoserver 数据目录下cluster目录中)
- cluster.properties
- embedded-broker.properties
修改cluster.properties配置文件 只改brokerURL,其他参数默认
#Sun Sep 04 18:11:08 CST 2022
toggleSlave=true
connection=enabled
topicName=VirtualTopic.geoserver
brokerURL=tcp\://192.168.144.17\:61616 #AMQ地址 此文件各节点配置相同
xbeanURL=./broker.xml
durable=true
toggleMaster=true
embeddedBroker=enabled
CLUSTER_CONFIG_DIR=/usr/local/tomcat/webapps/geoserver/data/cluster
embeddedBrokerProperties=embedded-broker.properties
connection.retry=10
readOnly=disabled
instanceName=9fb998e9-6244-4e94-a89c-3c21ecff9e27
group=geoserver-cluster
connection.maxwait=500
修改embedded-broker.properties 修改下面行
- activemq.jmx.host= #本机ip
- activemq.transportConnectors.server.uri=MQ链接器 本机ip:端口 (个节点端口不可一样)
- activemq.transportConnectors.server.discoveryURI=#多播地址
重新启动各节点tomcat
访问geoserver 登录后可以看到cluster信息
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)