Spring Cloud Netflix Eureka官方WIKI翻译之 配置Eureka

Eureka提供了两个组件——Eureka客户端和Eureka服务器。使用Eureka的体系结构通常有两个应用程序

  • Application Client 它使用Eureka客户端向应用程序服务发出请求。
  • Application Service 它接收来自应用程序客户端的请求并发回响应。

设置包括以下内容

  • Eureka Server
  • Eureka Client for the application client
  • Eureka Client for the application service

Eureka可以在AWS和非AWS环境中运行。

如果在云环境中运行,则需要传入java命令行属性-Deureka.datacenter=cloud,以便Eureka客户端/服务器知道初始化AWS云的特定信息。

配置Eureka Client

Prerequisites

  • JDK 1.8 or higher

您可以选择以下方法来获得Eureka客户端二进制文件。总是尝试获得最新的版本,因为有更多的补丁。

<dependency>
  <groupId>com.netflix.eureka</groupId>
  <artifactId>eureka-client</artifactId>
  <version>1.1.16</version>
 </dependency>
  • 您可以按照这里指定的方式构建客户机。

Configuration

配置Eureka客户端最简单的方法是使用属性文件。默认情况下,Eureka客户机搜索属性文件Eureka -client。类路径中的属性。它进一步在特定于环境的属性文件中搜索特定于环境的重写。环境通常是测试或prod,由-Deureka提供。环境java命令行切换到eureka客户机(没有.properties后缀)。相应地,客户机还搜索eureka-client-{test,prod}.properties。

您可以查看Eureka配置的缺省配置示例。您可以复制这些配置并根据需要进行编辑,并将它们放在类路径中。如果出于某种原因希望更改属性文件的名称,可以指定在java命令行开关中,-Deureka.client.props=(没有后缀),其中是要搜索的属性文件的名称。

文件中的属性解释了它们的用途。至少需要配置以下内容:

Application Name (eureka.name)
Application Port (eureka.port)
Virtual HostName (eureka.vipAddress)
Eureka Service Urls (eureka.serviceUrls)

 对于更高级的配置,请查看以下链接中的选项。

https://github.com/Netflix/eureka/blob/master/eureka-client/src/main/java/com/netflix/appinfo/EurekaInstanceConfig.java

https://github.com/Netflix/eureka/blob/master/eureka-client/src/main/java/com/netflix/discovery/EurekaClientConfig.java

配置Eureka Server

先决条件

  • JDK 1.8 or higher
  • Tomcat 6.0.10 or higher

使用Eureka服务器,您可以选择以下方法来获取二进制文件:

 Configuration

配置Eureka服务器最简单的方法是使用与上面的Eureka客户机类似的属性文件。首先,按照上面指定的方式配置与服务器一起运行的Eureka客户机。Eureka服务器本身会启动一个Eureka客户机,该客户机用于查找其他Eureka服务器。因此,您需要首先为Eureka服务器配置Eureka客户机,就像您对连接到Eureka服务的任何其他客户机所做的那样。Eureka服务器将使用其Eureka客户端配置来标识具有相同名称(即Eureka .name)的对等Eureka服务器。

配置完Eureka客户机之后,如果您在AWS中运行,可能需要配置Eureka服务器。Eureka服务器默认搜索属性文件Eureka -server。类路径中的属性。它进一步在特定于环境的属性文件中搜索特定于环境的重写。环境通常是测试或prod,由-Deureka提供。环境java命令行切换到eureka服务器(没有.properties后缀)。因此,服务器还搜索eureka-server-{test,prod}.properties。

为本地开发进行配置

 当运行eureka服务器进行本地开发时,通常需要等待大约3分钟才能启动。这是由于默认的服务器行为,搜索要同步的对等点,并在发现没有可用的对等点时重试。可以通过设置属性来减少这个等待时间:

eureka.numberRegistrySyncRetries=0

Configuring for AWS

如果您在AWS中运行(如本文所述),则需要其他配置。有关更高级的服务器配置,请参阅EurekaServerConfig.java提供的选项。

如果您正在构建WAR归档文件,您可以就地编辑eureka-server/conf下的文件,并且在创建归档文件之前,构建将负责将属性文件放置在WEB-INF/classes下。

如果您从maven下载归档文件,那么您可以在WEB-INF/classes下合并已编辑的属性文件。

运行演示应用程序可以帮助您更好地理解配置。

  • Eureka服务器有两组配置:Eureka客户端配置如上所述。
  • Eureka Server configuration.

Client/Server版本兼容性

我们为eureka使用语义版本控制,并将在小型版本升级(即1)之间维持客户机/服务器协议兼容性。x版本应该具有客户端和服务器部署之间的兼容协议)。通常,服务器在更新的版本上总是比客户端更安全。

EurekaInstanceConfig配置

String getInstanceId(); 获取要向eureka注册的这个实例的惟一Id(在appName范围内)。

