Eureka2.0 클러스터 고 가용성 및 인증 서비스를 달성하기 위해 구축

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/qq_18537055/article/details/80566316

          Springboot-2.0.2.RELEASE 유레카 인증, 등록 서비스 실패 후.

        최근 몇 년 동안에서와 같이, 마이크로 서비스 아키텍처와 도커 컨테이너의 인기있는 개념은, 그것은 더 중립적 인 장소의 소프트웨어 개발 스타일의 더 "구름"특히 현재의 다양한 분산 솔루션을 제공하는 미래의 봄 구름을 만든다 표준화, 효과적으로, 서블릿 사양을 의미하는 것은 올해의 탄생과 비교 될 수있다 기술 솔루션을 완전 중지 서버 소프트웨어 시스템의 기술적 인 수준의 진행을 촉진한다.

        SpringCloud 유레카 SpringCloud 넷플릭스 서비스 넷플릭스 유레카는 제 2 패키지를 제조 기반 슈트의 일부이며, 서비스 관리 기능 마이크로 서비스 아키텍처 완료 할 책임이있다. 고 가용성을 달성하고 Laijiangjiang 유레카 오늘 빌드하려면

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.2.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.8</java.version>
	<spring-cloud.version>Finchley.BUILD-SNAPSHOT</spring-cloud.version>
</properties>

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
	</dependency>
	<!-- 用于服务注入验证 -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>

구성 파일 플러스 패키지 버전을 찾을 수없는 경우

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-dependencies</artifactId>
			<version>${spring-cloud.version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

application.yml 구성

spring:
  application:
    name: EUREKA
--- #注意这里是三个"减号"
spring:
  profiles: eureka1
  security:
    user:
      name: admin
      password: 123123
server:
  port: 8001
eureka:
  instance:
    hostname: eureka1
  client:
    serviceUrl:
      defaultZone: http://admin:123123@eureka2:8002/eureka/,http://admin:123123@eureka3:8003/eureka/
    fetch-registry: true
    register-with-eureka: true
---
spring:
  profiles: eureka2
  security:
    user:
      name: admin
      password: 123123
server:
  port: 8002
eureka:
  instance:
    hostname: eureka2
  client:
    serviceUrl:
      defaultZone: http://admin:123123@eureka1:8001/eureka/,http://admin:123123@eureka3:8003/eureka/
    fetch-registry: true
    register-with-eureka: true
---
spring:
  profiles: eureka3
  security:
    user:
      name: admin
      password: 123123
server:
  port: 8003
eureka:
  instance:
    hostname: eureka3
  client:
    serviceUrl:
      defaultZone: http://admin:123123@eureka1:8001/eureka/,http://admin:123123@eureka2:8002/eureka/
    fetch-registry: true
    register-with-eureka: true
위의 구성에서 볼 수 있듯이 우리는 세 가지 Euerka 서비스를 구성, 포트 번호는 8001 및 8002과 8003입니다.
사용자 이름과 암호를 확인하다 : 관리자 : 123123

클래스 코드 시작

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaApplication.class, args);
	}
}

이것은 기본적으로 코드 완료, 그것은 로컬 할 수 있습니다 실행되었습니다.

다음과 같이 호스트 파일에 내용을 추가하기 시작하기 전에 :

127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3

지역 다음을 실행 : 실행 구성을


分别启动3个配置eureka1,eureka2,eureka3,启动后到浏览器输入:http://eureka1:8001/ 输入你的用户名和密码。

敲黑板: 页面中Instances currently registered with Eureka下面并没得注入的别的服务,各种搜索引擎各种收,没得个所以然,去掉Spring Security后问题解决,可以知道问题是Spring Security引起的,查看源码发现CSRF保护默认是开启的,可以禁用掉即可。

老版本代码

security:   
  basic:
    enabled: true
  user:
    name: admin
    password: 123123

新版本解决方案

添加一个配置类禁用csrf如下:

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
    }
}

完美的结果

再次启动三个eureka服务,如果一切都正确的话,结果入图下:


在Centos上运行的脚本

启动脚本:

#!/bin/sh
#启动服务
APP_NAME=eureka-0.0.1-SNAPSHOT
rm -f tpid
nohup java -jar /data/apps/eureka/$APP_NAME --spring.profiles.active=eureka1> /data/apps/eureka/eureka1.log
nohup java -jar /data/apps/eureka/$APP_NAME --spring.profiles.active=eureka2> /data/apps/eureka/eureka2.log
nohup java -jar /data/apps/eureka/$APP_NAME --spring.profiles.active=eureka3> /data/apps/eureka/eureka3.log
echo $! > tpid
echo Start Success!
停止脚本:
#!/bin/sh
#停止服务
APP_NAME=eureka-0.0.1-SNAPSHOT
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
fi
sleep 5
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

后面的脚本我自己没验证,我也不怎么会写脚本,如果那个大神提供更好的脚本,小编感激不尽

源码地址:https://gitee.com/bianxin.com/earn_knife/tree/master/eureka





추천

출처blog.csdn.net/qq_18537055/article/details/80566316