docker springcloud 微服务 eureka集群

之前集群各种配置,可以调用服务,但是服务的url 在这里unavailable-replicas 一直出现,意味着不可用。经过各种尝试,最终,还是通过这个hostname的方式进行集群,但应用服务,还是通过IP进行集群调用。

各种失败,百度好久,最终找到一篇文章后。问题解决。之前的困惑是docker容器如何设置hosts文件。

参考文章:https://blog.csdn.net/benben_2015/article/details/88426438

最终发布的脚本这样写。

// 定义一个URL,就是集群地址。
UREKA_SERVICEURL="http://test8761:8761/eureka/,http://test8762:8762/eureka/,http://test8763:8763/eureka/"
运行服务
sh "docker run --restart=always -p 8761:8761 "+ "-d -v ${LOG_PATH}:${LOG_PATH} "+
// 注册中心地址 "-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
// 容器名称 "-e eureka.instance.hostname=test8761 "+
// 重点是下面这行,host文件增加3个地址。最终进入到容器中中的/etc/hosts文件也看到了这3个地址。 "--add-host=test8761:192.168.89.130 --add-host=test8762:192.168.89.130 --add-host=test8763:192.168.89.130 "+ "--name ${PROJECT_NAME} "+ " $REPOSITORY"

 进入容器查看

[root@master ~]# docker ps ==========查看所有运行中的容器
CONTAINER ID        IMAGE                                                   COMMAND                  CREATED             STATUS              PORTS                    NAMES
7e8a4101623c        192.168.89.132/mybs-cloud/eureka:0.0.1-SNAPSHOT   "java -Djava.securit…"   19 minutes ago      Up 19 minutes       0.0.0.0:8763->8761/tcp   eureka8763
707bb1f2dc5c        192.168.89.132/mybs-cloud/eureka:0.0.1-SNAPSHOT   "java -Djava.securit…"   19 minutes ago      Up 19 minutes       0.0.0.0:8762->8761/tcp   eureka8762
24636b410d2d        192.168.89.132/mybs-cloud/eureka:0.0.1-SNAPSHOT   "java -Djava.securit…"   19 minutes ago      Up 19 minutes       0.0.0.0:8761->8761/tcp  eureka
[root@master ~]# docker exec -it 24636b410d2d /bin/bash  ===========进入容器
root@24636b410d2d:/# cat /etc/host  =======查看hosts文件
host.conf    hostname     hosts        hosts.allow  hosts.deny   
root@24636b410d2d:/# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.89.130  test8761
192.168.89.130  test8762
192.168.89.130  test8763
172.17.0.3      24636b410d2d
root@24636b410d2d:/# 
node("${nodeTag}")  {
// docker 私有仓库注册中心
def REGISTRY_URL="192.168.89.132"
def REGISTRY_UID="admin"
def REGISTRY_PID="Harbor12345"
// 私有仓库主目录名称
def MAIN_NAME="ms-cloud"
// 项目目录所在目录
def PROJECT_NAME="${projectName}"
// 项目版本号
def PROJECT_VERSION="0.0.1-SNAPSHOT"
// 镜像名称
def REPOSITORY="${REGISTRY_URL}/${MAIN_NAME}/${PROJECT_NAME}:${PROJECT_VERSION}"
// 日志路径
def LOG_PATH="/home/date/logs/${PROJECT_NAME}/"
// 注册中心eureka地址
def EUREKA_SERVICEURL="http://192.168.89.130:8761/eureka/,http://192.168.89.130:8762/eureka/,http://192.168.89.130:8763/eureka/"
    stage('start') {
        sh "date +'%Y-%m-%d %H:%M:%S'"
    }
    stage("1、clear ${PROJECT_NAME}") {
        echo "clearing ${PROJECT_NAME}..."     
        sh "docker stop ${PROJECT_NAME} |true"     
        sh "docker rm -f ${PROJECT_NAME} |true"     
        sh "docker image rm $REPOSITORY |true"     
    }
   stage("2、deploy ${PROJECT_NAME}") {
     echo "deploying ${PROJECT_NAME}..."     
    sh "docker login -u ${REGISTRY_UID} -p ${REGISTRY_PID} ${REGISTRY_URL}"
     if (PROJECT_NAME == "ms-base-eureka") {
        EUREKA_SERVICEURL="http://test8761:8761/eureka/,http://test8762:8762/eureka/,http://test8763:8763/eureka/"
        sh "docker run  --restart=always -p 8761:8761 "+
        "-d -v ${LOG_PATH}:${LOG_PATH} "+
        "-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
        "-e eureka.instance.hostname=test8761 "+
        "--add-host=test8761:192.168.89.130 --add-host=test8762:192.168.89.130 --add-host=test8763:192.168.89.130 "+
        "--name ${PROJECT_NAME} "+
        " $REPOSITORY"
        
        sh "docker rm -f ${PROJECT_NAME}8762 |true"     
        sh "docker run --restart=always -p 8762:8761 "+
        "-d -v ${LOG_PATH}8762:${LOG_PATH} "+
        "-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
        "-e eureka.instance.hostname=test8762 "+
        "--add-host=test8761:192.168.89.130 --add-host=test8762:192.168.89.130 --add-host=test8763:192.168.89.130 "+
        "--name ${PROJECT_NAME}8762 "+
        " $REPOSITORY"
        
        sh "docker rm -f ${PROJECT_NAME}8763 |true"     
        sh "docker run --restart=always -p 8763:8761 "+
        "-d -v ${LOG_PATH}8763:${LOG_PATH} "+
        "-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
        "-e eureka.instance.hostname=test8763 "+
        "--add-host=test8761:192.168.89.130 --add-host=test8762:192.168.89.130 --add-host=test8763:192.168.89.130 "+
        "--name ${PROJECT_NAME}8763 "+
        " $REPOSITORY"
     } else if (PROJECT_NAME == "ms-base-config") {
       sh "docker run --restart=always -p 8888:8888 "+
        "-d -v ${LOG_PATH}:${LOG_PATH} "+
        "-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
        "--name ${PROJECT_NAME} "+
        " $REPOSITORY"
     } else {
       error '请选择要发布的分支'
     }
   }
    stage('Results 3') {
        echo "finish ${PROJECT_NAME}"
    }
    stage('end') {
        sh "date +'%Y-%m-%d %H:%M:%S'"
        echo "本次运行时间: ${currentBuild.duration} ms"
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/a393060727/p/12512619.html