ユーレカ単一のクラスタの展開とサービスのデモデモ

1つのサービスのデモ

1.1環境

環境:springboot:2.1.3.RELEASEspringcloud:Greenwich.SR5

1.2ポンポンファイル

<!-- 添加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起動クラス

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

2クラスタの展開

2.1動作環境

建物でEurekaクラスタを、あなたは複数のプロファイル、および使用を追加する必要がありSpringBoot、マルチ環境のコンフィギュレーションモードを。どのように多くのノードプロファイルの数を追加するクラスタを必要としている
環境:springboot:2.1.3.RELEASEspringcloud:Greenwich.SR5

2.2サーバー

2.2.1 application.properties

2.2.1.1サービスの設定

# 给应用起一个名字
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

2.2.1.1 2つのサービスの設定

# 给应用起一个名字
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

2.2.2 logbackログ設定

2.2.2.1ログデモ

<?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ログファイル名のバグ

エラーメッセージ:catalina.base _is_undefined
ここに画像を挿入説明
catalina.home公共の場所情報をポイントし、あり、binそしてlib親ディレクトリ。
catalina.baseそれぞれにポインティングTomcat場所ディレクトリ情報プライベート、それはconf、logs、temp、webapps和work親ディレクトリ
時々例えば、定義するためにいくつかの変数を使用${catalina.base}、${catalina.home}してそうで。しかし、ケースは時々という名前が生成されます、まだ定義されていないこれらの変数から出てくるXXXX _IS_UNDEFINEDディレクトリを。
この目的のために使用することができる${catalina.base:-.}、${catalina.home:-.}代わりに、

2.2.3開始クラスタの展開

2.2.3.1包装

Maven install

2.2.3.2書き込み起動スクリプト

詳細プロフィールSpringcloud

起動スクリプトを実行するように設定2.2.3.3権限

Chmod 777 server.sh

2.2.3.4は、ホストファイルのlinuxを変更します

vim /etc/hosts
192.168.70.134 eureka1
192.168.70.135 eureka2

2.2.3.5スタートユーレカレジストリ

./server.sh startスタート
./server.sh stopストップ

2.3クライアント

2.3.1クラスタサービスプロバイダー

2.3.1.1導入クライアント座標

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

2.3.1.2プロフィール

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/

または直接、ここでは使用しないでip次のようにアドレスではなくホスト名マッピング方法は次のとおりです。

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

また、あなたは、このパスが必要C:\Windows\System32\drivers\etcであるhostsマップに次の書類を追加します:

  • 192.168.70.134 eureka1
  • 192.168.70.135 eureka2

2.3.1.3は、起動クラスを変更します

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

書き込みテストインターフェイスに2.3.1.4サービス

2.3.1.4.1エンティティクラス

UserPojo.java

public class UserPojo {
	private int age;
	private String name;
	//省去get/set方法,以及有参无惨构造函数
	}
2.3.1.4.2制御層
@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クラスタの消費者サービス

2.3.2.1クライアントプロバイダと連携

2.3.2.2プロフィール

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起動クラス

2.3.2.4エンティティクラスのコード

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コントローラ層
@RestController
public class UserController {
	@Autowired
	private UserService userService;	
	@RequestMapping("/hello")
	public List<UserPojo> getUsers(){
		return userService.getUser();
	}
}

2.3.3ユーレカサービス登録ページサービス

ここに画像を挿入説明

2.3.4登録されたIPとして登録登録ページのホスト名を変更します

以下のためのレジスタに示すようにhostname、登録の代わりによりip登録された
ここに画像を挿入説明クライアントの設定ファイルにapplication.properties、以下の修正を追加します。

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

次のようにクライアントインタフェースを追加した後です。
ここに画像を挿入説明

公開された334元の記事 ウォンの賞賛186 ビュー310 000 +

おすすめ

転載: blog.csdn.net/u012060033/article/details/104300452