Apollo配置中心

1.Apollo

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。

2.Apollo部署

2.1 docker-compose安装

获取docker-compose资源

链接:https://pan.baidu.com/s/1-6OZkGotta7eMW18GG6wsw?pwd=249c 
提取码:249c 

2.2 配置docker-compose

[root@localhost apollo]# cat docker-compose.yaml 
version: "3.7"
services:
  mysql:
    container_name: mysql
    image: mysql:5.7.18
    environment:
    - "MYSQL_ROOT_PASSWORD=123456"
    - "TZ=Asia/Shanghai"
    restart: always
    command: --max-connections=1000 --server-id=1 --log-bin=mysql-bin
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      interval: 5s
      timeout: 1s
      retries: 10
    volumes:
    #- ./mysql/mydir:/mydir
    - ./mysql/data:/var/lib/mysql
    #- ./mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf # 本地存放配置文件
    - ./mysql/source:/docker-entrypoint-initdb.d  # 全备备份sql文件放置到此目录下
    #ports:
    # - 3306:3306
    #networks:
    #- apollo_net

  apollo-configservice:
    container_name: apollo-configservice
    image: apolloconfig/apollo-configservice:2.1.0
    restart: always
    environment:
    - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false&serverTimezone=GMT
    - SPRING_DATASOURCE_USERNAME=root
    - SPRING_DATASOURCE_PASSWORD=123456
    volumes:
    - /tmp/logs:/opt/logs
    healthcheck:
      test: ["CMD", "curl" ,"localhost:8080/health"]
      interval: 5s
      timeout: 1s
      retries: 10
    depends_on:
      mysql:
        condition: service_healthy
    ports:
     - 8080:8080
     - 8090:8090
    networks:
    - apollo_net

  apollo-adminservice:
    container_name: apollo-adminservice
    image: apolloconfig/apollo-adminservice:2.1.0
    restart: always
    environment:
    - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false&serverTimezone=GMT
    - SPRING_DATASOURCE_USERNAME=root
    - SPRING_DATASOURCE_PASSWORD=123456
    volumes:
    - /tmp/logs:/opt/logs
    healthcheck:
      test: ["CMD", "curl" ,"localhost:8090/health"]
      interval: 5s
      timeout: 1s
      retries: 10
    depends_on:
      apollo-configservice:
        condition: service_healthy
    network_mode: "service:apollo-configservice"

  apollo-portal:
    container_name: apollo-portal
    image: apolloconfig/apollo-portal:2.1.0
    restart: always
    environment:
    - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8&useSSL=false&serverTimezone=GMT
    - SPRING_DATASOURCE_USERNAME=root 
    - SPRING_DATASOURCE_PASSWORD=123456
    - APOLLO_PORTAL_ENVS=pro    #注意这里,如果要修改不同环境名,则数据库也必须修改 ApolloPortalDB.ServerConfig 中 apollo.portal.envs 该行的信息,否则启动会发生报错
    - PRO_META=http://apollo-configservice:8080 # 这里需要写环境名对应的 configservice 服务。
    volumes:
    - /tmp/logs:/opt/logs
    healthcheck:
      test: ["CMD", "curl" ,"localhost:8070/health"]
      interval: 5s
      timeout: 1s
      retries: 10
    depends_on:
      apollo-adminservice:
        condition: service_healthy
      apollo-configservice:
        condition: service_healthy
    ports:
     - 8070:8070
    networks:
    - apollo_net

networks:
  apollo_net:
    name: apollo_net
    driver: bridge
    ipam:
      config:
      - subnet: "172.100.0.0/16"

2.3 Apollo默认会启动3个服务

