自己保護メカニズム、ヘルスチェック、アクチュエータモジュールのモニターのユーレカの役割

前の記事ではサービス登録とサービスのマイクロサービス間の呼び出し、私たちは基本的にサービスコールの間で達成、今日はユーレカ自己保護メカニズムとヘルスチェックを見てください。

  • ユーレカ自己保護メカニズム

そして、プロジェクトつ以上の記事は、基礎を(ユーレカ・サーバー、uerreg、myweb確立 )、 ユーレカは身を守るために、デフォルトでオンになっています。テストをやってみましょう、我々は3つのプロジェクトの最初を開始し、我々はレジストリへのアクセス持っているHTTPを:// localhostを:8761 /

image.png
あなたは、インスタンスが正常にセンターに登録され、見ることができます。我々は、サービスがシャットダウンuerregレジストリを更新します。この時点で、私たちは、次のインターフェイスがあります
image.png


また、私たちは、赤い警告メッセージの行を参照してください、また素晴らしいものを発見し、私たちのサービスインスタンスは、killがあるが、彼は、レジストリが存在するサービスでした。これはユーレカ自己保護機構であり、彼はサービスのこつを削除されていないだろう、彼は、サービスが再接続しようとしていると思うだろう。
開発プロセスにおける私たちは確かに、発展に資するものであることを望んでいません。私たちは、ユーレカの自己保護メカニズム(実際の生産環境がクローズすることは推奨されません)をオフにすることができます。

  • ユーレカ・サーバーのサーバー
    設定ファイル我々は、次の設定を追加します
#关闭保护机制,以确保注册中心将不可用的实例正确剔除
eureka.server.enable-self-preservation=false
#(代表是5秒,单位是毫秒,清理失效服务的间隔 )
eureka.server.eviction-interval-timer-in-ms=5000
  • USERREGクライアントの
    設定ファイル我々は、次の設定を追加します
# 心跳检测检测与续约时间
# 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务
# 配置说明
#  lease-renewal-interval-in-seconds 每间隔10s,向服务端发送一次心跳,证明自己依然”存活“
#  lease-expiration-duration-in-seconds  告诉服务端,如果我20s之内没有给你发心跳,就代表我“死”了,将我踢出掉。
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.lease-expiration-duration-in-seconds=20

私たちは、サービスを再起動し、テストのためUSERREGクライアントを閉じます。
image.png

この時点で、私たちは、赤い警告が自己保護の警告をオフにして、レジストリの例は、自己保護メカニズムがオフになっていることを示す、除外となったことがわかります。

  • ヘルスチェック

人々は人、サービス、時には異常な状況のように、病気になり、我々はまた、サービスの健康状態を知る必要があります。私たちは、ヘルスチェックサービスを開くには、次の依存関係を追加することができます。と例えばUSERREGサービス、
POMファイルと、次の依存関係を追加

...
<!--健康检查依赖-->
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-actuator</artifactId>
       </dependency>
...

ok,其他的什么都不变,我们来访问一下这个接口http://localhost:9001/health
我们看到了一个很简短的健康报告:{"description":"Spring Cloud Eureka Discovery Client","status":"UP"},类似的还有

info 显示任意的应用信息
metrics 展示当前应用的指标信息 true
mappings 显示所有@RequestMapping路径的整理列表
trace 显示trace信息(默认为最新的一些HTTP请求)
health 展示应用的健康信息
beans 显示一个应用中所有Spring Beans的完整列表

这其中有一些是敏感信息,出于安全考虑,如果不设置

#关掉认证(公网下的生产环境不建议,内网部署可以)
#management.security.enabled=false

默认是无法访问的。
如果我们要访问查看而且想保证一定的安全性,我们应该做什么呢?我们在userreg的pom文件中引入

...
 <!--安全认证依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
...

此时我们访问/beans敏感信息时,弹出如下信息,需要我们进行身份认证

image.png

仅仅引入依赖其实是有问题的,因为我们请求正常的业务接口他也会要求进行认证,解决办法可以在userreg工程的配置文件中添加如下设置:

#(增加了访问路径)
management.context-path=/admin
security.user.name=root
security.user.password=123
#只对/admin进行安全认证
security.basic.path=/admin

重启服务,我们访问http://localhost:9001/admin/beans,注意哦,我们在配置文件中添加了相对路径,只对admin进行验证,此时我们输入正确的用户名和密码(已在配置文件中配置)会显示我们需要的信息。

  • 实战健康检查

実用的なアプリケーションシナリオでどのような健康チェック、それ?たとえば、私たちはUSERREG構成されたエンジニアリング・データ・ソースは、
以下の依存関係ポンポンファイルに導入され、

...
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
...

次に、コンフィギュレーション・クラスを作成し、コンフィギュレーションデータソースのデータソース

@Configuration
public class Myconfig {
   @Bean
   public DataSource dataSource()
   {
       org.apache.tomcat.jdbc.pool.DataSource dataSource=new org.apache.tomcat.jdbc.pool.DataSource();
       dataSource.setUrl("jdbc:mysql://localhost/test?characterEncoding=UTF-8");
       dataSource.setUsername("root");
       dataSource.setPassword("mysql");
       dataSource.setDriverClassName("com.mysql.jdbc.Driver");
       return dataSource;
   }
}

これはspringbootで研究されてきた後、私がフォローアップします学習プロセスを記録するブログspringbootの方法で、データソースの設定が完了し、我々はサービス、訪問開始にhttp:// localhostを:9001 / adminに /健康は健康を参照してください

image.png
私たちは、デシベルの健康状況を見ることができます。この時点でMySQLサービスならば、我々はハングアップ、何が起こるのだろうか?
image.png
私たちは手動でMySQLのサービスを停止し、その後、健康を見て
image.png
Dbの状態が「UP」で発見された、私たちのサービスの健全性を見ることは容易であるので、「DOWN」になり、エラーメッセージが表示されます。

おすすめ

転載: www.cnblogs.com/jpfss/p/11314742.html