0
点赞
收藏
分享

微信扫一扫

docker springcloud 微服务 eureka集群

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

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


docker springcloud 微服务 eureka集群_2d

 

最终发布的脚本这样写。

// 定义一个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:/#

 

 完整的pipeline发布脚本

node("${nodeTag}")  {
// docker 私有仓库注册中心
def REGISTRY_URL="192.168.89.132"
def REGISTRY_UID="admin"
def REGISTRY_PID="test12345"
// 私有仓库主目录名称
def MAIN_NAME="test-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}/"
// host地址
def CONFIG_HOST="192.168.89.130"
def EUREKA_HOST_A="192.168.89.130"
def EUREKA_HOST_B="192.168.89.130"
def EUREKA_HOST_C="192.168.89.130"
def EUREKA_PORT_A="8761"
def EUREKA_PORT_B="8762"
def EUREKA_PORT_C="8763"
// 注册中心eureka地址
def EUREKA_SERVICEURL="http://${EUREKA_HOST_A}:${EUREKA_PORT_A}/eureka/,http://${EUREKA_HOST_B}:${EUREKA_PORT_B}/eureka/,http://${EUREKA_HOST_C}:${EUREKA_PORT_C}/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 == "test-base-eureka") {
EUREKA_SERVICEURL="http://test${EUREKA_PORT_A}:${EUREKA_PORT_A}/eureka/,http://test${EUREKA_PORT_B}:${EUREKA_PORT_B}/eureka/,http://test${EUREKA_PORT_C}:${EUREKA_PORT_C}/eureka/"

sh "docker run --restart=always -p ${EUREKA_PORT_A}:8761 "+
"-d -v ${LOG_PATH}${EUREKA_PORT_A}:${LOG_PATH} "+
"-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
"-e eureka.instance.hostname=test${EUREKA_PORT_A} "+
"--add-host=test${EUREKA_PORT_A}:${EUREKA_HOST_A} --add-host=test${EUREKA_PORT_B}:${EUREKA_HOST_B} --add-host=test${EUREKA_PORT_C}:${EUREKA_HOST_C} "+
"--name ${PROJECT_NAME} "+
" $REPOSITORY"

sh "docker rm -f ${PROJECT_NAME}${EUREKA_PORT_B} |true"
sh "docker run --restart=always -p ${EUREKA_PORT_B}:8761 "+
"-d -v ${LOG_PATH}${EUREKA_PORT_B}:${LOG_PATH} "+
"-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
"-e eureka.instance.hostname=test${EUREKA_PORT_B} "+
"--add-host=test${EUREKA_PORT_A}:${EUREKA_HOST_A} --add-host=test${EUREKA_PORT_B}:${EUREKA_HOST_B} --add-host=test${EUREKA_PORT_C}:${EUREKA_HOST_C} "+
"--name ${PROJECT_NAME}${EUREKA_PORT_B} "+
" $REPOSITORY"

sh "docker rm -f ${PROJECT_NAME}${EUREKA_PORT_C} |true"
sh "docker run --restart=always -p ${EUREKA_PORT_C}:8761 "+
"-d -v ${LOG_PATH}${EUREKA_PORT_C}:${LOG_PATH} "+
"-e eureka.client.serviceUrl.defaultZone=${EUREKA_SERVICEURL} "+
"-e eureka.instance.hostname=test${EUREKA_PORT_C} "+
"--add-host=test${EUREKA_PORT_A}:${EUREKA_HOST_A} --add-host=test${EUREKA_PORT_B}:${EUREKA_HOST_B} --add-host=test${EUREKA_PORT_C}:${EUREKA_HOST_C} "+
"--name ${PROJECT_NAME}${EUREKA_PORT_C} "+
" $REPOSITORY"

} else if (PROJECT_NAME == "test-base-config") {
sh "docker run --restart=always -p 8888:8888 "+
"-d -v ${LOG_PATH}:${LOG_PATH} "+
"-e eureka.instance.ip-address=${CONFIG_HOST} "+
"-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} test"
}
}

 

举报

相关推荐

0 条评论