dev,test,uat环境apollo部署

apollo单机多环境部署#

1 环境说明#

1.1 部署架构图#

image-20250109180740510

1.2 服务器配置说明#

主机名 OS IP cpu/内存/磁盘 部署服务 备注
db CentOS7.9 172.16.1.20 4c/8G/100GiB mysql:5.7.44、docker
apollo CentOS7.9 172.16.1.21 4c/8G/100GiB apollo-portal:2.2.0 apollo-adminservice:2.2.0 apollo-configservice:2.2.0 docker、docker-compose dev、test、uat 环境、web管理

注: 本文省略 docker、docker-compose 的安装。

环境 服务名 端口号(外部:内部)
dev apollo-configservice / apollo-adminservice 8080:8080 / 8090:8090
test apollo-configservice / apollo-adminservice 8081:8081 / 8091:8091
uat apollo-configservice / apollo-adminservice 8082:8082 / 8092:8092
web管理 apollo-portal 8070:8070

注: (1) 默认 apollo-configservice / apollo-adminservice / apollo-portal 端口是 8080/8090/8070 。 (2) apollo非生产部署在一台机器上,共用一个portal;configService、adminService 每个环境一个,每个环境独立的数据库。

2 数据库配置#

在 172.16.1.20 节点上进行操作

  • 版本要求:5.6.5+

2.1 部署mysql#

[root@db ~]# docker run -d --name db \
-p 3306:3306 \
-v /mysql/mysqldata:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=LiuChang@=123456 \
mysql:5.7.44-oraclelinux7 \
--character-set-server=utf8mb4

2.2 创建数据库#

[root@db ~]# yum install mysql -y
[root@db ~]# mysql -uroot -h 127.0.0.1 -p'LiuChang@=123456'
MySQL [(none)]>
create database db_apollo_config_dev default character set=utf8 default collate=utf8_general_ci;
create database db_apollo_config_test default character set=utf8 default collate=utf8_general_ci;
create database db_apollo_config_uat default character set=utf8 default collate=utf8_general_ci;
create database db_apollo_portal     default character set=utf8 default collate=utf8_general_ci;

CREATE USER 'apollo'@'%' IDENTIFIED BY 'qFN73dTo3Wus4#uV';

grant all privileges on db_apollo_config_dev.* to apollo@"%";
grant all privileges on db_apollo_config_test.* to apollo@"%";
grant all privileges on db_apollo_config_uat.* to apollo@"%";
grant all privileges on db_apollo_portal.*     to apollo@"%";

flush privileges;

2.3 初始化数据库#

1 apolloconfigdb.sql 表下载
https://github.com/apolloconfig/apollo/blob/master/scripts/sql/profiles/mysql-default/apolloconfigdb.sql
以 raw file 方式进行下载。

2 apolloportaldb.sql 表下载
https://github.com/apolloconfig/apollo/blob/master/scripts/sql/profiles/mysql-default/apolloportaldb.sql
以 raw file 方式进行下载。

3 表所在目录
[root@db ~]# ls -l apollo_sql/
total 56
-rw-r--r-- 1 root root 28995 Jan  6 11:48 apolloconfigdb.sql
-rw-r--r-- 1 root root 24266 Jan  6 11:48 apolloportaldb.sql

4 导入表
[root@db ~]# mysql -h 127.0.0.1 -uapollo -p'qFN73dTo3Wus4#uV'
MySQL [(none)]> show databases;
+-----------------------+
| Database             |
+-----------------------+
| information_schema   |
| db_apollo_config_dev |
| db_apollo_config_test |
| db_apollo_config_uat |
| db_apollo_portal     |
+-----------------------+
5 rows in set (0.00 sec)

> use db_apollo_config_dev;
> source /root/apollo_sql/apolloconfigdb.sql
> use db_apollo_config_test;
> source /root/apollo_sql/apolloconfigdb.sql
> use db_apollo_config_uat;
> source /root/apollo_sql/apolloconfigdb.sql
> use db_apollo_portal;
> source /root/apollo_sql/apolloportaldb.sql

2.4 修改数据库配置#

1 使用工具连接数据库

image-20250109184730267

2 修改 config ServerConfig 表内容

