背景:
生成环境接入配置中心。
结构:
生产和测试环境单独的配置中心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库 |
1 | 1 |
注意:portal server/DB和admin service/config service 都可以同一台主机。DB要有冗余高可用或主备。
部署:
1.创建数据库
1.1创建ConfigDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 1#从官网clone程序
2git clone git@github.com:ctripcorp/apollo.git
3cd ~/apollo/scripts/docker-quick-start
4#若portalDB和ConfigDB共用同一个MySQL实例,下面rm不需要操作
5
6[glomax@test-nginx001 docker-quick-start]$ ll sql
7total 44
8-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
9-rw-rw-r-- 1 glomax glomax 17270 Sep 17 15:48 apolloportaldb.sql
10
11rm ./sql/apolloportaldb.sql
12
13[glomax@test-nginx001 docker-quick-start]$ ll sql
14total 44
15-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
16
17[glomax@test-nginx001 docker-quick-start]$ docker-compose up -d apollo-dbdata apollo-db
18
19
20
启动后apollo-db会创建好Configdb,初始用户root,密码空。
1.2 创建PortalDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 1#从官网clone程序
2git clone git@github.com:ctripcorp/apollo.git
3cd ~/apollo/scripts/docker-quick-start
4#若portalDB和ConfigDB共用同一个MySQL实例,下面rm不需要操作
5
6[glomax@test-nginx001 docker-quick-start]$ ll sql
7total 44
8-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloconfigdb.sql
9-rw-rw-r-- 1 glomax glomax 17270 Sep 17 15:48 apolloportaldb.sql
10
11rm ./sql/apolloconfigdb.sql
12
13[glomax@test-nginx001 docker-quick-start]$ ll sql
14total 44
15-rw-rw-r-- 1 glomax glomax 21509 Sep 17 15:48 apolloportaldb.sql
16
17[glomax@test-nginx001 docker-quick-start]$ docker-compose up -d apollo-dbdata apollo-db
18
19
20
启动后apollo-db会创建好Portaldb,初始用户root,密码空。
2. 修改数据库配置
1 | 1` |
ApolloConfigDB
1 | 1` |
.
1 | 1` |
ServerConfig
1 | 1` |
的eureka.service.url:
1
2
3
4
5
6
7
8
9
10 1mysql> source /data/software/apollo-1.3.0/scripts/db/migration/configdb/V1.0.0__initialization.sql
2
3#验证
4mysql> select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDB`.`ServerConfig` limit 1;
5+----+--------------------+-------------------------------+------------------------------------------------------+
6| Id | Key | Value | Comment |
7+----+--------------------+-------------------------------+------------------------------------------------------+
8| 1 | eureka.service.url | http://配置服务器1:8080/eureka/,http://配置服务器2:8080/eureka/ | Eureka服务Url,多个service以英文逗号分隔 |
9+----+--------------------+-------------------------------+------------------------------------------------------+
10
1 | 1` |
ApolloPortalDB
1 | 1` |
.
1 | 1` |
ServerConfig
1 | 1` |
的apollo.portal.envs为pro:
1
2
3
4
5
6
7
8 1mysql> select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
2+----+--------------------+-------+--------------------------+
3| Id | Key | Value | Comment |
4+----+--------------------+-------+--------------------------+
5| 1 | apollo.portal.envs | pro | 可支持的环境列表 |
6+----+--------------------+-------+--------------------------+
7
8
3.获取安装包,部署服务端
顺序:Config service -> Admin service -> Portal server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 1#配置服务器1和配置服务器2分别执行下述操作
2#clone apollo工程
3git clone git@github.com:ctripcorp/apollo.git
4
5#制作apollo-config镜像
6cd ~/apollo/apollo-configservice/src/main/docker/
7wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-configservice-1.4.0-github.zip
8#修改Dockerfile中的VERSION为1.4.0
9vi Dockerfile
10docker build -t apollo-configservice:1.4.0 .
11【注意】若后面docker-compose.yml中不设置db/username/passwd,在此处创建镜像前修改配置文件
12unzip apollo-configservice-1.4.0-github.zip
13 vi apollo-configservice.conf
14vi config/application-github.properties
15zip -r apollo-configservice-1.4.0-github.zip apollo-configservice-1.4.0.jar apollo-configservice-1.4.0-sources.jar apollo-configservice.conf config scripts
16docker build -t apollo-configservice:1.4.0 .
17
18#制作apollo-admin镜像
19cd ~/apollo/apollo-adminservice/src/main/docker/
20wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-adminservice-1.4.0-github.zip
21#修改Dockerfile中的VERSION为1.4.0
22vi Dockerfile
23docker build -t apollo-adminservice:1.4.0 .
24【注意】若后面docker-compose.yml中不设置db/username/passwd,在此处创建镜像前修改配置文件
25 unzip apollo-adminservice-1.4.0-github.zip
26 vi config/application-github.properties
27zip -r apollo-adminservice-1.4.0-github.zip apollo-adminservice-1.4.0.jar apollo-adminservice-1.4.0-sources.jar apollo-adminservice.conf config scripts
28docker build -t apollo-adminservice:1.4.0 .
29
30#制作dokcer-compose.yml
31glomax@test-web-003:/data/glomax/apollo$ cat docker-compose.yml
32version: "2"
33
34services:
35 apollo-configservice: ##容器服务名
36 container_name: apollo-configservice ##容器名
37 image: apollo-configservice:1.4.0 ##镜像名
38 network_mode: host ##网络设置
39 ports:
40 - "8080:8080"
41 volumes:
42 - "/data/logs/apollo/100003171:/opt/logs/100003171" ##将/opt/logs/100003171目录挂载到宿主机的/docker/apollo/logs/100003171方便在宿主机上查看日志
43 environment:
44 - spring_datasource_url=jdbc:mysql://ConfigDB:13306/ApolloConfigDB?characterEncoding=utf8
45 - spring_datasource_username=root
46 - spring_datasource_password=
47
48 apollo-adminservice:
49 container_name: apollo-adminservice
50 image: apollo-adminservice:1.4.0
51 network_mode: host
52 #net: "host"
53 ports:
54 - "8090:8090"
55 depends_on:
56 - apollo-configservice
57 volumes:
58 - "/data/logs/apollo/100003172:/opt/logs/100003172"
59 environment:
60 - spring_datasource_url=jdbc:mysql://ConfigDB:13306/ApolloConfigDB?characterEncoding=utf8
61 - spring_datasource_username=root
62 - spring_datasource_password=
63
64
65#docker-compose启动config service和admin service
66docker-compose up -d
67
部署portal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 1#Portal server1和Pportal Server2分别执行下述操作
2#clone apollo工程
3git clone git@github.com:ctripcorp/apollo.git
4
5#制作apollo-config镜像
6cd ~/apollo/apollo-portal/src/main/docker/
7wget https://github.com/ctripcorp/apollo/releases/download/v1.4.0/apollo-portal-1.4.0-github.zip
8#修改Dockerfile中的VERSION为1.4.0
9vi Dockerfile
10docker build -t apollo-portal:1.4.0 .
11【注意】若后面docker-compose.yml中不设置db/username/passwd,在此处创建镜像前修改配置文件
12 unzip apollo-portal-1.4.0-github.zip
13vi apollo-portal.conf
14 vi config/apollo-env.properties
15vi config/application-github.properties
16zip -r apollo-portal-1.4.0-github.zip apollo-portal-1.4.0.jar apollo-portal-1.4.0-sources.jar config apollo-portal.conf scripts
17docker build -t apollo-portal:1.4.0 .
18
19
20#制作docker-compose.yml
21glomax@test-web-003:/data/glomax/apollo$ cat docker-compose.yml
22version: "2"
23
24services:
25 apollo-portal:
26 container_name: apollo-portal
27 image: apollo-portal:1.4.0
28 network_mode: host
29 #net: "host"
30 ports:
31 - "8070:8070"
32 depends_on:
33 - apollo-adminservice
34 volumes:
35 - "/data/logs/apollo/100003173:/opt/logs/100003173"
36 environment:
37 - spring_datasource_url=jdbc:mysql://PortalDB:13306/ApolloPortalDB?characterEncoding=utf8
38 - spring_datasource_username=root
39 - spring_datasource_password=
40
41#docker-compose启动portal server
42docker-compose up -d
43
44#进入容器中修改pro_meta信息
45docker-compose exec apollo-portal bash
46vi apollo-portal/config/apollo-env.properties
47pro.meta=http://配置服务器1:8080,http://配置服务器2:8080
48
49#restart容器
50docker-compose restart apollo-portal
51
- 登陆portal测试
http://meta-server:8080 #查看eureka注册信息
http://portalIP:8070 #初始用户apollo:admin
4.系统参数查看环境信息
参考: