apollo学习2:docker集群部署

下图是官方给的Apollo架构:

 

 

 整体分为四大模块:

1:configService

  1):服务于Client进行配置获取

2:adminService

  1):服务于Portal进行配置管理,Portal通过调用AdminService进行配置管理和发布。

3:client

 1):用户获取到配置数据,和ConfigService保持长连接

4:portal

  1):配置管理页面:存放用户权限、项目和配置的元数据信息

 

所以在部署的时候, 我们需要部署三个服务,configService,adminService,portal

先初始化数据库:

导入官网数据库表初始化:
1):在serviceconfig表添加多环境:apollo.portal.envs,如dev,test,prod

2):  配置eureka集群地址:eureka.service.url(不指定则注册到config_service服务的8080端口)
3):users表初始化一条用户名和密码,Authorities初始化,使用官网给的,apollo:admin登录
4):serviceconfig添加superAdmin,超级管理员指定apollo,登录以后即可修改密码

其他配置参考官网可选

部署配置:

configService配置如下:

1):指定数据库配置

2):指定端口8091,默认8080(和默认eureka一样)

3):EUREKA_INSTANCE指定eureka集群域名:默认本地eureka,即 localhost:8080

export name=apollo_config
#拉取apolloconfig docker镜像,version不指定默认是最新版本
docker pull apolloconfig/apollo-configservice:${version}

DOCKER_ID=`docker ps -a|grep ${name}|awk -F " " '{print $1}'`

#查找是否有正在运行的旧容器,如果有,将其停止并删除
if [ "$DOCKER_ID" = "" ];then
echo "Docker ${name} no found"
else
echo "你的Docker镜像 ${name}的ID为:$DOCKER_ID即将被停止..."
docker stop $DOCKER_ID
docker rm $DOCKER_ID
fi

docker run -d \
--network host \
-e SPRING_DATASOURCE_URL='jdbc:mysql://db' \
-e SPRING_DATASOURCE_USERNAME='xxx' \
-e SPRING_DATASOURCE_PASSWORD='xxx' \

-e EUREKA_INSTANCE_HOME_PAGE_URL='https://xxx' \

-e EUREKA_INSTANCE_PREFER_IP_ADDRESS='false' \

-p 8091:8080 \
--name apollo_config apolloconfig/apollo-configservice

 

adminService配置如下:

1):指定数据库配置(和configService公用同一套数据库)

2):默认端口即可

3):EUREKA_INSTANCE指定eureka集群域名:默认本地eureka,即 localhost:8080

export name=apollo_admin

docker pull apolloconfig/apollo-adminservice

DOCKER_ID=`docker ps -a|grep ${name}|awk -F " " '{print $1}'`

#查找是否有正在运行的旧容器,如果有,将其停止并删除
if [ "$DOCKER_ID" = "" ];then
  echo "Docker ${name} no found"
else
  echo "你的Docker镜像 ${name}的ID为:$DOCKER_ID即将被停止..."
  docker stop $DOCKER_ID
  docker rm $DOCKER_ID
fi

docker run  -d \
--network host \
-e SPRING_DATASOURCE_URL='jdbc:mysql://db' \
-e SPRING_DATASOURCE_USERNAME='xxx' \
-e SPRING_DATASOURCE_PASSWORD='xxx' \
--name apollo_admin apolloconfig/apollo-adminservice

以上,configService和adminService将被部署在同一集群,注册到同一eureka集群

 

protal配置如下:

1):SPRING_DATESOURCE指定变量数据库配置

2):DEV_META指定环境dev和meta地址,meta地址是apollo-configservice集群地址,默认暴露localhost:8080,调取configService接口获取到adminService服务,然后进行操作

如需部署多环境,指定 TEST_META即添加test环境

export name=apollo_portal
#拉取apolloconfig docker镜像,version不指定默认是最新版本
docker pull apolloconfig/apollo-protal:${version}

DOCKER_ID=`docker ps -a|grep ${name}|awk -F " " '{print $1}'`

#查找是否有正在运行的旧容器,如果有,将其停止并删除
if [ "$DOCKER_ID" = "" ];then
  echo "Docker ${name} no found"
else
  echo "你的Docker镜像 ${name}的ID为:$DOCKER_ID即将被停止..."
  docker stop $DOCKER_ID
  docker rm $DOCKER_ID
fi

docker run  -d \
--network host \
-e SPRING_DATASOURCE_URL='jdbc:mysql://ip:3306/db' \
-e SPRING_DATASOURCE_USERNAME='xxx' \
-e SPRING_DATASOURCE_PASSWORD='xxx' \
-e DEV_META='http://localhost:8080' \
--name apollo_portal apolloconfig/apollo-portal

多套测试环境,portal只需要部署一个

posted @ 2022-04-02 16:23  20191018  阅读(125)  评论(0编辑  收藏  举报