String getAppname();获取要在eureka注册的应用程序的名称。

String getAppGroupName();获取要在eureka注册的应用程序组的名称。

boolean isInstanceEnabledOnit();指示实例是否应在向eureka注册后立即启用以获取流量。有时,应用程序可能需要在准备接受流量之前进行一些预处理。

int getNonSecurePort();获取<code>non-secure</code>端口,实例应该在该端口上接收通信。

int getSecurePort();获取实例应该在其上接收通信的<code>Secure port</code> >。

boolean isNonSecurePortEnabled();指示<code>非安全</code>端口是否应启用流量。

boolean getSecurePortEnabled();指示是否为流量启用<code>secure</code>端口。

int getLeaseRenewalIntervalInSeconds();指示eureka客户端需要多长时间(以秒为单位)将心跳发送到eureka服务器,以指示它仍然活动。如果在{@link #getLeaseExpirationDurationInSeconds()}中指定的时间段内没有接收到心跳,eureka服务器将从其视图中删除该实例,方法是不允许对该实例进行通信。注意,如果实例实现了{@link HealthCheckCallback},然后决定使自己不可用,那么它仍然不能接受流量。

int getLeaseExpirationDurationInSeconds();指示eureka服务器在接收到最后一次心跳后等待的时间(以秒为单位),然后才能从视图中删除该实例,并通过不允许对该实例进行通信来从视图中删除该实例。设置这个值太长可能意味着即使实例不是活动的,也可以将流量路由到该实例。将该值设置得太小可能意味着,由于临时网络故障,实例可能会退出流量。该值至少要高于{@link #getLeaseRenewalIntervalInSeconds()中指定的值。

String getVirtualHostName();获取为此实例定义的虚拟主机名。这通常是其他实例通过使用虚拟主机名找到此实例的方式。可以将此看作类似于完全限定的域名,您的服务的用户将需要找到此实例。

String getSecureVirtualHostName();这通常是其他实例通过使用安全虚拟主机名找到此实例的方式。可以将此看作类似于完全限定的域名,您的服务的用户将需要找到此实例。

String getASGName();获取与此实例关联的<code>AWS自动伸缩组名</code>。此信息专门用于AWS环境中,用于在实例启动后自动使实例停止服务,该实例已禁用通信。

String getHostName(boolean refresh);获取与此实例关联的主机名。这正是其他实例用于调用的名称。

Map<String, String> getMetadataMap();获取与此实例关联的元数据名称/值对。此信息被发送到eureka服务器,并可由其他实例使用。

DataCenterInfo getDataCenterInfo();返回部署此实例的数据中心。如果实例部署在AWS中,则此信息用于获取一些AWS特定的实例信息。

String getIpAddress();获取实例的IPAdress。此信息仅用于学术目的,因为来自其他实例的通信主要是使用{@link #getHostName(boolean)}中提供的信息进行的。

String getStatusPageUrlPath();获取此实例的相对状态页{@link java.net.URL} <em>Path</em>。然后根据{@link #getSecurePort()}和{@link #getNonSecurePort()}中指定的通信类型(安全或不安全)构造状态页URL。它通常用于其他服务的信息目的,以查找此实例的状态。用户可以提供一个简单的<code>HTML</code>,它指示实例的当前状态。

String getStatusPageUrl();获取此实例的绝对状态页{@link java.net.URL}。如果状态页位于与eureka对话的同一个实例中,那么用户可以提供{@link #getStatusPageUrlPath()},否则在实例是其他服务器的代理的情况下,用户可以提供完整的{@link java.net.URL}。如果提供了完整的{@link java.net.URL},则优先。它通常用于其他服务的信息目的,以查找此实例的状态。用户可以提供一个简单的<code>HTML</code>,它指示实例的当前状态。完整的{@link java.net.URL}应该遵循这种格式:

http://${eureka.hostname}:7001/,其中值${eureka.hostname} 在运行时被替换。

String getHomePageUrlPath();设置此实例的相对主页{@link java.net.URL}路径。然后根据{@link #getSecurePort()}和{@link #getNonSecurePort()}中指定的通信类型(安全或不安全)构造主页URL。它通常用于其他服务的信息目的,以便将其用作登录页。

String getHomePageUrl();

String getHealthCheckUrlPath();获取此实例的相对健康检查{@link java.net.URL} <em>Path</em>。然后根据{@link #getSecurePort()}和{@link #getNonSecurePort()}中指定的通信类型(安全或不安全)构造健康检查页面URL。它通常用于根据实例的健康状况做出有根据的决策——例如,它可以用于确定是继续部署到整个集群,还是停止部署,而不会造成进一步的损害。

String getHealthCheckUrl();

String getSecureHealthCheckUrl();

String getNamespace();

private boolean preferIpAddress = false;注意,在猜测主机名时,服务器的IP地址应该与操作系统报告的主机名相对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值