Eureka集群部署

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 19:43   11   0
我们已经创建好了一个集群版的Eureka的项目,我们将实例部署到集群环境当中,我们先说一下我们的

部署环境,我为大家安装了两台虚拟机,准备了两个Linux环境,我们会把节点部署到两个不同的虚拟机当中,

Linux系统当中,然后这里我们需要注意,部署环境,Linux系统,需要安装JDK1.8,并且正确配置环境变量,然后你不需要

安装什么Tomcat,因为我们是基于SpringBoot项目去开发的,在SpringBoot当中,它是内嵌了一个TOMCAT,而且SpringBoot

最终导包的时候呢,会生成一个jar文件,只要运行这个jar文件,他启动时就会启动内置的tomcat,所以我们也不需要去安装

什么tomcat了,接下来我们看一下,我们是两个环境,一个是IP为134的,一个是IP为135的,那么我们需要做的第一件事,就是将

项目打包,那么打包怎么打呢,其实也非常简单的,我们这个项目不是基于maven来开发的吗,所以我们可以直接用maven来打包,

Maven install

这是打包的命令,回到我们的eclipse当中,这个时候看到BUILD SUCCESS,说明打包成功了,然后我们来看一下项目的target目录,

在这里我们可以看到,有一个springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar,其实这个就是我们项目被maven

打完后的一个jar包,因为我们创建的就是jar项目,第二步我们需要把我们的项目上传到我们的虚拟机当中,

我的虚拟机是带一个图形界面的,

我通过这个图形界面上传,要比我们通过上传要快一些,我在root下建立了一个temp的目录,往上传一些资源的,那我们就把jar包

传到虚拟机当中,134下已经有了,我们看一下135下,也传一份相同的,现在我就相当于我的两个节点下,环境当中已经有这个项目了,

然后接下来我们来看还要做什么事,我们先进入到temp目录里,这里我们可以看到上传进来了,然后我们去usr/local下,我们新建一个

目录,叫eureka,我以后跟服务启动相关的东西,我都会放到这个目录下,然后将我们的文件copy过去

cp eureka.jar /usr/local/eureka/ -f

我们把它整理到笔记当中,将项目的jar包拷贝到/usr/local/eureka,上面还少一步,在/usr/local下创建一个eureka的目录,

然后将它拷过去,上传实例,上传进来以后,我们现在还需要一个启动脚本,我的项目在运行的时候,我还需要依赖一个shell脚本去

启动项目,那么shell脚本也比较简单,我们来添加一个shell脚本,那么shell脚本怎么写呢,这里准备好了一个脚本,已经写好了,

当然这些东西没有必要死记硬背,在这个启动脚本当中,我们所关注的是这两点,一个好似JAR_NAME的变量

JAR_NAME="项目名称"

还有一个是SPRING_PROFILES_ACTIV

SPRING_PROFILES_ACTIV="-Dspring.profiles.active=配置文件变量名称"

这个JAR_NAME表示什么意思呢,当前需要让启动脚本,去运行的项目的JAR包的全名,SPRING_PROFILES_ACTIV表示的什么呢,

我们知道在SpringBoot当中,对于多环境配置的时候,你的项目在启动的时候,可以给他加载指定的配置文件,来去做启动,

那么其实这一块呢,就是你的实例在启动,让他去加载哪个配置文件,这个大家还有印象吧,讲的时候说过,你在windos平台下,

你在启动你的项目的时候,用java -jar,然后后面是你项目的名称,然后项目要启动的时候,加载指定的配置文件,去让他启动,

我们可以加一个--spring.profile.active,然后等于你配置文件的后缀

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar --spring.profile.active=dev &

那么在linux系统下面,也是这样的,但是不同的这些都定义在脚本里面,启动的脚本文件当中了,那么也就是未来把这个改一下就可以了,

其他的我们什么都不用动,然后我们把这个copy一下,拿过来,打开我们的XShell,我们把这个粘进来,粘进来之后呢,首先项目的名称,

打开我们的项目,把我们项目的全名copy一下,然后把它粘进来

JAR_NAME="springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar"

这是第一步,第二步就是配置文件,那么这个配置文件大家注意,打算怎么去部署这个实例呢,这里有个134,有个135,我们打算把eureka1

部署到134里,eureka2部署到135里,那么也就意味着,135在启动我们的eureka server的时候,需要让他去加载eureka2的配置文件,

所以这块我们就给eureka2,这样启动就不会加载这个配置文件了

SPRING_PROFILES_ACTIV="-Dspring.profiles.active=eureka2"

保存并退出

