小言_互联网的博客

docker部署apollo配置中心

286人阅读  评论(0)

背景:

生成环境接入配置中心。

结构:

生产和测试环境单独的配置中心portal。

其中Apollo Client表示应用客户端。

此处大致架构图:

其中Config Service启动,默认开启Meta server 服务。

一个环境一套Config service/Meta server/Admin service.ConfigDB。

apollo-configserviceapollo-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://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97

https://blog.csdn.net/wangpei1949/article/details/88084109


转载:https://blog.csdn.net/mimi_csdn/article/details/101024720
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场