tomcat部署高可用eureka-server
阿新 • • 發佈:2019-01-22
使用外部tomcat部署eureka-server時,為排除springboot內建的tomcat,修改pom.xml檔案,增加
修改啟動類Application.java,繼承SpringBootServletInitializer,改寫configure方法,修改啟動方式
建立兩個資料夾peer1,peer2,將對應的eureka-server的war置入,執行,訪問http://localhost:1111/eureka-server-peer1/和eureka-server-peer2。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除內建容器,排除內建容器匯出成war包可以讓外部容器執行spring-boot專案--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
修改啟動類Application.java,繼承SpringBootServletInitializer,改寫configure方法,修改啟動方式
@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication extends SpringBootServletInitializer{ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(EurekaServerApplication.class); } public static void main(String[] args) { //SpringApplication.run(EurekaServerApplication.class, args); new SpringApplicationBuilder(EurekaServerApplication.class).web(true).run(args); } }
(如果在一個tomcat部署多個eureka-server時)修改配置檔案application.yml,配置spring.jmx.default-domain,確保其唯一性,避免tomcat在部署時發生衝突。如下:
eureka-server-peer1
eureka-server-peer2spring: application: name: eureka-server jmx: default-domain: eureka-server-peer1 server: port: 1111 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2:1112/eureka-server-peer2/eureka/
spring:
application:
name: eureka-server
jmx:
default-domain: eureka-server-peer2
server:
port: 1112
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:1111/eureka-server-peer1/eureka/
配置host檔案,增加127.0.0.1 peer1和127.0.0.1 peer2
配置tomcat,使其在對應的埠號執行相應的eureka-server,修改conf/server.xml,增加兩個service節點
<Service name="peer1">
<Connector port="1111" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
<Engine name="peer1" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="peer1"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/eureka-server-peer1" docBase="C:/Program Files/Apache Software Foundation/Tomcat 9.0/peer1/eureka-server-peer1" reloadable="true" />
</Host>
</Engine>
</Service>
<Service name="peer2">
<Connector port="1112" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8445" />
<Engine name="peer2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="peer2"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/eureka-server-peer2" docBase="C:/Program Files/Apache Software Foundation/Tomcat 9.0/peer2/eureka-server-peer2" reloadable="true" />
</Host>
</Engine>
</Service>
建立兩個資料夾peer1,peer2,將對應的eureka-server的war置入,執行,訪問http://localhost:1111/eureka-server-peer1/和eureka-server-peer2。