然后我们就创建了一个启动脚本,这个脚本是没有执行权限的,我们还要给他分配一个执行权限,那就是

chmod -R 755 server.sh

现在可以看到脚本有执行权限了,回来在134里我们也要这么去做,进入到eureka目录下,然后我们再去创建一个

vim sever.sh

然后把配置文件里的内容都copy过来,然后还是先改项目名称,配置文件,这是在134下,134下这个环境要启动的时候,

chmod -R 755 server.sh

有这个执行权限了,编写一个启动脚本文件,配置文件变量名称,设置启动脚本的运行权限,然后接下来我们还有一个非常

重要的环节去做,大家注意,我们在配置文件当中,现在是通过域名hostname来访问的,那我们还要对我们的host文件做修改,

现在你要用这个域名去访问,或者你访问这个hostname,他所对应的IP地址是多少,否则它是无法访问的,否则他怎么知道是哪个

机器的地址,所以需要修改linux的host文件,我们先从134开始,vim /etc/host

这个是host文件里,它里面的内容,然后我们要往里加,比如我家在eureka1的实例,在134环境当中,他要访问的是eureka2,

我们要把eureka2的配置一下

10.40.8.152 eureka1
10.40.8.152 eureka2

把两个的hostname和IP做一个映射,我们去看修改后的内容,我们就可以去启动我们的注册中心了,怎么启动呢,

./server.sh start

启动时必须要给start,脚本当中他有两个参数,一个是start,一个是stop

echo_help()
{
    echo -e "syntax: sh $CUR_SHELL_NAME start|stop"
}

start表示你的服务启动,如果你想通过脚本关闭你当前的eureka注册中心,后面跟stop参数就可以了,这个文件位于 etc下的host,

接下来启动eureka注册中心,启动的命令是./server.sh后面跟start,是启动,然后停止呢,是./server.sh stop,这个是停止,

接下来我们就来启动一下,当然这两个你从哪个启动都可以,启动,他现在正在启动,./server.sh start启动,然后我们在启动的

时候也不知道启动有什么东西,我们也不知道成功还是不成功,我们加了logback了,这个时候在你们项目的目录下,相对路径下

会创建一个catalina的目录,我们进到里面,然后进入到logs里面,这里有一个日志文件,我们可以用tail的命令看一下,

这是他启动时输出的信息


nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=e1 &

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=e2 &

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=eureka1 &

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=eureka2 &

application-eureka1.properties

#spring.application.name=eureka-server
server.port=8761
#eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

application-eureka2.properties

#spring.application.name=eureka-server
server.port=8762
#eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=eureka1 &

nohup java -jar springcloud-eureka-server-ha-0.0.1-SNAPSHOT.jar  --spring.profiles.active=eureka2 &


application-eureka1.properties

#spring.application.name=eureka-server
server.port=8761
#eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
#eureka.client.registerWithEureka=false
#eureka.client.fetchRegistry=false

application-eureka2.properties

#spring.application.name=eureka-server
server.port=8762
#eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#eureka.client.registerWithEureka=false
#eureka.client.fetchRegistry=false

需要关闭linux的防火墙或者开放8761端口,我这里已经把防火墙关闭了,如果你不关闭防火墙,它是无法通信的,也是无法启动的,

我们通过浏览器可以去访问注册中心的页面

http://10.40.8.152:8762/

http://10.40.8.152:8761/

管理页面打开了,表示我们集群版的注册中心是成功的,我们把是否配置的去掉了,单机版你一定要去掉他,因为只有一个实例,

而且这个实例还是注册中心自己,所以会默认注册自己,那样是肯定无法注册的,但是集群版就不存在这个问题,集群版不存在这个

问题的原因是什么呢,因为它是两个节点,会想集群的其他节点去注册
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.learn.cloud</groupId>
 <artifactId>springcloud-eureka-server-ha</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>jar</packaging>
 
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.5.12.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>
 
 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <java.version>1.8</java.version>
 </properties> 
 
    <dependencyManagement>
        <dependencies>
            <dependency>    
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
 </dependencies>
 
 <!-- 这个插件,可以将应用打包成一个可执行的jar包 -->
 <build>
     <plugins>
         <plugin>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
     </plugins>
 </build>
 
  
</project>
#spring.application.name=eureka-server
server.port=8761
#eureka.instance.hostname=eureka1
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka/
#eureka.client.registerWithEureka=false
#eureka.client.fetchRegistry=false
#spring.application.name=eureka-server
server.port=8762
#eureka.instance.hostname=eureka2
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
#eureka.client.registerWithEureka=false
#eureka.client.fetchRegistry=false
package com.learn;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP