版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习!
服务注册、发现是微服务架构的关键原理之一,由于微服务架构是由一系列职责单一的细粒度服务构成的网状结构,服务之间通过轻量机制进行通信,这就必然引入一个服务注册发现的问题,也就是说服务提供方要注册报告服务地址,服务调用方要能发现目标服务。在我们的微服务架构中我们采用了Eureka来完成微服务的注册与发现。微服务通过Eureka进行注册,服务调用方通过Eureka找到目标服务。由于服务提供方以集群方式提供服务,Eureka也采用集群的方式来提供服务的注册与发现,集群中的Eureka实例之间可以进行数据同步,所有Eureka实例中的服务注册信息都是同步的。那么问题来了,Eureka集群中的实例怎么知道其他实例的存在呢,怎么来发现其他的实例呢?通常的做法是通过DNS,因此我们需要搭建DNS服务器。下面来介绍Euraka集群的搭建过程。
一、搭建DNS服务器(Linux环境下)
1、安装DNS服务器组件,这里我们用的是bind
命令:yum install -y bind bind-chroot bind-utils
2、编辑配置DNS主配置文件
命令:vi /etc/named.conf
3、修改named.rfc1912.zones文件
命令: vi /etc/named.rfc1912.zones
添加所需要的zone
4、添加设置DNS正向解析
修改zone配置文件,正向解析
命令:cd /var/named/
cp named.localhost eureka.com.zone
vi eureka.com.zone
注意:要和主配置文件[/etc/named.rfc1912.zones]里面定义的zone文件名一致
5、启动DNS服务器
命令:service named start
6、测试检测域信息是否正常
检查之前先看下配置文件有没有读取权限
命令:ll /var/named
如果没有读取权限,用chmod +r /var/named/* 命令添加即可
7、重新启动DNS服务器
命令:service named restart
8、DNS服务器地址配置
第一种方式:此方式是暂时修改dns地址,当网络重启之后,则自动清除。
命令:vi /etc/resolv.conf
第二种方式:此方式是永久修改dns地址,当网络重启之后,不会清除。
命令:vi /etc/sysconfig/network-scripts/ifcfg-enp0s25
二、将eureka的dns配置放在jar包外面启动微服务
docker 命令:docker run –e eurekaServerDNSName=域名 镜像
三、EUREKA集群配置
编写Eureka 配置文件(application.yml)
其中 eureka 的配置分为client 端和server 端:
Eureka client配置中,eurekaServerURLContext: eureka 表示eureka注册中心的路径,默认为http://x.x.x.x:x/eureka/,在eureka的配置文件中加入此配置表
示eureka作为客户端向注册中心注册,从而构成eureka集群。
Eureka server 配置中,enableSelfPreservation: false表示在此eureka服务器中关闭自我保护模式,所谓自我保护模式是指,出现网络分区、eureka在短时间内丢失过
多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除。默认为true:
自我保护模式默认为开启,这就涉及到阈值因子,默认为0.85,这些在eureka主界面上可以看出:
阈值不能大于最小值,否则将会进入自我保护模式。
以上是eureka集群的搭建过程,在搭建的过程中踩过很多坑,也有很多收获,eureka相关的一些配置项就不在这里赘述了,内容比较多,有必要的话我再另外单独介绍这部分内容。