Eureka implementación de clúster individual y servicio Demo Demo

1 servicio único de demostración

1.1 entorno

Ambientes:springboot:2.1.3.RELEASE ,springcloud:Greenwich.SR5

1.2 archivo POM

<!-- 添加springcloud依赖 -->
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Greenwich.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
	<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>

1.3 application.properties

########单个服务,为了预防自己注册自己#############
#是否将自己注册到 Eureka-Server 中, 默认的为 true
eureka.client.registerWithEureka=false
#是否冲 Eureka-Server 中获取服务注册信息, 默认为 true
eureka.client.fetchRegistry=false

1.4 clase de arranque

@SpringBootApplication
@EnableEurekaServer
public class AppAction {
	public static void main(String[] args) {
		SpringApplication.run(AppAction.class, args);
	}
}

despliegue 2 clúster

2.1 Entorno operativo

En la construcción de Eurekaun clúster, es necesario agregar varios perfiles, y el uso del SpringBootmodo de configuración multi-medio ambiente. Cuántos nodos en la necesidad de clúster para añadir un número de perfiles de
entornos: springboot:2.1.3.RELEASE,springcloud:Greenwich.SR5

2.2 servidor

2.2.1 application.properties

2.2.1.1 Configuración de un servicio

# 给应用起一个名字
spring.applicatin.name=eureka-server1
# 端口号
server.port=9090
########在eureka集群中下面的可以加可以不加,不加的话,就注册到其他服务了############
######### 加了的话,在eureka服务页面看不到此服务
######### 不加的话,在eureka服务页面可以看到此服务
#是否将自己注册到 Eureka-Server 中, 默认的为 true
#eureka.client.registerWithEureka=false
#是否冲 Eureka-Server 中获取服务注册信息, 默认为 true
#eureka.client.fetchRegistry=false

#设置 eureka 实例名称, 与配置文件的变量为主
eureka.instance.hostname=eureka1
#设置服务注册中心地址, 指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka2:9090/eureka/
#配置日志
logging.config=classpath:logback.xml

configuración 2.2.1.1 dos servicios

# 给应用起一个名字
spring.applicatin.name=eureka-server2
# 端口号
server.port=9090

########在eureka集群中下面的可以加可以不加,不加的话,就注册到其他服务了############
#是否将自己注册到 Eureka-Server 中, 默认的为 true
#eureka.client.registerWithEureka=false
#是否冲 Eureka-Server 中获取服务注册信息, 默认为 true
#eureka.client.fetchRegistry=false

#设置 eureka 实例名称, 与配置文件的变量为主
eureka.instance.hostname=eureka2
#设置服务注册中心地址, 指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:9090/eureka/
#配置日志
logging.config=classpath:logback.xml

configuración del registro 2.2.2 logback

2.2.2.1 Registro de demostración

<?xml version="1.0" encoding="UTF-8" ?>
 <configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->  
    <property name="LOG_HOME" value="${catalina.base}/logs/" />  
    <!-- 控制台输出 -->   
    <appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender">
       <!-- 日志输出编码 -->  
        <layout class="ch.qos.logback.classic.PatternLayout">   
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   
            </pattern>   
        </layout>   
    </appender>   
    <!-- 按照每天生成日志文件 -->   
    <appender name="RollingFile"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/server.%d{yyyy-MM-dd}.log</FileNamePattern>   
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>   
        <layout class="ch.qos.logback.classic.PatternLayout">  
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n   
            </pattern>   
       </layout> 
        <!--日志文件最大的大小-->
       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
         <MaxFileSize>10MB</MaxFileSize>
       </triggeringPolicy>
    </appender>     
    <!-- 日志输出级别 -->
    <root level="DEBUG">   
        <appender-ref ref="Stdout" />   
        <appender-ref ref="RollingFile" />   
    </root> 
</configuration>

2.2.2.2 registro de nombre de archivo de errores

Mensaje de error: catalina.base _is_undefined
Aquí Insertar imagen Descripción
catalina.homepunto a la información de ubicación del público, que es, biny libel directorio padre.
catalina.baseSeñalando cada Tomcatinformación privada directorio de ubicación, es conf、logs、temp、webapps和workel directorio padre
a veces usan algunas variables para definir, por ejemplo, ${catalina.base}、${catalina.home}y así sucesivamente. Sin embargo, a veces el caso de salir de estas variables no se define, sin embargo, se generará un llamado XXXX _IS_UNDEFINEDdirectorio.
Para este propósito se pueden utilizar ${catalina.base:-.}、${catalina.home:-.}en su lugar;

implementación de clúster 2.2.3 inicio

2.2.3.1 Embalaje

