Dirección del sitio web oficial: http://apollo.auto/
Dirección de GitLab: https://github.com/ctripcorp/apollo
Arquitectura general
-
Liberación de configuración de usuario en funcionamiento del Portal
-
Lanzamiento de la operación de la interfaz del servicio de administración de llamadas al portal
-
Después de que Admin Service publica la configuración, envía ReleaseMessage a cada Config Service
- Después de que el servicio de configuración recibe el ReleaseMessage, notifica al cliente correspondiente
Principio de realización
La figura anterior describe brevemente el principio de implementación del cliente Apollo:
-
El cliente y el servidor mantienen una conexión prolongada, por lo que la actualización de la configuración se puede enviar lo antes posible. (Logrado por Http Long Polling)
- El cliente también extraerá periódicamente la última configuración de la aplicación del servidor del centro de configuración de Apollo.
-
Este es un mecanismo de respaldo, para evitar que el mecanismo de empuje falle y la configuración no se actualice
-
El cliente informará la versión local al tirar regularmente, por lo que en general, para la operación de extracción regular, el servidor devolverá 304-No modificado
- De forma predeterminada, la frecuencia de tiempo se extrae cada 5 minutos y el cliente también se puede anular especificando la propiedad del sistema: apollo.refreshInterval en tiempo de ejecución, en minutos.
1. Una vez que el cliente obtenga la última configuración de la aplicación del servidor del centro de configuración de Apollo, se guardará en la memoria.
2. El cliente almacenará en caché una copia de la configuración obtenida del servidor en el sistema de archivos local.
- Cuando el servicio no está disponible o la red no está disponible, la configuración aún se puede restaurar desde el local.
1. La aplicación puede obtener la última configuración del cliente Apollo y suscribirse a las notificaciones de actualización de la configuración.
Instalación de MySQL
Requisitos de la versión: 5.6.5+
Host: 10.2.42.28
Borrar paquetes dependientes de mysql:
rpm -qa | grep mysql
yum remove mysql-libs
Instale mysql5.7: Secuencia de instalación: común → libs → cliente → servidor
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
Interfaz de instalación exitosa:
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-common-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.26-1.e################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.26-1.el7################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.26-1.e################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.26-1.e################################# [100%]
Inicie mysql:
service mysqld start
inicialización de mysql:
[root@DCA-APP-COM-apollo02 mysql]# grep 'temporary password' /var/log/mysqld.log
2019-07-17T14:10:02.559365Z 1 [Note] A temporary password is generated for root@localhost: %hNW)P3Ly,8v
[root@DCA-APP-COM-apollo02 mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 更改密码长度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 更改密码强度
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for root@localhost=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root' @'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Creación de la base de datos Apollo: descarga de SQL usted mismo en el sitio web oficial
mysql> source apolloconfigdb.sql;
mysql> source apolloportaldb.sql;
Autorización de usuario de conexión Msyql:
mysql> grant all privileges on ApolloConfigDB.* to Apollo@'%' IDENTIFIED BY 'Apollo' ;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on ApolloPortalDB.* to Apollo@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Cambios en la configuración de la base de datos:
ApolloPortalDB:
ApolloConfigDB:
Instalación de Apolo
Dirección oficial: https://github.com/ctripcorp/apollo
Esta versión de prueba es: 0.10.2
Dirección de descarga: https://github.com/ctripcorp/apollo/releases/tag/v0.10.2
apollo-adminservice-0.10. 2-github.zip
apollo-configservice-0.10.2-github.zip
apollo-portal-0.10.2-github.zip
apollo-config
Host: 10.2.42.27
Crear usuario apollo:
groupadd apollo && useradd -g apollo apollo
Configurar configserver:
cd /home/apollo/
mkdir apollo-config
unzip apollo-configservice-0.10.2-github.zip -d apollo-config
Configuración de ApolloconfigDB:
vim apollo-config/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
Ruta de registro y modificación de parámetros de JVM: parte de la configuración, no es necesario modificar la siguiente configuración
vim apollo-config/scripts/startup.sh
# 修改日志路径
LOG_DIR=/home/apollo/logs/100003171
# 默认端口
SERVER_PORT=8080
# 默认注释看需求打开
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=8"
Inicie Apollo-configservice:
cd /home/apollo/
chown -R apollo.apollo *
su apollo
./apollo-config/scripts/startup.sh
Inicio exitoso:
Thu Jul 18 15:06:53 CST 2019 ==== Starting ====
Started [53700]
Waiting for server startup......
Thu Jul 18 15:07:24 CST 2019 Server started in 30 seconds!
apollo-admin
Anfitrión: 10.2.42.28
groupadd apollo && useradd -g apollo apollo
cd /home/apollo/
mkdir {apollo-admin,apollo-portal}
unzip apollo-adminservice-0.10.2-github.zip -d apollo-admin
unzip apollo-portal-0.10.2-github.zip -d apollo-portal
Configuración de ApolloconfigDB:
cd apollo-admin
vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
Ruta de registro y configuración de parámetros de JVM: parte de la configuración, esta última configuración no necesita ser modificada
vim scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-adminservice
## Adjust log dir if necessary
LOG_DIR=/home/apollo/logs/100003172
## Adjust server port if necessary
SERVER_PORT=8090
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
Inicie apollo-admin:
cd /home/apollo/
chown -R apollo.apollo *
su apollo
./scripts/startup.sh
Thu Jul 18 16:17:32 CST 2019 ==== Starting ====
Started [56497]
Waiting for server startup......
Thu Jul 18 16:18:02 CST 2019 Server started in 30 seconds!
portal de apolo
Host:
10.2.42.28 configuración de apolloportlDB:
cd /home/apollo/apollo-portal
vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
configuración de configservice: un conjunto de portal puede administrar múltiples configservices, o se puede configurar directamente en el script startup.sh
vim config/apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://10.2.42.27:8080
fat.meta=http://10.2.42.27:8080
uat.meta=${lpt_meta}
lpt.meta=${lpt_meta}
pro.meta=${lpt_meta}
Ruta de registro y modificación de parámetros de JVM: parte de la configuración, no es necesario modificar la siguiente configuración
vim scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-portal
## Adjust log dir if necessary
LOG_DIR=/home/apollo/logs/100003173
## Adjust server port if necessary
SERVER_PORT=8070
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
apollo-portal comienza:
su apollo
./scripts/startup.sh
Thu Jul 18 16:25:55 CST 2019 ==== Starting ====
Started [56773]
Waiting for server startup...
Thu Jul 18 16:26:10 CST 2019 Server started in 15 seconds!
Uso de Apolo
Visualización de la página del servidor: 10.2.42.27:8080
Visualización de la página del centro de configuración: 10.2.42.28:8070
apollo / admin
Creación de proyectos: