赞
踩
操作系统 | IP | jdk | 服务版本 | 角色 |
---|---|---|---|---|
CentOS7 | 10.139.164.112 | jdk1.8 | nfs | |
CentOS7 | 10.139.164.102 | jdk1.8 | geoser2.20 | slave |
CentOS7 | 10.139.164.101 | jdk1.8 | geoser2.20 | master |
安装nfs客户端
两个机器都挂载
[root@geo2 ~]# yum -y install nfs-utils
上次元数据过期检查:0:19:28 前,执行于 2023年08月10日 星期四 09时11分02秒。
软件包 nfs-utils-1:2.5.1-5.ky10.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
挂载到相同目录
创建挂载目录
[root@geo1 ~]# mkdir /opt/nfs_data
将NFS挂载到此目录
[root@geo1 ~]# mount -o rw,nosuid,fg,hard,intr 10.139.164.112:/opt/basedata/nfs_data /opt/nfs_data
将挂载添加到配置文件
[root@geo1 ~]# vim /etc/fstab
10.139.164.112:/opt/basedata/nfs_data /opt/nfs_data nfs defaults 0 0
插件下载地址:https://build.geoserver.org/geoserver/2.20.x/community-2022-09-01/ 根据版本选择下载
[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
tar -zxvf apache-tomcat-9.0.56.tar.gz
mv apache-tomcat-9.0.56 tomcat
上传geoserver的war包到tomcat的webapps目录。然后启动tomcat.war包会自动解压
在每个geoserver的WEB-INF/web.xml中添加这段:
<context-param>
<param-name>GEOSERVER_DATA_DIR</param-name>
<param-value>/opt/nfs_data/geoserver_data/data</param-value>
</context-param>
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>/opt/nfs_data/geoserver_data/geowebcache</param-value>
</context-param>
创建数据目录及缓存目录
mkdir -p /opt/nfs_data/geoserver_data/data
mkdir -p /opt/nfs_data/geoserver_data/geowebcache
解压jms的zip包
将解压后的所有.jar包复制到tomcat中webapps/geoserver/WEB-INF/lib目录下
重启tomcat,等待geoserver启动成功
访问ip:8080/geoserver
默认的账号密码为 admin geoserver
各节点都需要完成上述操作
将geoserver-2.18-SNAPSHOT-activeMQ-broker-plugin.zip解压
将其中的war包上传到主节点的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中完成即可
修改tomcat bin目录下启动文件catalina.sh,指定数据文件位置,所有geoserve节点都要执行
找到下面的这段代码
JAVA_OPTS=“$JAVA_OPTS $JSSE_OPTS"
修改为:
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -DCLUSTER_CONFIG_DIR=/opt/nfs_data/geoserver_data/cluster/clusterConfig1"
其中的/clusterConfig1文件需要进行区分,如我这里master为/clusterConfig1另外一个节点就是/clusterConfig2
解压jms的zip包
将解压后的所有.jar包复制到tomcat中webapps/geoserver/WEB-INF/lib目录下
重启tomcat,等待geoserver启动成功
启动成功后会在上述脚本设置的目录中生产对应的集群配置文件
在/opt/nfs_data/geoserver_data/cluster/clusterConfig1目录下生成cluster目录
其中包含以两个文件cluster.properties、embedded-broker.properties
在/opt/nfs_data/geoserver_data/cluster/clusterConfig1(此目录为上面脚本中指定的目录)目录下新建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目录中)
修改embedded-broker.properties 修改下面行
activemq.jmx.host= #本机ip
activemq.transportConnectors.server.uri=ip:端口
修改cluster.properties配置文件 只改brokerURL,其他参数默认
#Thu Aug 10 10:53:05 CST 2023 toggleSlave=true topicName=VirtualTopic.geoserver connection=disabled brokerURL=tcp\://10.139.164.101\:61616 durable=true xbeanURL=./broker.xml toggleMaster=true embeddedBroker=enabled CLUSTER_CONFIG_DIR=/opt/nfs_data/geoserver_data/cluster/clusterConfig2 embeddedBrokerProperties=embedded-broker.properties connection.retry=10 instanceName=1a8bf8ee-f364-4e38-8812-4c8a9665449f readOnly=disabled group=geoserver-cluster connection.maxwait=500
所有节点都要配置上述配置文件,配置文件基本相同。
重新启动各节点tomcat
访问geoserver 登录后可以看到cluster信息
此时有个问题,由于geoserver的配置是放在内存中的,所以修改配置信息时,无法进行同步
需要手动在从节点操作重读配置
在tomcat安装目录里 找到conf文件夹。编辑web.xml,在大约4729行添加下面内容
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
upstream backend { ip_hash; server ip:8080; server ip:8080; } server { listen 9090; server_name localhost; #charset koi8-r; client_max_body_size 1024m; #access_log logs/host.access.log main; location ^~ /geoserver/ { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; # 解决504错误,单位:秒 proxy_send_timeout 900s; proxy_read_timeout 900s; send_timeout 900s; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect http:// $scheme://; proxy_pass http://backend/geoserver/; index index.html index.htm index.jsp; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。