(1) 修改 db_apollo_config_dev.ServerConfig  表 eureka.service.url
"http://localhost:8080/eureka/" 修改为 "http://172.16.1.21:8080/eureka/"

(2) 修改 db_apollo_config_test.ServerConfig 表 eureka.service.url
"http://localhost:8080/eureka/" 修改为 "http://172.16.1.21:8081/eureka/"

(3) 修改 db_apollo_config_uat.ServerConfig 表 eureka.service.url
"http://localhost:8080/eureka/" 修改为 "http://172.16.1.21:8082/eureka/"

3 修改 db_apollo_portal.ServerConfig 表内容

标红处为修改前的内容

image-20250110102418700

标红处为修改后的内容

image-20250110103210657

3 配置文件#

在 172.16.1.21 节点上进行操作

[root@apollo ~]# ls -l /opt/ total 0 drwxr-xr-x 9 root root 200 Jan 10 16:44 apollo_compose

3.1 .env 文件#

[root@apollo ~]# cat /opt/apollo_compose/.env

# .env文件和compose文件放在同一目录
SPRING_DATASOURCE_HOST_PORT=172.16.1.20:3306
SPRING_DATASOURCE_USERNAME=apollo
SPRING_DATASOURCE_PASSWORD=qFN73dTo3Wus4#uV
SPRING_DATASOURCE_CONFIG_DBNAME_DEV=db_apollo_config_dev
SPRING_DATASOURCE_CONFIG_DBNAME_TEST=db_apollo_config_test
SPRING_DATASOURCE_CONFIG_DBNAME_UAT=db_apollo_config_uat
SPRING_DATASOURCE_PORTAL_DBNAME=db_apollo_portal
APOLLO_PORTAL_ENVS=dev,test,uat
DEV_META=http://172.16.1.21:8080
TEST_META=http://172.16.1.21:8081
UAT_META=http://172.16.1.21:8082
MY_HOST=172.16.1.21

参数说明:

# mysql 的 IP 地址及端口号
SPRING_DATASOURCE_HOST_PORT=172.16.1.20:3306
# 连接 mysql 的用户名
SPRING_DATASOURCE_USERNAME=apollo
# 连接 mysql 的密码
SPRING_DATASOURCE_PASSWORD=qFN73dTo3Wus4#uV
# dev 环境 config 数据库
SPRING_DATASOURCE_CONFIG_DBNAME_DEV=db_apollo_config_dev
# test 环境 config 数据库
SPRING_DATASOURCE_CONFIG_DBNAME_TEST=db_apollo_config_test
# uat 环境 config 数据库
SPRING_DATASOURCE_CONFIG_DBNAME_UAT=db_apollo_config_uat
# portal 数据库
SPRING_DATASOURCE_PORTAL_DBNAME=db_apollo_portal
# portal 连接的环境
APOLLO_PORTAL_ENVS=dev,test,uat
# portal 连接各个环境的 meta 地址
DEV_META=http://172.16.1.21:8080
TEST_META=http://172.16.1.21:8081
UAT_META=http://172.16.1.21:8082
# 当前主机的 IP 地址
MY_HOST=172.16.1.21

3.2 docker-compose.yml 文件#

[root@apollo ~]# cat /opt/apollo_compose/docker-compose.yml

# docker-compose.yml

services:

# apollo dev 环境配置
apolloConfigservice-dev:
   container_name: apolloConfigservice-dev
   image: apolloconfig/apollo-configservice:2.2.0
   volumes:
     - ./config_dev_logs:/opt/logs
   ports:
     - "8080:8080"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_DEV}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8080
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
   restart: always

apolloAdminservice-dev:
   depends_on:
     - apolloConfigservice-dev
   container_name: apolloAdminservice-dev
   image: apolloconfig/apollo-adminservice:2.2.0
   volumes:
     - ./admin_dev_logs:/opt/logs
   ports:
     - "8090:8090"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_DEV}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8090
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
   restart: always

# apollo test 环境配置
apolloConfigservice-test:
   container_name: apolloConfigservice-test
   image: apolloconfig/apollo-configservice:2.2.0
   volumes:
     - ./config_test_logs:/opt/logs
   ports:
     - "8081:8081"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_TEST}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8081
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
     - SERVER_PORT=8081
   restart: always

