背景:
生成环境接入配置中心。
结构:
生产和测试环境单独的配置中心portal。
其中Apollo Client表示应用客户端。
此处大致架构图:
其中Config Service启动,默认开启Meta server 服务。
一个环境一套Config service/Meta server/Admin service.ConfigDB。
apollo-configservice
和apollo-adminservice
需要把自己的IP和端口注册到Meta Server(apollo-configservice本身)。
Apollo客户端和Portal会从Meta Server获取服务的地址(IP+端口),然后通过服务地址直接访问。
节点规划:
节点 | 角色 |
配置服务器1 | apollo-adminservice进程、apollo-configservice进程 |
配置服务器2 | apollo-adminservice进程、apollo-configservice进程 |
configDB | ApolloConfigDB库 |
Portal Server1 | apollo-portal进程 |
Portal server2 | apollo-portal进程 |
PortalDB | ApolloPortalDB库 |
注意:portal server/DB和admin service/config service 都可以同一台主机。DB要有冗余高可用或主备。
部署:
1.创建数据库
1.1创建ConfigDB
#从官网clone程序
git clone git@github.com:ctripcorp/apollo.git
cd ~/apollo/scripts/docker-quick-start
#若portalDB和ConfigDB共用同一个MySQL实例,下面rm不需要操作
[glomax@test-nginx001 docker-quick-start]$ ll sql
total 44
-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
-rw-rw-r-- 1 glomax glomax 17270 Sep 17 15:48 apolloportaldb.sql
rm ./sql/apolloportaldb.sql
[glomax@test-nginx001 docker-quick-start]$ ll sql
total 44
-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
[glomax@test-nginx001 docker-quick-start]$ docker-compose up -d apollo-dbdata apollo-db
启动后apollo-db会创建好Configdb,初始用户root,密码空。
1.2 创建PortalDB
#从官网clone程序
git clone git@github.com:ctripcorp/apollo.git
cd ~/apollo/scripts/docker-quick-start
#若portalDB和ConfigDB共用同一个MySQL实例,下面rm不需要操作
[glomax@test-nginx001 docker-quick-start]$ ll sql
total 44
-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
-rw-rw-r-- 1 glomax glomax 17270 Sep 17 15:48 apolloportaldb.sql
rm ./sql/apolloconfigdb.sql
[glomax@test-nginx001 docker-quick-start]$ ll sql
total 44
-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloportaldb.sql
[glomax@test-nginx001 docker-quick-start]$ docker-compose up -d apollo-dbdata apollo-db
启动后apollo-db会创建好Portaldb,初始用户root,密码空。
2. 修改数据库配置
`ApolloConfigDB`.`ServerConfig`的eureka.service.url:
mysql> source /data/software/apollo-1.3.0/scripts/db/migration/configdb/V1.0.0__initialization.sql
#验证
mysql> select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
+----+--------------------+-------------------------------+------------------------------------------------------+
| Id | Key | Value | Comment |
+----+--------------------+-------------------------------+------------------------------------------------------+
| 1 | eureka.service.url | http://配置服务器1:8080/eureka/,http://配置服务器2:8080/eureka/ | Eureka服务Url,多个service以英文逗号分隔 |
+----+--------------------+-------------------------------+------------------------------------------------------+
`ApolloPortalDB`.`ServerConfig` 的apollo.portal.envs为pro:
mysql> select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
+----+--------------------+-------+--------------------------+
| Id | Key | Value | Comment |
+----+--------------------+-------+--------------------------+
| 1 | apollo.portal.envs | pro | 可支持的环境列表 |
+----+--------------------+-------+--------------------------+
3.获取安装包,部署服务端
顺序:Config service -> Admin service -> Portal server
#配置服务器1和配置服务器2分别执行下述操作
#clone apollo工程
git clone git@github.com:ctripcorp/apollo.git
#制作apollo-config镜像
cd ~/apollo/apollo-configservice/src/main/docker/
wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-configservice-1.4.0-github.zip
#修改Dockerfile中的VERSION为1.4.0
vi Dockerfile
docker build -t apollo-configservice:1.4.0 .
#制作apollo-admin镜像
cd ~/apollo/apollo-adminservice/src/main/docker/
wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-adminservice-1.4.0-github.zip
#修改Dockerfile中的VERSION为1.4.0
vi Dockerfile
docker build -t apollo-adminservice:1.4.0 .
#制作dokcer-compose.yml
glomax@test-web-003:/data/glomax/apollo$ cat docker-compose.yml
version: "2"
services:
apollo-configservice: ##容器服务名
container_name: apollo-configservice ##容器名
image: apollo-configservice:1.4.0 ##镜像名
network_mode: host ##网络设置
ports:
- "8080:8080"
volumes:
- "/data/logs/apollo/100003171:/opt/logs/100003171" ##将/opt/logs/100003171目录挂载到宿主机的/docker/apollo/logs/100003171方便在宿主机上查看日志
environment:
- spring_datasource_url=jdbc:mysql://ConfigDB:13306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=
apollo-adminservice:
container_name: apollo-adminservice
image: apollo-adminservice:1.4.0
network_mode: host
#net: "host"
ports:
- "8090:8090"
depends_on:
- apollo-configservice
volumes:
- "/data/logs/apollo/100003172:/opt/logs/100003172"
environment:
- spring_datasource_url=jdbc:mysql://ConfigDB:13306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=
#docker-compose启动config service和admin service
docker-compose up -d
部署portal:
#Portal server1和Pportal Server2分别执行下述操作
#clone apollo工程
git clone git@github.com:ctripcorp/apollo.git
#制作apollo-config镜像
cd ~/apollo/apollo-portal/src/main/docker/
wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-portal-1.4.0-github.zip
#修改Dockerfile中的VERSION为1.4.0
vi Dockerfile
docker build -t apollo-portal:1.4.0 .
#制作docker-compose.yml
glomax@test-web-003:/data/glomax/apollo$ cat docker-compose.yml
version: "2"
services:
apollo-portal:
container_name: apollo-portal
image: apollo-portal:1.4.0
network_mode: host
#net: "host"
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
volumes:
- "/data/logs/apollo/100003173:/opt/logs/100003173"
environment:
- spring_datasource_url=jdbc:mysql://PortalDB:13306/ApolloPortalDB?characterEncoding=utf8
- spring_datasource_username=root
- spring_datasource_password=
#docker-compose启动portal server
docker-compose up -d
#进入容器中修改pro_meta信息
docker-compose exec apollo-portal bash
vi apollo-portal/config/apollo-env.properties
pro.meta=http://配置服务器1:8080,http://配置服务器2:8080
#restart容器
docker-compose restart apollo-portal
3. 登陆portal测试
http://meta-server:8080 #查看eureka注册信息
http://portalIP:8070 #初始用户apollo:admin
4.系统参数查看环境信息
参考:
https://blog.csdn.net/wangpei1949/article/details/88084109
转载:https://blog.csdn.net/mimi_csdn/article/details/101024720