Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 微服务架构筑基础
  • Feign支持BasicAuth验证
  • Feign与OpenFeign
  • Feign请求压缩与超时等配置
  • OAUTH2.0协议
  • 分布式配置中心-apollo

    • 服务配置中心概念及使用场景
    • apollo概念功能简介
    • apollo架构详解
    • apollo分布式部署之Portal
    • apollo分布式部署之环境区分
      • 一 、再看部署架构图
      • 二、准备工作
      • 三、安装ConfigService和AdminService
        • 3.1.创建ApolloConfigDB数据库
        • 3.2.修改ConfigService和AdminService数据库连接配置文件
        • 3.3.修改Eureka服务注册中心连接配置
      • 四、ConfigService和AdminService服务启动
        • 4.1 先改端口
        • 4.2.执行启动脚本
      • 四、部署结果验证
      • 五、部署问题解决
        • 5.1.多网卡问题解决
      • 六、修改Portal环境配置
      • 七、调整ApolloPortal配置
    • apollo用户权限管理
    • apollo-java客户端基础
    • apollo与SpringCloud服务集成
    • apollo实例配置热更新
    • apollo命名空间与集群
    • apollo灰度发布
    • Apollo如何实时更新配置的
  • alibaba-nacos

  • 微服务
  • 分布式配置中心-apollo
kevin
2022-06-11
目录

apollo分布式部署之环境区分

# 一 、再看部署架构图

img

在上一节中,我们将apollo portal的配置中心web管理界面安装成功,如上图中的红色部分。portal用来管理多个运行环境,比如:生产环境、测试环境、开发环境等。 本节我们就以DEV(开发环境)来为大家介绍apollo服务端其他组件的部署,也就是config-service和adminservice(上图中的蓝色部分)。为了更贴近实际,并且保障高可用(开发环境也可以是高可用,避免服务不可用导致的开发效率问题),我们将config-service和adminservice分别部署启动3个实例。

上图中蓝色部分并没有体现出DEV环境的config-service和adminservice高可用分布式部署,只体现了单实例。这点我们不同。

下图是我们以DEV(开发环境)为例的部署图。以后我们每增加一套环境,就要完成本节所讲内容的安装与配置。

img

# 二、准备工作

与上一节中安装Apollo Portal的要求是一样的,需要准备好java环境(1.8+),MysQL环境(5.6.5+)。并且将apollo-configservice-1.6.1-github.zip和apollo-adminservice-1.6.1-github.zip上传到如下的主机。

环境 主机 ConfigService端口规划 AdmingService端口规划
DEV 192.168.161.3 9431 9432
DEV 192.168.161.4 9431 9432
DEV 192.168.161.5 9431 9432

# 三、安装ConfigService和AdminService

# 3.1.创建ApolloConfigDB数据库

ConfigService 和 AdminServie都需要操作数据库ApolloConfigDB,官方把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

  • 管理员账号执行初始化SQL:sql/apolloconfigdb.sql (opens new window),包含建库、建表及示例数据
# 用管理员账号登录mysql之后执行命令,创建数据库、建表及插入示例数据。
mysql > source  你的SQL所在的linux文件路径/apolloconfigdb.sql
1
2

虽然我们用管理员账户创建数据库,但是我们一般不用管理员用户访问业务数据库,所以我建立了一个test用户,并对其进行赋权。

CREATE USER 'test'@'%' IDENTIFIED BY '你的密码';
GRANT ALL ON ApolloConfigDB.* TO 'test'@'%' IDENTIFIED BY '你的密码';  //只有执行了这一句才可以远程登陆

FLUSH PRIVILEGES;
1
2
3
4

# 3.2.修改ConfigService和AdminService数据库连接配置文件

apollo-configservice-1.6.1-github.zip和apollo-adminservice-1.6.1-github.zip解压之后,config目录下面也都有一个config/application-github.properties文件,修改其中的mysql ip地址、端口、用户名、密码信息,指向ApolloConfigDB所在的mysql数据库。

# 创建目录,并解压到该目录
mkdir ./configservice && unzip apollo-configservice-1.6.1-github.zip -d ./configservice
mkdir ./adminservice&& unzip apollo-adminservice-1.6.1-github.zip -d ./adminservice
1
2
3

apollo-configservice-1.6.1-github.zip和apollo-adminservice-1.6.1-github.zip与portal解压之后的文件结构大同小异。如果有问题,可以看上一节内容。不同之处我会单独讲解。

  • 根据你的数据库地址将localhost修改为ApolloConfigDB数据库主机ip
  • 根据你的ApolloConfigDB数据库修改用户名密码,我的用户名是test(上文新建的)
spring.datasource.url = jdbc:mysql://你的mysql所在主机ip:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = test
spring.datasource.password = 你的用户密码
1
2
3