apolloAdminservice-test:
   depends_on:
     - apolloConfigservice-test
   container_name: apolloAdminservice-test
   image: apolloconfig/apollo-adminservice:2.2.0
   volumes:
     - ./admin_test_logs:/opt/logs
   ports:
     - "8091:8091"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_TEST}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8091
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
     - SERVER_PORT=8091
   restart: always

# apollo uat 环境配置
apolloConfigservice-uat:
   container_name: apolloConfigservice-uat
   image: apolloconfig/apollo-configservice:2.2.0
   volumes:
     - ./config_uat_logs:/opt/logs
   ports:
     - "8082:8082"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_UAT}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8082
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
     - SERVER_PORT=8082
   restart: always

apolloAdminservice-uat:
   depends_on:
     - apolloConfigservice-uat
   container_name: apolloAdminservice-uat
   image: apolloconfig/apollo-adminservice:2.2.0
   volumes:
     - ./admin_uat_logs:/opt/logs
   ports:
     - "8092:8092"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_CONFIG_DBNAME_UAT}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - EUREKA_INSTANCE_HOME_PAGE_URL=http://${MY_HOST}:8092
     - EUREKA_INSTANCE_IP_ADDRESS=${MY_HOST}
     - SERVER_PORT=8092
   restart: always

# web管理配置
apolloPortal:
   depends_on:
     - apolloAdminservice-dev
     - apolloAdminservice-test
     - apolloAdminservice-uat
   container_name: apolloPortal
   image: apolloconfig/apollo-portal:2.2.0
   volumes:
     - ./portal_logs:/opt/logs
   ports:
     - "8070:8070"
   environment:
     - SPRING_DATASOURCE_URL=jdbc:mysql://${SPRING_DATASOURCE_HOST_PORT}/${SPRING_DATASOURCE_PORTAL_DBNAME}?characterEncoding=utf8
     - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
     - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
     - APOLLO_PORTAL_ENVS=${APOLLO_PORTAL_ENVS}
     - DEV_META=${DEV_META}
     - TEST_META=${TEST_META}
     - UAT_META=${UAT_META}
   restart: always

参数说明:

参数说明:
(1) EUREKA_INSTANCE_HOME_PAGE_URL
1) 这个参数指定的是实例的主页 URL。
2) 它通常用来描述服务实例的主页,通常是该服务提供的 Web 应用或监控页面的 URL。
3) 比如,假设你的服务有一个健康检查或者一个 UI 界面,该 URL 会指向该页面,方便其他系统管理员或开发人员查看服务的状态。

(2) EUREKA_INSTANCE_IP_ADDRESS
1) 这个参数指定的是该服务实例的 IP 地址。
2) 它通常用于告诉 Eureka 服务实例的实际网络地址,这对于服务发现和访问该实例是必要的,尤其是在容器化或云环境中,Eureka 可能需要
知道实例的具体 IP 地址来进行注册和发现。
3) 在某些情况下,服务可能绑定在多个网络接口上,所以明确指定实例的 IP 地址可以确保 Eureka 正确识别。

(3) SERVER_PORT
1) 如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。另外apollo-configservice同时承担meta server职责,如果
要修改端口,注意要同时ApolloConfigDB.ServerConfig表中的eureka.service.url配置项以及apollo-portal和apollo-client中的使
用到的meta server信息。
2) 用于设置注册到 Eureka 的实例的端口,如果不配置使用默认端口 config 服务是 8080,admin 服务是 8090

4 访问验证#

4.1 eureka 注册验证#

1 访问 http://172.16.1.21:8080

image-20250110182936259

2 访问 http://172.16.1.21:8081

image-20250110183243682

3 访问 http://172.16.1.21:8082

image-20250110183437915

4.2 portal web界面验证#

1 访问 http://172.16.1.21:8070

image-20250110185140075

2 查看系统参数信息

image-20250112200304829

5 发布验证#

dev、test、uat 环境发布的配置相互不影响。

5.1 dev 环境发布#

image-20250112202034700

5.2 test 环境发布#

image-20250112202109289

5.3 uat 环境发布#

image-20250112202425747


posted @   云起时。  阅读(24)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示
主题色彩