1. Краткое описание Аполлота
Apollo — это распределенный центр конфигурации, разработанный отделом инфраструктуры Ctrip.Он может централизованно управлять конфигурацией приложений в различных средах и кластерах.После изменения конфигурации его можно передать на сторону приложения в режиме реального времени, и он имеет стандартизированные разрешения, процесс управление и другие функции.Подходит для сценариев управления конфигурацией микросервисов;сервер разработан на основе Spring Boot и Spring Cloud и может запускаться сразу после упаковки без дополнительных контейнеров приложений, таких как Tomcat;клиент Java не зависит ни от каких framework и может работать во всех средах выполнения Java.В то же время он также имеет лучшую поддержку среды Spring/Spring Boot. Может быть хорошей альтернативой Spring Cloud Config
2. Инструкции по развертыванию
Apollo можно быстро и легко развернуть с помощью Docker. Во время развертывания Apollo-configservice, Apollo-adminservice и Apollo-portal докеризуются отдельно для улучшения масштабируемости. MySQL не докеризуется.
3. Шаги развертывания
3.1.Для работы по инициализации базы данных см. Официальный сайт
3.2. Измените порт портала
由于是在一台机器上进行(伪)分布式部署Apollo,所以需要在修改portal/script/startup.sh中的端口,如果是在不同的机器上部署则可忽略
SERVER_PORT=8080 => SERVER_PORT=8070
3.3. Изменить адрес Эврика
adminservice启动时会将自己作为服务注册到configservice注册中心中,默认为http://localhost:/8080/eureka,所以需要将ApolloConfigDB.ServerConfig表中的
eureka.service.url字段修改为:http://apollo-configservice/8080/eureka,这样adminservice启动时就会在configservice容器中进行注册
(apollo-configservice — это имя службы контейнера configservice, когда контейнер организован, и контейнеры в той же сети могут использовать имя службы контейнера для доступа к другим контейнерам)
3.4. Изменить адрес метасервиса
Portal和Apollo Client都需要从Meta Service(即apollo-configservice本身)获取服务地址,然后通过服务地址直接访问,Meta Service地址修改在build.sh,
由dev_meta=http://localhost:8080修改为dev_meta=http://apollo-configservice:8080
3.5. Выполнение компиляции и упаковки
修改完以上配置后,在apollo/script/下执行命令:./build.sh
执行完后将configservice、adminservice、portal的target路径下apollo-xxx-0.9.0-SNAPSHOT-github.zip分别复制到configservice、adminservice、portal的src/main/docker目录,
因为在使用Dockerfile文件制作镜像进需要用这些包
3.6 Написание файла docker-compose.yml
Используйте Docker compose для определения и запуска нескольких контейнерных приложений Docker, поэтому используйте Docker compose для организации служб для configservice, adminservice и портала.
version: "3"
services:
apollo-configservice: ##容器服务名
container_name: apollo-configservice ##容器名
build: apollo-configservice/src/main/docker/ ##Dockerfile路径
image: apollo-configservice:0.9.0 ##镜像名
ports:
- "8080:8080"
volumes:
- "/Users/mobin/opt/logs/100003171:/opt/logs/100003171" ##将/opt/logs/100003171目录挂载到宿主机的/Users/mobin/opt/logs/100003171方便在宿主机上查看日志
environment:
- spring_datasource_url=jdbc:mysql://xxx:3306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=xxx
- spring_datasource_password=xxx
apollo-adminservice:
container_name: apollo-adminservice
build: apollo-adminservice/src/main/docker/
image: apollo-adminservice:0.9.0
ports:
- "8090:8090"
depends_on:
- apollo-configservice
volumes:
- "/Users/mobin/opt/logs/100003172:/opt/logs/100003172"
environment:
- spring_datasource_url=jdbc:mysql://xxx:3306/ApolloConfigDB?characterEncoding=utf8
- spring_datasource_username=xxx
- spring_datasource_password=xxx
apollo-portal:
container_name: apollo-portal
build: apollo-portal/src/main/docker/
image: apollo-portal:0.9.0
ports:
- "8070:8070"
depends_on:
- apollo-adminservice
volumes:
- "/Users/mobin/opt/logs/100003173:/opt/logs/100003173"
environment:
- spring_datasource_url=jdbc:mysql://xxx:3306/ApolloPortalDB?characterEncoding=utf8
- spring_datasource_username=xxx
- spring_datasource_password=xxx
Выполнение заказа:docker-compose up -d
Затем посетите localhost:8080 и localhost:8070.
Уведомление:
1. Если это в среде Mac, путь монтирования томов хоста должен быть /Users/username/xxx, а не /xxx.Если вышеуказанное значение томов изменится на следующее, будет сообщено об ошибке
volumes: - "/opt/logs/100003172:/opt/logs/100003172"
использованная литература
Распределенное развертывание Apollo