# 3.3.修改Eureka服务注册中心连接配置

  • ConfigService和AdminService是Spring Cloud微服务,所以二者需要向服务注册中心注册
  • ConfigService包含eureka,所以实际上就是向ConfigService注册。我们规划的ConfigService接口是9431。
  • ConfigService和AdminService都操作ApolloConfigDB,为了避免重复配置,所以官方将eureka连接配置放在了数据库里面。

在ApolloConfigDB中执行如下的SQL,配置eureka集群连接。

UPDATE apolloconfigdb.ServerConfig 
SET ServerConfig.`Value`='http://192.168.161.3:9431/eureka/,http://192.168.161.4:9431/eureka/,http://192.168.161.5:9431/eureka/'  
WHERE  `Key`='eureka.service.url';
1
2
3

# 四、ConfigService和AdminService服务启动

# 4.1 先改端口

ConfigService和AdminService的默认端口是8080, 8090端口,按照我们的规划改成9431和9432。修改scripts/startup.sh脚本(三台服务器182.168.161.3,192.168.161.4,192.168.161.5都要改,所以可以将zip里面文件中端口改好之后再上传服务器):

imgimg

同时要把这2个端口在防火墙上开放出来

firewall-cmd --zone=public --add-port=9431/tcp --permanent;
firewall-cmd --zone=public --add-port=9432/tcp --permanent;
firewall-cmd --reload
1
2
3

# 4.2.执行启动脚本

分别进入三台服务器182.168.161.3,192.168.161.4,192.168.161.5的configservice、adminservice目录下。脚本的启动顺序没有必然的先后(连接失败可以重试),但最好先启动configservice。执行startup.sh脚本(脚本的路径根据你自己的主机目录修改):

/root/apollo/configservice/scripts/startup.sh;   #先在每台机器上执行这个,因为包含eureka。
/root/apollo/adminservice/scripts/startup.sh;   #然后每台机器上执行这个
1
2

# 四、部署结果验证

  • 验证eureka访问:http://192.168.161.3:9431/,http://192.168.161.4:9431/,http://192.168.161.5:9431/,然后去检查所有实例是否启动成功。

img

按照上图中的红色标记检查部署结果。

# 五、部署问题解决

# 5.1.多网卡问题解决

之前我们讲过eureka的多网卡选择问题,eureka是一spring cloud(boot)服务,所以该解决方案适用于所有的spring cloud(boot)服务。也就适用于configService和adminservice。在二者的application-github.properties文件中加入网卡选择配置(参考eureka多网卡选择章节学习)

spring.cloud.inetutils.preferredNetworks=192.168
spring.cloud.inetutils.ignoredInterfaces[0]=enp0s3
spring.cloud.inetutils.ignoredInterfaces[1]=docker0

eureka.instance.hostname=peer1
eureka.instance.instance-id: ${spring.application.name}-${eureka.instance.hostname}:${server.port}
1
2
3
4
5
6

将hostname为peer1、peer2、peer3分别应用于三台主机,配置修改完成之后,重启configservice、adminservice

我们部署了configService,configService中默认包含了eureka,所以未来所有eureka遇到的问题都可以在configService应用中通过配置解决。

# 六、修改Portal环境配置

因为我们新增了DEV开发环境,并且部署了ConfigService和AdminService,所以需要将其告知Apollo Portal。方法就是修改portal应用(上一节部署)的配置文件是config/apollo-env.properties。

dev.meta=http://192.168.161.3:9431,http://192.168.161.4:9431,http://192.168.161.5:9431
1

将dev.meta的配置指向configService服务。Config service地址也可以填入IP,0.11.0版本之前只支持填入一个IP。从0.11.0版本开始支持填入以逗号分隔的多个地址。如上配置所示。

不过对于生产环境还是建议使用域名,通过SLB(Software Load Balancer:nginx or haproxy)做动态负载均衡,因为机器扩容、缩容等都可能导致IP列表的变化。

img

因为我们修改了portal配置文件,所以portal也要重启。

/root/apollo/portal/scripts/startup.sh;
1

# 七、调整ApolloPortal配置

服务配置项统一存储在ApolloPortalDB.ServerConfig表中,可以通过管理员工具 - 系统参数页面进行配置:apollo.portal.envs - 可支持的环境列表

img

默认值是dev(开发环境),不用改。如果我们本节内容新增的是生产环境的配置,应该写上“dev,pro”,然后保存。查看管理员工具->系统信息,如下:

img

上次更新: 2022/06/13, 18:30:58
apollo分布式部署之Portal
apollo用户权限管理

← apollo分布式部署之Portal apollo用户权限管理→

最近更新
01
AI是如何学习的
06-06
02
提示词工程实践指南
06-06
03
chatGpt提示原则
06-06
更多文章>
| Copyright © 2022-2025 Kevin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式