<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
spring:
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/
eureka-server-peer2
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。