Eureka如何脱离SpringBoot部署?


结果如下:  
![](https://img-blog.csdnimg.cn/img_convert/ef5b7adf83d08ef9a00b8be600be6b13.png)


安装完成。



##### 1.1.2 Tomcat


**(1)版本选择**


Tomcat版本选择可以参考官方给出的表格:  
![](https://img-blog.csdnimg.cn/img_convert/2195011746274b2747e4ed894110ca6b.png)  
我们jdk选择的是1.8,因此Tomcat就选择9或者10版本。这里选择的是Tomcat9。


**(2)上传安装包**


Tomcat安装包已经上传到:<https://cloud.189.cn/t/6FjiqiiYfuIr> (访问码:urj4)  
将安装包上传到目标部署服务器/root/目录下,并执行命令:



cd /root/
tar -zxvf apache-tomcat-9.0.82.tar.gz
mv apache-tomcat-9.0.82 tomcat
mv tomcat /usr/local/tomcat
rm -rf apache-tomcat-9.0.82.tar.gz


**(3)配置环境变量**



vi /etc/profile

追加如下内容:

export PATH=/usr/local/tomcat/bin:$PATH

使环境变量对当前会话生效

source /etc/profile


**(4)验证**  
在任意目录下执行命令:



startup.sh


在确保**防火墙是关闭的条件**下,使用浏览器访问[http://ip:8080,效果如下:]( )  
![](https://img-blog.csdnimg.cn/img_convert/bb9aa11c627b1984a24883d545dd1524.png)  
Tomcat安装完成!



#### 1.2 下载源码与编译


可以使用已经编译好的:<https://mvnrepository.com/artifact/com.netflix.eureka/eureka-server>


**这里如果使用的是Tomcat9,那么Euraka的版本不能是2.x,会有不兼容的问题。**


**(1)下载源码**


源码下载地址:<https://cloud.189.cn/t/qqu26jQRbMvi> (访问码:tan2)  
(或者直接下载已经编译好的:<https://cloud.189.cn/t/bamIRnrINzyq> (访问码:mn9w))


**(2)编译**  
在本地机器编译:



cd eureka/
gradlew clean build


编译完成后,在下面的目录中找到编译成果:




| 目录 | 说明 |
| --- | --- |
| ./eureka-server/build/libs/eureka-server-XXX.war | Tomcat中运行的war包 |
| ./eureka-server/build/libs/eureka-server-XXX-SNAPSHOT-javadoc.jar | Javadoc |
| ./eureka-client/build/libs/eureka-client-XXX.jar | 客户端jar包 |
| ./eureka-client/build/libs/eureka-client-XXX-SNAPSHOT-javadoc.jar | Javadoc |



#### 1.3 上传并启动


将war包重命名为eureka.war,并上传到Tomcat的webapps目录下:  
![](https://img-blog.csdnimg.cn/img_convert/cc693c4114c269b2c9db0a2c545bbf78.png)


访问[**http://ip:8080/eureka/**]( ),查看结果:


![](https://img-blog.csdnimg.cn/img_convert/4c9245f507104724546e88bdc06bfd3c.png)


至此,Eureka单机版安装成功!



### 二、注册服务至单实例Eureka Server



#### 2.1 pom文件



org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-netflix-eureka-client junit junit test org.projectlombok lombok com.fasterxml.jackson.core jackson-databind


#### 2.2 配置文件



server.port=8082
spring.application.name=eureka02

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8080/eureka/eureka


配置文件说明:


* **server.port**:客户端服务启动端口,与Eureka Server的端口无关
* **spring.application.name**:服务名,在微服务系统中就是微服务名,也是注册到Eureka Server后的名字,在微服务调用的时候,就是用这个名字进行调用的
* **eureka.client.register-with-eureka**:是否向注册中心注册自己
* **eureka.client.fetch-registry**:是否要获取已经注册了的服务
* **eureka.client.service-url.defaultZone**:Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址



#### 2.3 启动类



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



#### 2.4 查看注册结果


![](https://img-blog.csdnimg.cn/img_convert/56546585e88d48f33e950f3a9d28fda2.png)



### 三、高可用集群部署


部署目标:




| IP\信息 | 操作系统 | 架构 | 规格 |
| --- | --- | --- | --- |
| 192.168.189.41 | Centos7.9 | x86 | 2c4g |
| 192.168.189.42 | Centos7.9 | x86 | 2c4g |
| 192.168.189.43 | Centos7.9 | x86 | 2c4g |



#### 3.1 统一配置


按照单实例的部署步骤,将192.168.189.42与192.168.189.43同样部署好Eureka。



#### 3.2 配置本地域名


对三台机器都执行:



vi /etc/hosts

添加如下内容,三台主机的配置相同:

192.168.189.41 www.eureka41.com
192.168.189.42 www.eureka42.com
192.168.189.43 www.eureka43.com


![](https://img-blog.csdnimg.cn/img_convert/f71d818d3d4560fc60ddd248ad31e54b.png)



#### 3.3 修改主机名



vi /etc/hostname

修改为各自主机的域名:

www.eureka41.com


备注:这里配置主机名,可以类比在嵌入式部署时候的eureka.instance.hostname


![](https://img-blog.csdnimg.cn/img_convert/01578a97d00771009bad20ea75c4ab81.png)


修改完毕后重启主机:



reboot



#### 3.3 配置集群



##### 3.3.1 eureka-client.properties


修改/usr/local/tomcat/webapps/eureka/WEB-INF/classes/eureka-client.properties文件,将“eureka.serviceUrl.default=http://localhost:8080/eureka/v2/”替换为:



eureka.serviceUrl.default=http://www.eureka41.com:8080/eureka/v2/,http://www.eureka42.com:8080/eureka/v2/,http://www.eureka43.com:8080/eureka/v2/

eureka.serviceUrl.default=http://192.168.189.41:8080/eureka/v2/,http://192.168.189.42:8080/eureka/v2/,http://192.168.189.43:8080/eureka/v2/


**eureka-client.properties部分参数说明**:


* **eureka.port**:Eureka Server的端口,与客户端无关,可以类比在嵌入式部署时候的server.port
* **eureka.name**:如果要搭建集群,那么三个节点的name值必须一致,Eureka会根据这个值判断是否是同一个服务,如果是的话,才会有replica的概念,可以类比在嵌入式部署时候的spring.application.name
* **eureka.serviceUrl.default**:配置这个参数,就相当于Server充当了客户端,将自己的信息也注册到了Server中。可以类比在嵌入式部署时候的eureka.client.service-url.defaultZone
* **eureka.eurekaServer.context**:指定 Eureka 服务器的上下文路径(Context Path)



##### 3.3.2 eureka-server.properties


关闭eureka server的自我保存模式,修改/usr/local/tomcat/webapps/eureka/WEB-INF/classes/eureka-server.properties文件,追加如下内容:



eureka.enableSelfPreservation=false



#### 3.4 重启集群


在三台机器上都执行如下命令:



shutdown.sh
start.sh



#### 3.5 查看集群搭建成果


![](https://img-blog.csdnimg.cn/img_convert/dff660397e9c1ab13f319990400dc129.png)



### 四、配置系统服务


独立部署的Eureka是基于Tomcat的,因此只需要把Tomcat注册到系统服务即可。



#### 4.1 编写系统服务



vi /usr/lib/systemd/system/tomcat.service

内容如下:

[Unit]
Description=tomcat

[Service]
Environment=“JAVA_HOME=/usr/local/jdk”
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/stutdown.sh
Restart=always

[Install]
WantedBy=multi-user.target



#### 4.2 配置开机自启



systemctl daemon-reload
systemctl enable tomcat



### 五、负载均衡


部署目标:




| IP\信息 | 操作系统 | 架构 | 规格 |
| --- | --- | --- | --- |
| 192.168.189.50 | Centos7.9 | x86 | 2c4g |


其实使用Nginx做负载均衡和使用Keepalived的浮动VIP都是可以的,具体看业务需求。



#### 5.1 安装Nginx


参考:  
[尚硅谷笔记]( )



#### 5.2 配置Nginx



vi /usr/local/nginx/conf/nginx.conf

修改成如下内容:

worker_processes 1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream httpds {
    server 192.168.189.41:8080;
    server 192.168.189.42:8080;
    server 192.168.189.43:8080;
}

server {
    listen       8081;
    server_name  eureka_server;

    location /eureka {
        proxy_pass http://httpds/eureka;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-Scheme $scheme;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

}

}



#### 5.3 查看效果


![](https://img-blog.csdnimg.cn/img_convert/9092fd7ba5cd7657af8bd45e5d0e8646.png)



### 六、注册服务至集群Eureka Server



#### 6.1 pom文件


与单实例版一致:



org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-netflix-eureka-client junit junit test org.projectlombok lombok com.fasterxml.jackson.core jackson-databind


#### 6.2 配置文件



server.port=8081
spring.application.name=eureka01

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8081/eureka/v2



#### 6.3 启动类



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



#### 6.4 查看注册结果


![](https://img-blog.csdnimg.cn/img_convert/481efeaf5d5bf44c8bb2428127cf01ee.png)



### 七、服务调用



#### 7.1 消费者



##### 7.1.1 pom文件



org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-starter-netflix-eureka-client junit junit test org.projectlombok lombok com.fasterxml.jackson.core jackson-databind org.springframework.boot spring-boot-devtools runtime true


##### 7.1.2 配置文件



server.port=8082

spring.application.name=eureka-separate-client-consumer

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://192.168.189.41:8080/eureka/v2,http://192.168.189.42:8080/eureka/v2,http://192.168.189.43:8080/eureka/v2



##### 7.1.3 接口类



@RestController
@RequestMapping(“/eureka”)
public class EurekaConsumerController {

@Autowired
private RestTemplate restTemplate;

@GetMapping("/callGetAll")
public String getAll() {
    return restTemplate.getForEntity("http://eureka-separate-client-provider/eureka/clients", String.class).toString();
}

}

@Configuration

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值