Architecture.pngserver_list.png

前置知识

  1. 后台启动容器:docker-compose up -d
  2. 查看容器运行情况:docker-compose ps
  3. 停止容器:docker-compose stop
  4. 启动容器:docker-compose start
  5. 停止并删除容器:docker-compose down
  6. 停止并删除容器并删除volumedocker-compose down --volumes

1、给组件宿主机eth0网卡共新增3个内网IP

  1. 参考:https://cloud.tencent.com/document/product/1199/43866
  2. 10.0.0.11
  3. 10.0.0.9
  4. 10.0.0.16
  5. 设置完之后,一定要重启服务器!
  6. 验证是否设置成功:ping ip1/ip2/ip3 or ip address
  7. 设置多内网IP的原因:
  8. 一方面,部署多个apollo-configserviceapollo-adminservice实例时,如果实例的IP相同,则无法重复注册到内置eureka
  9. 另一方面,实例注册到内置eureka上时,不能使用docker网卡的分配的IP,因为这会导致内网中其他机器上的应用实例无法访问apollo

2、提前修改好数据库中的配置

  1. 先导入apolloportaldb.sql
  2. 脚本地址:https://github.com/apolloconfig/apollo/tree/1.8.1/scripts/sql/apolloportaldb.sql
  3. 再导入apolloconfigdb.sql
  4. https://github.com/apolloconfig/apollo/tree/1.8.1/scripts/sql/apolloconfigdb.sql
  5. #修改注册中心地址(配置项不存在加新增)
  6. select * from ApolloConfigDB.ServerConfig;
  7. eureka.service.url=http://10.0.0.11:8080/eureka/,http://10.0.0.9:8081/eureka/,http://10.0.0.16:8082/eureka/
  8. #修改对应环境的Meta Service地址(配置项不存在就新增)
  9. select * from ApolloPortalDB.ServerConfig;
  10. apollo.portal.meta.servers={"DEV":"http://10.0.0.11:8080,http://10.0.0.9:8081,http://10.0.0.16:8082"}

3、搭建3个configservice

  1. 重要说明:下面使用的镜像是我修改源码后构建的镜像,不能使用官方镜像!修改源码的目的,是为了调整默认的网络策略,使其支持通过启动参数传入实例的注册IP
  2. 1、创建docker-compose.yml
  3. version: "3.4"
  4. services:
  5. configservice1:
  6. image: xlvchao/apollo-configservice:1.8.1
  7. container_name: configservice1
  8. restart: always
  9. environment:
  10. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  11. - SPRING_DATASOURCE_USERNAME=root
  12. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  13. - hostname=configservice1
  14. - eureka.instance.ip-address=10.0.0.11
  15. volumes:
  16. - /data/apollo/configservice/1/logs:/opt/logs
  17. ports:
  18. - 8080:8080
  19. configservice2:
  20. image: xlvchao/apollo-configservice:1.8.1
  21. container_name: configservice2
  22. restart: always
  23. environment:
  24. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  25. - SPRING_DATASOURCE_USERNAME=root
  26. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  27. - hostname=configservice2
  28. - eureka.instance.ip-address=10.0.0.9
  29. volumes:
  30. - /data/apollo/configservice/2/logs:/opt/logs
  31. ports:
  32. - 8081:8080
  33. configservice3:
  34. image: xlvchao/apollo-configservice:1.8.1
  35. container_name: configservice3
  36. restart: always
  37. environment:
  38. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  39. - SPRING_DATASOURCE_USERNAME=root
  40. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  41. - hostname=configservice3
  42. - eureka.instance.ip-address=10.0.0.16
  43. volumes:
  44. - /data/apollo/configservice/3/logs:/opt/logs
  45. ports:
  46. - 8082:8080
  47. 2、后台启动
  48. docker-compose up -d

4、搭建3个adminservice

  1. 1、创建docker-compose.yml
  2. version: "3.4"
  3. services:
  4. adminservice1:
  5. image: xlvchao/apollo-adminservice:1.8.1
  6. container_name: adminservice1
  7. restart: always
  8. environment:
  9. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  10. - SPRING_DATASOURCE_USERNAME=root
  11. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  12. - eureka.instance.ip-address=10.0.0.11
  13. volumes:
  14. - /data/apollo/adminservice/1/logs:/opt/logs
  15. ports:
  16. - 8090:8090
  17. adminservice2:
  18. image: xlvchao/apollo-adminservice:1.8.1
  19. container_name: adminservice2
  20. restart: always
  21. environment:
  22. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  23. - SPRING_DATASOURCE_USERNAME=root
  24. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  25. - eureka.instance.ip-address=10.0.0.9
  26. volumes:
  27. - /data/apollo/adminservice/2/logs:/opt/logs
  28. ports:
  29. - 8091:8090
  30. adminservice3:
  31. image: xlvchao/apollo-adminservice:1.8.1
  32. container_name: adminservice3
  33. restart: always
  34. environment:
  35. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloConfigDB?characterEncoding=utf8&useSSL=false
  36. - SPRING_DATASOURCE_USERNAME=root
  37. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  38. - eureka.instance.ip-address=10.0.0.16
  39. volumes:
  40. - /data/apollo/adminservice/3/logs:/opt/logs
  41. ports:
  42. - 8092:8090
  43. 2、后台启动
  44. docker-compose up -d

5、搭建1个portal

  1. 1、创建docker-compose.yml
  2. version: "3.4"
  3. services:
  4. portalservice:
  5. image: xlvchao/apollo-portal:1.8.1
  6. container_name: portalservice
  7. restart: always
  8. environment:
  9. - SPRING_DATASOURCE_URL=jdbc:mysql://10.0.0.3:3306/ApolloPortalDB?characterEncoding=utf8&useSSL=false
  10. - SPRING_DATASOURCE_USERNAME=root
  11. - SPRING_DATASOURCE_PASSWORD=Pwd@123
  12. volumes:
  13. - /data/apollo/portal/logs:/opt/logs
  14. ports:
  15. - 8070:8070
  16. 2、后台启动
  17. docker-compose up -d
  18. 3、记得开放portal所在云主机的端口8070!!

6、云服务器安全组

开放云服务器的8070端口,登陆apollo控制台:
image.png

http://宿主机公网IP:8070

初始账号密码:apollo/admin

如果搞不定,请加群讨论,扫码关注,发送“加群”
mp_qrcode.jpg