Maven install

2.2.3.2 scripts de inicio de escritura

Los perfiles detallados Springcloud

2.2.3.3 permisos establecidos para ejecutar el script de inicio

Chmod 777 server.sh

2.2.3.4 modificar el archivo host Linux

vim /etc/hosts
192.168.70.134 eureka1
192.168.70.135 eureka2

2.2.3.5 Registro de inicio Eureka

./server.sh startinicio
./server.sh stopde parada

2.3 Cliente

Proveedor de Servicio de Cluster Server 2.3.1

2.3.1.1 introduciendo las coordenadas de cliente

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2.3.1.2 Perfil

spring.application.name=eureka-collect-provider
server.port=9080
#设置客户端,指向两个服务注册地址
eureka.client.serviceUrl.defaultZone=http://192.168.126.131:9090/eureka/,http://192.168.126.133:9090/eureka/

O no utilice aquí un directo ipdirección, pero el método de asignación nombre de host es el siguiente:

#设置服务注册中心地址, 指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

También necesita este camino C:\Windows\System32\drivers\etcestá hostsa añadir los siguientes documentos para mapear:

  • 192.168.70.134 eureka1
  • 192.168.70.135 eureka2

2.3.1.3 modificar la clase de arranque

@EnableEurekaClient
@SpringBootApplication
public class AppAction {
	public static void main(String[] args) {
		SpringApplication.run(AppAction.class, args);
	}
}

2.3.1.4 Servicio a la interfaz de prueba de escritura

2.3.1.4.1 clase de entidad

UserPojo.java

public class UserPojo {
	private int age;
	private String name;
	//省去get/set方法,以及有参无惨构造函数
	}
2.3.1.4.2 capa de control
@RestController
public class UserController {
	@RequestMapping("/hello")
	public List<UserPojo> getUsers(){
		List<UserPojo> list = new ArrayList<>();
		list.add(new UserPojo(1,"张三1"));
		list.add(new UserPojo(2,"张三2"));
		list.add(new UserPojo(3,"张三3"));
		return list;
	}
}

2.3.2 Cluster de Servicios al Consumidor

2.3.2.1 cliente coordinar con proveedor

2.3.2.2 Perfil

spring.application.name=eureka-collect-consumer
server.port=9070
#设置客户端,指向两个服务注册地址
eureka.client.serviceUrl.defaultZone=http://192.168.126.131:9090/eureka/,http://192.168.126.133:9090/eureka/

2.3.2.3 Método de empezar las clases con proveedor

2.3.2.4 código de clase de entidad

2.3.2.4.1 Serivce 层
@Service
public class UserService {
	@Autowired
	private LoadBalancerClient client;//ribbon负载均衡
	
	public List<UserPojo> getUser(){
		//ServiceInstance,是根据服务名字查询注册的服务的,封装了服务的基本信息, 如 IP, 端口
		ServiceInstance service = client.choose("eureka-collect-provider");
		StringBuffer ip = new StringBuffer();
		//http://localhost:9080/hello
		ip.append("http://").append(service.getHost()).append(":").
		append(service.getPort()).append("/hello");
		RestTemplate rt = new RestTemplate();
		//返回类型
		ParameterizedTypeReference<List<UserPojo>> type = new ParameterizedTypeReference<List<UserPojo>>(){};
		//ResponseEntity:封装返回类型
		ResponseEntity<List<UserPojo>> response = rt.exchange(ip.toString(),HttpMethod.GET,null,type);
		HttpStatus statusCode = response.getStatusCode();
		//httpstatus只是一个枚举类
		return response.getBody();
	}
}
2.3.2.4.2 capa Controller
@RestController
public class UserController {
	@Autowired
	private UserService userService;	
	@RequestMapping("/hello")
	public List<UserPojo> getUsers(){
		return userService.getUser();
	}
}

2.3.3 eureka página de registro de servicio Servicios

Aquí Insertar imagen Descripción

2.3.4 modificar la página de registro de nombre de host registrado como IP registrada

Como se muestra en el registro para el hostnameregistro en lugar de por la ipregistrada
Aquí Insertar imagen Descripciónen el archivo de configuración del cliente application.properties, añadir las siguientes modificaciones:

#表示是使用ip地址
eureka.instance.prefer-ip-address=true
# springboot2.0之后,取地址用ip-address,之前是用ipAddress
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}

Después de la adición de la interfaz del cliente es el siguiente:
Aquí Insertar imagen Descripción

Publicados 334 artículos originales · ganado elogios 186 · vistas 310 000 +

Supongo que te gusta

Origin blog.csdn.net/u012060033/article/details/104300452
Recomendado
Clasificación