dev,test,uat环境apollo部署
#
#
1.1 部署架构图#
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 使用工具连接数据库
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 表内容
标红处为修改前的内容
标红处为修改后的内容
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-configservice2.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-adminservice2.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-configservice2.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-adminservice2.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-configservice2.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-adminservice2.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-portal2.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 注册验证#
4.2 portal web界面验证#
2 查看系统参数信息
5 发布验证#
dev、test、uat 环境发布的配置相互不影响。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示