refactor(consul): 更新服务检查地址为远程IP并重构部署脚本
将Consul配置中的服务检查地址从容器名改为远程IP地址,以支持跨服务器健康检查 删除旧的部署脚本和配置文件,新增分离的远程和本地部署脚本 重构docker-compose配置为远程和本地两个版本,优化服务部署结构
This commit is contained in:
parent
30420cd612
commit
92029b89e9
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "data-service",
|
"address": "data-service",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://ari-data-service:8000/api/public/stock_bid_ask_em?symbol=000001",
|
"http": "http://10.195.102.127:8000/api/public/stock_bid_ask_em?symbol=000001",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "emotion-service",
|
"address": "emotion-service",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://emotion-service:8002/health",
|
"http": "http://10.195.102.127:8002/health",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "frontend",
|
"address": "frontend",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://frontend:80/",
|
"http": "http://10.195.102.127:8080/",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "quant-service",
|
"address": "quant-service",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://quant-service:8001/health",
|
"http": "http://10.195.102.127:8001/health",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "recommend-service",
|
"address": "recommend-service",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://recommend-service:8003/health",
|
"http": "http://10.195.102.127:8003/health",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"service": {
|
"service": {
|
||||||
"address": "user-service",
|
"address": "user-service",
|
||||||
"check": {
|
"check": {
|
||||||
"http": "http://user-service:8004/health",
|
"http": "http://10.195.102.127:8004/health",
|
||||||
"interval": "10s",
|
"interval": "10s",
|
||||||
"timeout": "5s"
|
"timeout": "5s"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"service": {
|
|
||||||
"name": "whoami",
|
|
||||||
"tags": [
|
|
||||||
"traefik.enable=true",
|
|
||||||
"traefik.http.routers.whoami.entrypoints=web",
|
|
||||||
"traefik.http.routers.whoami.rule=Path(\"/whoami\")",
|
|
||||||
"traefik.http.services.whoami.loadbalancer.server.port=80"
|
|
||||||
],
|
|
||||||
"address": "whoami",
|
|
||||||
"port": 80,
|
|
||||||
"checks": [
|
|
||||||
{
|
|
||||||
"http": "http://whoami:80/",
|
|
||||||
"interval": "10s",
|
|
||||||
"timeout": "2s"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -5,40 +5,6 @@ networks:
|
|||||||
driver: bridge
|
driver: bridge
|
||||||
|
|
||||||
services:
|
services:
|
||||||
consul:
|
|
||||||
image: consul:1.15
|
|
||||||
container_name: ari-consul
|
|
||||||
restart: always
|
|
||||||
ports:
|
|
||||||
- "8500:8500" # Consul Web UI
|
|
||||||
- "8600:8600/udp" # DNS服务
|
|
||||||
volumes:
|
|
||||||
- ./consul/config/${ENV_CONFIG_DIR}:/consul/config
|
|
||||||
command: "consul agent -server -bootstrap-expect=1 ${CONSUL_DEV_MODE} -config-dir=/consul/config -client=0.0.0.0"
|
|
||||||
networks:
|
|
||||||
- microservice-network
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:8500/v1/status/leader"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
traefik:
|
|
||||||
image: traefik:v2.11
|
|
||||||
container_name: ari-traefik
|
|
||||||
command:
|
|
||||||
- --configFile=/etc/traefik/traefik.yml
|
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
- "443:443"
|
|
||||||
- "8080:8080" # Traefik dashboard
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
- ./traefik/config/${TRAEFIK_CONFIG_DIR}/traefik.yml:/etc/traefik/traefik.yml
|
|
||||||
- ./traefik/certs:/etc/traefik/certs
|
|
||||||
networks:
|
|
||||||
- microservice-network
|
|
||||||
|
|
||||||
data-service:
|
data-service:
|
||||||
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/data-service:latest
|
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/data-service:latest
|
||||||
container_name: ari-data-service
|
container_name: ari-data-service
|
||||||
@ -54,11 +20,10 @@ services:
|
|||||||
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/quant-service:latest
|
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/quant-service:latest
|
||||||
container_name: ari-quant-service
|
container_name: ari-quant-service
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
|
||||||
consul:
|
|
||||||
condition: service_healthy
|
|
||||||
expose:
|
expose:
|
||||||
- "8001"
|
- "8001"
|
||||||
|
ports:
|
||||||
|
- "8001:8001"
|
||||||
networks:
|
networks:
|
||||||
- microservice-network
|
- microservice-network
|
||||||
environment:
|
environment:
|
||||||
@ -68,11 +33,10 @@ services:
|
|||||||
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/emotion-service:latest
|
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/emotion-service:latest
|
||||||
container_name: ari-emotion-service
|
container_name: ari-emotion-service
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
|
||||||
consul:
|
|
||||||
condition: service_healthy
|
|
||||||
expose:
|
expose:
|
||||||
- "8002"
|
- "8002"
|
||||||
|
ports:
|
||||||
|
- "8002:8002"
|
||||||
networks:
|
networks:
|
||||||
- microservice-network
|
- microservice-network
|
||||||
environment:
|
environment:
|
||||||
@ -82,11 +46,10 @@ services:
|
|||||||
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/recommend-service:latest
|
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/recommend-service:latest
|
||||||
container_name: ari-recommend-service
|
container_name: ari-recommend-service
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
|
||||||
consul:
|
|
||||||
condition: service_healthy
|
|
||||||
expose:
|
expose:
|
||||||
- "8003"
|
- "8003"
|
||||||
|
ports:
|
||||||
|
- "8003:8003"
|
||||||
networks:
|
networks:
|
||||||
- microservice-network
|
- microservice-network
|
||||||
environment:
|
environment:
|
||||||
@ -96,11 +59,10 @@ services:
|
|||||||
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/user-service:latest
|
image: crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com/testrrr/user-service:latest
|
||||||
container_name: ari-user-service
|
container_name: ari-user-service
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
|
||||||
consul:
|
|
||||||
condition: service_healthy
|
|
||||||
expose:
|
expose:
|
||||||
- "8004"
|
- "8004"
|
||||||
|
ports:
|
||||||
|
- "8004:8004"
|
||||||
networks:
|
networks:
|
||||||
- microservice-network
|
- microservice-network
|
||||||
environment:
|
environment:
|
||||||
@ -119,13 +81,9 @@ services:
|
|||||||
- user-service
|
- user-service
|
||||||
expose:
|
expose:
|
||||||
- "80"
|
- "80"
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
networks:
|
networks:
|
||||||
- microservice-network
|
- microservice-network
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_NAME=frontend
|
- SERVICE_NAME=frontend
|
||||||
|
|
||||||
whoami:
|
|
||||||
image: traefik/whoami
|
|
||||||
container_name: whoami
|
|
||||||
networks:
|
|
||||||
- microservice-network
|
|
||||||
40
docker-compose.remote.yml
Normal file
40
docker-compose.remote.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
networks:
|
||||||
|
microservice-network:
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
consul:
|
||||||
|
image: consul:1.15
|
||||||
|
container_name: ari-consul
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "8500:8500" # Consul Web UI
|
||||||
|
- "8600:8600/udp" # DNS服务
|
||||||
|
volumes:
|
||||||
|
- ./consul/config/${ENV_CONFIG_DIR}:/consul/config
|
||||||
|
command: "consul agent -server -bootstrap-expect=1 ${CONSUL_DEV_MODE} -config-dir=/consul/config -client=0.0.0.0"
|
||||||
|
networks:
|
||||||
|
- microservice-network
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8500/v1/status/leader"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
traefik:
|
||||||
|
image: traefik:v2.11
|
||||||
|
container_name: ari-traefik
|
||||||
|
command:
|
||||||
|
- --configFile=/etc/traefik/traefik.yml
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "8080:8080" # Traefik dashboard
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./traefik/config/${TRAEFIK_CONFIG_DIR}/traefik.yml:/etc/traefik/traefik.yml
|
||||||
|
- ./traefik/certs:/etc/traefik/certs
|
||||||
|
networks:
|
||||||
|
- microservice-network
|
||||||
43
run-local.sh
Normal file
43
run-local.sh
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 本地服务器启动脚本:部署业务服务
|
||||||
|
# 配置参数
|
||||||
|
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
|
||||||
|
VERSION="latest"
|
||||||
|
COMPOSE_FILE=docker-compose.local.yml
|
||||||
|
USERNAME="2324802641zhengniannian@gmail.com"
|
||||||
|
# 远程Consul地址(请替换为实际远程服务器IP)
|
||||||
|
REMOTE_CONSUL_IP="your_remote_consul_server_ip"
|
||||||
|
|
||||||
|
# 检查Docker和Docker Compose
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "错误: Docker未安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! docker compose version &> /dev/null; then
|
||||||
|
echo "错误: Docker Compose未安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 登录Docker仓库
|
||||||
|
echo "登录阿里云Docker仓库..."
|
||||||
|
docker login --username=$USERNAME $REGISTRY
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 仓库登录失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动本地业务服务(不包含Consul和Traefik)
|
||||||
|
echo "正在启动本地业务服务..."
|
||||||
|
VERSION=$VERSION CONSUL_HTTP_ADDR="$REMOTE_CONSUL_IP:8500" docker compose -f $COMPOSE_FILE up -d data-service emotion-service frontend quant-service recommend-service user-service
|
||||||
|
|
||||||
|
# 显示状态
|
||||||
|
echo "\n本地服务状态:"
|
||||||
|
docker compose -f $COMPOSE_FILE ps data-service emotion-service frontend quant-service recommend-service user-service
|
||||||
|
|
||||||
|
echo "\n查看日志命令: docker compose -f $COMPOSE_FILE logs -f"
|
||||||
|
echo "停止服务命令: docker compose -f $COMPOSE_FILE down"
|
||||||
|
echo "\n本地业务服务启动完成!"
|
||||||
|
exit 0
|
||||||
41
run-remote.sh
Normal file
41
run-remote.sh
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 远程服务器启动脚本:部署Consul和Traefik
|
||||||
|
# 配置参数
|
||||||
|
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
|
||||||
|
VERSION="latest"
|
||||||
|
COMPOSE_FILE="docker-compose.remote.yml"
|
||||||
|
USERNAME="2324802641zhengniannian@gmail.com"
|
||||||
|
|
||||||
|
# 检查Docker和Docker Compose
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "错误: Docker未安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! docker compose version &> /dev/null; then
|
||||||
|
echo "错误: Docker Compose未安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 登录Docker仓库
|
||||||
|
echo "登录阿里云Docker仓库..."
|
||||||
|
docker login --username=$USERNAME $REGISTRY
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误: 仓库登录失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动远程服务(Consul和Traefik)
|
||||||
|
echo "正在启动远程服务..."
|
||||||
|
VERSION=$VERSION docker compose -f $COMPOSE_FILE up -d consul traefik
|
||||||
|
|
||||||
|
# 显示状态
|
||||||
|
echo "\n远程服务状态:"
|
||||||
|
docker compose -f $COMPOSE_FILE ps consul traefik
|
||||||
|
|
||||||
|
echo "\n查看日志命令: docker compose -f $COMPOSE_FILE logs -f consul traefik"
|
||||||
|
echo "停止服务命令: docker compose -f $COMPOSE_FILE down consul traefik"
|
||||||
|
echo "\n远程服务启动完成!"
|
||||||
|
exit 0
|
||||||
@ -1,42 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# 配置参数
|
|
||||||
REGISTRY="crpi-amr0dt5e5pywqwaf.cn-hangzhou.personal.cr.aliyuncs.com"
|
|
||||||
VERSION="latest"
|
|
||||||
COMPOSE_FILE="docker-compose.aliyun.yml"
|
|
||||||
USERNAME="2324802641zhengniannian@gmail.com"
|
|
||||||
|
|
||||||
# 检查Docker是否安装
|
|
||||||
if ! command -v docker &> /dev/null; then
|
|
||||||
echo "错误: Docker未安装,请先安装Docker"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 检查Docker Compose是否安装(使用docker compose子命令)
|
|
||||||
if ! docker compose version &> /dev/null; then
|
|
||||||
echo "错误: Docker Compose未安装,请先安装Docker Compose"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 登录阿里云Docker仓库
|
|
||||||
echo "登录阿里云Docker仓库..."
|
|
||||||
docker login --username=$USERNAME $REGISTRY
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "错误: 仓库登录失败,请检查用户名和密码"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 启动服务
|
|
||||||
echo "正在启动服务 (版本: $VERSION)..."
|
|
||||||
VERSION=$VERSION docker compose -f $COMPOSE_FILE up -d
|
|
||||||
|
|
||||||
# 检查服务状态
|
|
||||||
echo "\n服务状态:"
|
|
||||||
docker compose -f $COMPOSE_FILE ps
|
|
||||||
|
|
||||||
# 显示日志命令提示
|
|
||||||
echo "\n查看服务日志命令: docker compose -f $COMPOSE_FILE logs -f"
|
|
||||||
echo "停止服务命令: docker compose -f $COMPOSE_FILE down"
|
|
||||||
echo "\n服务启动完成!"
|
|
||||||
exit 0
|
|
||||||
Loading…
Reference in New Issue
Block a user