暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringCloud(十二)阿里云上使用Docker部署eurake集群

Java架构师编程 2019-08-12
477

准备工作:

我这里ecs 的系统是debian,大家根据各自系统选择不同安装指导。

安装 docker,参考 https://docs.docker.com/install/linux/docker-ce/debian/
安装 docker-compose,参考 https://docs.docker.com/compose/install/#install-compose

配置hosts文件

因为euraka对端口不敏感,我这里 eurake 实际上是部署在一台ECS上的伪集群,故hosts文件,必须配置,否则会将3个实例识别成一个,造成各种启动问题。

127.0.0.1 peer1 peer2 peer3

安装之后,我们构建eurake集群

将《SpringCloud(四)服务发现eurake的介绍与使用》一节中的 microservice-discovery-eurake 项目直接拷贝一份,修改 application.properties属性

具体内容分别为:

application.properties

spring.application.name=microservice-discovery-eurake-ha

application-peer1.properties

spring.profiles=peer1
server.port = 8761
eureka.instance.hostname=peer1
eureka.client.service-url.defaultZone = http://peer2:8762/eureka/,http://peer3:8763/eureka/
###表示是否将自己注册到eurekaServer 上,当前节点就是eurekaServer ,故设false
eureka.client.register-with-eureka = false
eureka.client.fetch-registry = false

application-peer2.properties

spring.profiles=peer2
server.port = 8762
eureka.instance.hostname=peer2
eureka.client.service-url.defaultZone = http://peer1:8761/eureka/,http://peer3:8763/eureka/
###表示是否将自己注册到eurekaServer 上,当前节点就是eurekaServer ,故设false
eureka.client.register-with-eureka = false
eureka.client.fetch-registry = false

application-peer3.properties

spring.profiles=peer3
server.port = 8763
eureka.instance.hostname=peer3
eureka.client.service-url.defaultZone = http://peer1:8761/eureka/,http://peer2:8762/eureka/
###表示是否将自己注册到eurekaServer 上,当前节点就是eurekaServer ,故设false
eureka.client.register-with-eureka = false
eureka.client.fetch-registry = false

修改pom.xml文件

增加docker 插件,方便maven编译出docker 镜像文件

<!-- dockermaven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<imageName>microservice-discovery-eureka</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/$
{project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>$
{project.build.directory}</directory>
<include>$
{project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

编译镜像

执行 

注意:这里是在ECS服务器上进行mavn编译的。

mvn clean package docker:build

编写docker-compose.yml文件

这里使用compose,一键编排docker 镜像。新建 docker-compose.yml 文件,文件内容为:

version: "2"
services:
peer1: # 默认情况下,其他服务可以使用服务名称连接到该服务。因此,对于peer2的节点,它需要连接http://peer1:8761/eureka/,因此需要配置该服务的名称是peer1
image: microservice-discovery-eureka:latest
networks:
- eureka-net
ports:
- "8761:8761"
environment:
- spring.profiles.active=peer1
peer2:
image: microservice-discovery-eureka:latest
hostname: peer2
networks:
- eureka-net
ports:
- "8762:8762"
environment:
- spring.profiles.active=peer2
peer3:
image: microservice-discovery-eureka:latest
hostname: peer3
networks:
- eureka-net
ports:
- "8763:8763"
environment:
- spring.profiles.active=peer3
networks:
eureka-net:
driver: bridge

注意:这里image镜像地址为,我们在pom.xml中插件配置的地址

<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>

在执行完 编译镜像 后,可看到镜像的输出路径,上面image 镜像地址即为截图中的地址:

上传docker-compose.yml 文件 至ECS服务器。

执行

docker-compose up

即可看到控制台,输出eurake 注册中心启动的状态。

我这里,通过SSL链接远程ECS服务器的,故做了个端口转发,使用SecureCRT工具

随后访问 ,即可看到,注册中心的状态。

http://127.0.0.1:18761/

后面,就是将客户端信息注册到 eureka中去啦。

本文参考 周立 老师的博文,感谢~ http://www.itmuch.com/docker-compose-eureka-ha/

文章转载自Java架构师编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论