root@localhost(192.168.199.52)~/apollo>docker-compose ps
NAME                   IMAGE                                     COMMAND                  SERVICE                CREATED             STATUS                   PORTS
apollo-adminservice    apolloconfig/apollo-adminservice:2.1.0    "/apollo-adminservic…"   apollo-adminservice    3 minutes ago       Up 3 minutes (healthy)   
apollo-configservice   apolloconfig/apollo-configservice:2.1.0   "/apollo-configservi…"   apollo-configservice   3 minutes ago       Up 3 minutes (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8090->8090/tcp, :::8090->8090/tcp
apollo-portal          apolloconfig/apollo-portal:2.1.0          "/apollo-portal/scri…"   apollo-portal          3 minutes ago       Up 3 minutes (healthy)   0.0.0.0:8070->8070/tcp, :::8070->8070/tcp
mysql                  mysql:5.7.18                              "docker-entrypoint.s…"   mysql                  3 minutes ago       Up 3 minutes (healthy)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
root@loc
  1. 启动apollo-configservice,Configservice提供配置的读取、推送等功能,服务对象是Apollo客户端
  2. 启动apollo-adminservice,与上面类似.Adminservice提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
  3. Apollo Portal 管理界面

3.Apollo使用

3.1 登录

登录用户和密码apollo/admin
image.png

image.png

3.2 配置apollo测试样例

3.2.1安装maven和jdk

root@localhost(192.168.199.52)~>java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
root@localhost(192.168.199.52)~>

# tar xf apache-maven-3.8.1-bin.tar.gz -C /usr/local/
# cat <<EOF>> /etc/profile.d/maven.sh
export PATH=\$PATH:/usr/local/apache-maven-3.8.1/bin/
EOF
# source /etc/profile.d/maven.sh
# mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/apache-maven-3.8.1
Java version: 1.8.0_77, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_77/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

3.2.2 修改maven源

...
  <mirrors>
      <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public/</url>
      <mirrorOf>*</mirrorOf>
      </mirror>
  </mirrors>
...

image.png

3.2.3 配置测试用例

root@localhost(192.168.199.52)~>ls
anaconda-ks.cfg  apollo/  springboot-apollo-demo.tar.gz
root@localhost(192.168.199.52)~>tar -xzvf  springboot-apollo-demo.tar.gz 
springboot-apollo-demo/
springboot-apollo-demo/Dockerfile
springboot-apollo-demo/README.md
springboot-apollo-demo/deploy.yaml
springboot-apollo-demo/pom.xml
springboot-apollo-demo/src/
springboot-apollo-demo/src/main/
springboot-apollo-demo/src/main/java/
springboot-apollo-demo/src/main/java/club/
springboot-apollo-demo/src/main/java/club/mydlq/
springboot-apollo-demo/src/main/java/club/mydlq/demo/
springboot-apollo-demo/src/main/java/club/mydlq/demo/Application.java
springboot-apollo-demo/src/main/java/club/mydlq/demo/TestController.java
springboot-apollo-demo/src/main/resources/
springboot-apollo-demo/src/main/resources/application.yaml
root@localhost(192.168.199.52)~>

3.2.3.1 修改jar的配置文件指向apollo
root@localhost(192.168.199.52)~/springboot-apollo-demo/src/main/resources>pwd
/root/springboot-apollo-demo/src/main/resources
root@localhost(192.168.199.52)~/springboot-apollo-demo/src/main/resources>vim application.yaml 

#应用配置
server:
  port: 7070
spring:
  application:
    name: apollo-test

#Apollo 配置
app:
  id: apollo-test                            #应用ID
apollo:
  cacheDir: /opt/data/                       #配置本地配置缓存目录
  cluster: shanghai                           #指定使用哪个集群的配置
  meta: http://192.168.199.52:8080            #配置中心地址
  autoUpdateInjectedSpringProperties: true   #是否开启 Spring 参数自动更新
  bootstrap:
    enabled: true                            #是否开启 Apollo
   # namespaces: dev-2                  #设置 Namespace
    eagerLoad:
      enabled: false                         #将 Apollo 加载提到初始化日志系统之前

3.2.3.2 mvn打包
root@localhost(192.168.199.52)~/springboot-apollo-demo>pwd
/root/springboot-apollo-demo
root@localhost(192.168.199.52)~/springboot-apollo-demo>mvn clean package

image.png

3.2.3.3 启动测试jar包
root@localhost(192.168.199.52)~/springboot-apollo-demo>cd target/
root@localhost(192.168.199.52)~/springboot-apollo-demo/target>ls
apollo-demo-0.0.1.jar  apollo-demo-0.0.1.jar.original  classes/  generated-sources/  maven-archiver/  maven-status/
root@localhost(192.168.199.52)~/springboot-apollo-demo/target>java -jar apollo-demo-0.0.1.jar

3.3 创建apollo

3.3.1 为程序添加变量

image.png

image.pngimage.pngimage.png

3.3.2 测试

image.png
测试目标:测试当apollo中修改参数值后客户端是否能及时刷新。
接下来,通过修改 test 的值来尝试是否热加载。
image.pngimage.png

3.3.3 apollo挂掉

当客户端不能连接到 Apollo 配置中心时候,默认使用本地缓存文件中的配置。
删除缓存配置文件后,输出的值为程序定义的默认值。

[root@localhost apollo]# cat /opt/data/apollo-test/config-cache/apollo-test+shanghai+application.properties 
#Persisted by DefaultConfig
#Wed Sep 13 17:07:48 CST 2023
test=qqqqqqqqqqqqqq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值