携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
环境准备:centos ==> 7+,mysql ==> 5.7+,java ==> 1.8+
环境搭建:
1 2 3 4 | yum -y install wget //下载安装包需要的命令 yum -y install java //java环境 yum -y install lrzsz //上传下载功能 yum -y install unzip zip //压缩和解压zip所需的组件 |
一、MySQL安装:
安装步骤
1、检测下系统有没有自带的mysql:
1 | yum list installed | grep mysql |
如果已经有的话执行命令卸载已经安装的mysql
1 | yum -y remove mysql-libs.x86_64 |
2、先到mysql官网下载5.7的安装包,download-yum选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package , 该文件只是将mysql添加到yum库中,现在从官网下载默认的安装版本是8.0,需要禁用到8.0选择5.7
1 | wget http: //repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm |
如果没有wget命令可以通过如下命令安装
1 | yum install wget -y |
3、添加选择yum源:
1 | yum localinstall mysql57-community-release-el7-7.noarch.rpm |
#查看可用和默认的yum源,这里默认的就是5.7
1 | yum repolist all | grep mysql |
4、安装mysql:
1 | yum install mysql-community-server |
5、启动mysql:
#启动
1 | service mysqld start |
#
查看安装版本
1 | mysqladmin --version |
#
查看状态
1 | service mysqld status |
6、查看默认密码
1 | grep -n password / var /log/mysqld.log |
7、修改初始密码,允许远程访问
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 | #本地连接数据库,输入刚刚获取的密码 mysql -u root -p #修改默认密码,默认密码后续操作会报错 SET PASSWORD = PASSWORD( 'Mysql@123456' ); #选择mysql库 use mysql; #更新权限 update user set Host= '%' where User= 'root' ; 生效: FLUSH PRIVILEGES; vim etc/my.cnf 添加 character-set_server=utf8 否则会有乱码 8、配置防火墙打开3306端口 #查看3306端口是否开启 firewall-cmd --permanent --query-port=3306/tcp #允许外部访问3306端口(可设置固定IP或IP段访问某一特定端口) firewall-cmd --zone= public --add-port=3306/tcp --permanent #删除3306端口 firewall-cmd --zone= public --remove-port=3306/tcp --permanent #配置生效 systemctl restart firewalld.service #查看防火墙状态 firewall-cmd --state #启动firewall systemctl start firewalld.service #置开机自启: systemctl enable firewalld.service # 重启防火墙: systemctl restart firewalld.service 查看防火墙设置开机自启是否成功: systemctl is -enabled firewalld.service;echo $? #查看已开启的firewall端口: netstat -ntlp 或:firewall-cmd --list-ports |
下载程序包地址:
1 2 3 | 源代码地址:https://github.com/ctripcorp/apollo/ 已编译完成程序包:https://github.com/ctripcorp/apollo/releases config数据库和portal数据库SQL地址:https://github.com/ctripcorp/apollo/tree/master/scripts/sql |
本次使用已编译完成的程序包
1 2 3 | wget https: //github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-adminservice-1.9.0-github.zip wget https: //github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-configservice-1.9.0-github.zip wget https: //github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-portal-1.9.0-github.zip |
若下载速度较慢,可修改系统host文件:140.82.114.4 github.com 199.232.5.194 github.global.ssl.fastly.net
二、程序接口名称及功能说明
名称
|
功能说明
|
接口服务对象
|
Portal
|
提供Web界面供用户管理配置
|
配置管理员
|
Admin Service
|
提供配置管理接口
|
Portal
|
Config Service
|
提供配置获取接口
|
Apollo客户端程序
|
Eureka
|
Config Service和Admin Service会向Eureka注册服务,并保持心跳
|
Config和Admin
|
Meta Server
|
Meta Server从Eureka获取Config Service和Admin Service的服务信息
|
Portal和Client
|
Meta Server和Config Service是在一个JVM进程中Eureka和Config Service是在一个JVM进程中
三、部署分布说明
- Portal单独使用 ApolloPortalDB 库,可以独立部署
- Config Service和Admin Service共用 ApolloConfigDB 库,建议部署至同一台服务器。
- Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置
- Config Service和Admin Service在每个环境都独立部署,使用独立的数据库(提供给相对应环境的客户端程序调用配置接口)
四、默认支持环境说明
名称
|
说明
|
DEV
|
开发环境
|
FAT
|
测试环境,相当于alpha环境(功能测试)
|
UAT
|
集成环境,相当于beta环境(回归测试)
|
PRO
|
生产环境
|
五、安装Config Service和Admin Service
- 导入数据库
1 2 | mysql -uroot -p -e 'CREATE DATABASE IF NOT EXISTS ApolloConfigDB DEFAULT CHARACTER SET = utf8mb4' mysql -uroot -p ApolloConfigDB < ApolloConfigDB.sql |
- 安装程序
1 2 3 | mkdir -p /wwwroot/{apollo-config,apollo-admin} unzip apollo-adminservice-1.9.0-github.zip -d /wwwroot/apollo-admin/ unzip apollo-configservice-1.9.0-github.zip -d /wwwroot/apollo-config/ |
- 修改配置文件
1 2 3 4 5 6 7 8 9 10 11 | vim /wwwroot/apollo-config/config/application-github.properties ######修改config server数据库地址以及用户名密码 spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL= false spring.datasource.username = root spring.datasource. password = Mysql@123456 vim /wwwroot/apollo-admin/config/application-github.properties ######修改admin server数据库地址以及用户名密码 spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL= false spring.datasource.username = root spring.datasource. password = Mysql@123456 |
- 启动程序
1 2 3 4 | /wwwroot/apollo-config/scripts/startup.sh /wwwroot/apollo-admin/scripts/startup.sh chmod 777 start.sh chmod 777 shutdown.sh |
- 开启防火墙
1 2 3 | firewall-cmd --permanent --zone=public --add-port=8080/tcp firewall-cmd --permanent --zone=public --add-port=8090/tcp firewall-cmd --permanent --zone=public --add-port=8070/tcp |
- 检查启动情况
- 打开网页 http://10.2.1.241:8080,查看是否有APOLLO-CONFIGSERVICE以及APOLLO-ADMINSERVICE成功注册
- 使用命令curl -X GET "http://10.2.1.241:8080/eureka/apps"检查已注册服务
六、同一套环境中部署Config Service和Admin Service集群
- 修改数据库配置文件
1234
###修改 `ApolloConfigDB`.`ServerConfig`表中 `Value`选项
###将原 http://localhost:8080/eureka/ 修改为内网IP,(Eureka服务Url,多个service以英文逗号分隔)
###例如:
UPDATE
`ApolloConfigDB`.`ServerConfig`
SET
`Value` =
'http://10.2.1.241:8080/eureka/,http://10.2.1.242:8080/eureka/'
WHERE
`Id` =
- 部署并启动
- 在10.2.1.241以及10.2.1.242服务器上部署config及admin服务
- 启动config及admin服务
- 检查启动情况
- 打开网页http://10.2.1.241:8080以及http://10.2.1.242:8080,两台程序都服务注册成功即可。
- 使用命令 curl -X GET "http://10.2.1.241:8080/eureka/apps"检查已注册服务.
七、安装配置portal
- 导入数据库
1 2 | mysql -uroot -p -e 'CREATE DATABASE IF NOT EXISTS ApolloPortalDB DEFAULT CHARACTER SET = utf8mb4' mysql -uroot -p ApolloPortalDB < ApolloPortalDB.sql |
- 安装程序
1 2 | mkdir -p /wwwroot/apollo-portal unzip apollo-portal-1.9.0-github.zip -d /wwwroot/apollo-portal/ |
- 修改配置文件
- 修改数据库配置文件
1 2 3 4 5 | vim /wwwroot/apollo-portal/config/application-github.properties ######修改portal数据库地址以及用户名密码 spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL= false spring.datasource.username = root spring.datasource. password = Mysql@123456 |
修改访问环境配置文件
1 2 3 | vim /wwwroot/apollo-portal/config/apollo-env.properties ######修改各环境的eureka访问地址,仅添加需要的环境,如果eureka配置集群模式,填入地址,使用逗号隔开。(更建议使用域名+负载均衡) dev.meta=http://10.2.1.241:8080,http://10.2.1.242:8080 |
修改数据库配置
配置统一存储在 ApolloPortalDB.ServerConfig 表中
1 2 3 4 5 6 7 | ###允许支持多环境 `apollo.portal.envs`键值中,如需管理多个环境的话,使用逗号隔开 例如 "DEV,FAT,UAT,PRO" ###修改部门列表信息 `organizations`键值中,按照样例修改可选部门信息 ###超级管理官 `superAdmin`键值中,拥有超级管理员权限用户名,如需添加多个,用逗号隔开 |
- 启动程序
1 2 3 | /wwwroot/apollo-portal/scripts/startup.sh chmod 777 start.sh chmod 777 shutdown.sh |
- 增加配置请查看官方git说明书
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(二):用.NET IoT库
· 几个自学项目的通病,别因为它们浪费了时间!
· 在外漂泊的这几年总结和感悟,展望未来
· .NET 数据拷贝方案选择
· .net工作流elsa-书签