携程apollo配置中心搭建

扶醉桌前 提交于 2020-03-10 19:41:37

服务jar包及初始化数据库脚本下载:(包括单机快速部署版本、加密版本、非加密版本)

链接:https://pan.baidu.com/s/1_P3Ux-2tVWWWL53S5G1HsA 
提取码:lnf2

云盘的Apollo是在原官方1.3版本基础上做过二次开发,请务必通过云盘链接下载相应的zip包。

        Apollo统一使用JDK1.8及以上版本。

        以上包对原apollo的端口进行了统一更改:

相应服务

原端口

平台调整后端口

备注

apollo-configservice 8080 9001 微服务配置的连接Apollo的地址
apollo-portal 8070 9003 Apollo的可视化配置页面
apollo-adminsservice 8090 9002 Apollo自己的注册中心

一、数据库初始化

Mysql数据库注意:Mysql的大小写敏感配置。

在Mysql数据库中新增两个数据库:apolloconfigdb和apolloportaldb,字符集及排序规则如下:

 将云盘下对应的apolloconfigdb.sql和apolloportaldb.sql中的数据库脚本分别在apolloconfigdb和apolloportaldb中执行。

二、apollo快速部署

 Apollo快速部署,只需执行一次启动,即可将apollo对应的admin-service、config-service、portal三个服务器全部启动,多用于POC或者开发环境。

 Apollo快速部署方式,默认支持Apollo本身属性加密。

2.1、上传快速部署版本到服务器

上传快速部署版本(apollo-single.zip)到/home/appuser/apollo目录下并解压:

2.2、修改启动脚本

修改启动脚本apollo.sh(主要为apollo config db info和apollo portal db info两个数据库的链接信息),脚本后面内容是官方原版不作修改。

# apollo config db info
apollo_config_db_url=jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=root
 
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://localhost:3306/apolloportaldb?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=root

2.3、启动

对启动脚本进行赋权

/home/appuser/apollo就在该原当前目录下执行下面即可:
chmod 777 apollo.sh

启动

./apollo.sh start

启动信息如下:有时候最后报错启动超时失败,但看日志没有报错,访问使用正常,实际已启动成功。

2.4、验证

启动完成后,即可访问:http://servierIP:9001,http://servierIP:9002,http://servierIP:9003查看对应的页面

默认账户密码apollo

2.5、数据库调整(如果需要,不改也没发现问题)

修改apolloconfigdb数据库的serverconfig表的Key为eureka.service.url的地址,此地址为apollo的9001端口地址,如:

2.6、 开启防火墙(root)

若服务器开启了防火墙,需将端口放开:

firewall-cmd --zone=public --add-port=9001/tcp --permanent #configsrvice端口
firewall-cmd --zone=public --add-port=9002/tcp --permanent #adminservice端口
firewall-cmd --zone=public --add-port=9003/tcp --permanent #portal端口
firewall-cmd --reload #重载防火墙

 

三、apollo分体部署

Apollo提供支持加密版本和非加密版本的分体部署包,主要区别在于apollo加载的配置信息,如数据库密码等,是否支持加密。

       加密版本在启动时,可能会启动相对于非加密版本略慢,使用时无其他区别。

       apollo-xxxxx-encryp为加密版本;apollo-xxxxx-github为非加密版本,部署方式相同,下面部署以加密版本为例(统称分体版本,下同)

3.1、上传zip包到服务器

上传分体版本到/home/appuser/apollo目录下

3.2、解压

       新增对应的文件夹并解压

mkdir apollo-configservice-1.3.0
mkdir apollo-adminservice-1.3.0
mkdir apollo-portal-1.3.0
unzip apollo-adminservice-1.3.0-encryp.zip -d   apollo-adminservice-1.3.0
unzip apollo-configservice-1.3.0-encryp.zip -d apollo-configservice-1.3.0
unzip apollo-portal-1.3.0-encryp.zip -d apollo-portal-1.3.0

3.3、配置

3.3.1、 配置启动apollo-config-service

配置日志文件路径等信息

cd /home/appuser/apollo/apollo-configservice-1.3.0
 
vi apollo-configservice.conf
 
MODE=service
PID_FOLDER=.
LOG_FOLDER=$HOME/apollo/logs/100003171/

注意:务必保证PID_FOLDER路径存在,否则会使用默认路径/tmp。非root用户启动时可能会因无权限访问而启动报错

配置数据库连接

cd /home/appuser/apollo/apollo-configservice-1.3.0/config
vi application-github.properties

 修改数据库连接信息

# DataSource
spring.datasource.url=jdbc:mysql://172.16.80.1:3306/apolloconfigdb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

启动

cd /home/appuser/apollo/apollo-configservice-1.3.0/scripts
 
./startup.sh

修改数据库

apolloconfigdb数据库的serverconfig表中,key为eureka.service.url数据的value值改为config-service的地址,如http://172.16.80.39:9001/eureka/修改

验证

访问http://ServerIP:9001

3.3.2、配置启动apollo-admin-service

配置日志文件路径等信息


cd /home/appuser/apollo/apollo-adminservice-1.3.0
 
vi apollo-adminservice.conf
 
MODE=service
PID_FOLDER=.
LOG_FOLDER=$HOME/apollo/logs/100003172/

注意:务必保证PID_FOLDER路径存在,否则会使用默认路径/tmp。非root用户启动时可能会因无权限访问而启动报错

配置数据库连接

cd /home/appuser/apollo/apollo-adminservice-1.3.0/config
vi application-github.properties

修改数据库连接信息

# DataSource
spring.datasource.url=jdbc:mysql://172.16.80.1:3306/apolloconfigdb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

启动

cd /home/appuser/apollo/apollo-adminservice-1.3.0/scripts
 
./startup.sh

验证

访问http://ServerIP:9002

3.3.3、配置启动apollo-portal

配置日志文件路径等信息

cd /home/appuser/apollo/apollo-portal-1.3.0
 
vi apollo-portal.conf
 
MODE=service
PID_FOLDER=.
LOG_FOLDER=$HOME/apollo/logs/100003173/

注意:务必保证PID_FOLDER路径存在,否则会使用默认路径/tmp。非root用户启动时可能会因无权限访问而启动报错

配置数据库连接

cd /home/appuser/apollo/apollo-portal-1.3.0/config
vi application-github.properties

修改数据库连接信息

# DataSource
spring.datasource.url=jdbc:mysql://172.16.80.1:3306/apolloportaldb?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

修改apollo多环境配置信息

cd /home/appuser/apollo/apollo-portal-1.3.0/config
vi apollo-env.properties

修改dev.meta的地址为上文启动的apollo-config-service的地址

local.meta=http://localhost:9001
dev.meta=http://172.16.80.39:9001/
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

启动

cd /home/appuser/apollo/apollo-portal-1.3.0/scripts
 
./startup.sh

验证

访问http://ServerIP:9003

3.4、 开启防火墙(root)

若服务器开启了防火墙,需将端口放开:

firewall-cmd --zone=public --add-port=9001/tcp --permanent #configsrvice端口
firewall-cmd --zone=public --add-port=9002/tcp --permanent #adminservice端口
firewall-cmd --zone=public --add-port=9003/tcp --permanent #portal端口
firewall-cmd --reload #重载防火墙

四、apollo本身配置加密

Apollo属性加密,只是对apollo依赖的一些配置信息加密解密,如apolloconfigdb或apolloportaldb的密码。

4.1、加密明文

使用工具类,对明文加密,得到加密后的值。

public static void main(String[] args) {
    DesDecryptPropertyService service = new DesDecryptPropertyService();
    String doEncrypt = service. doEncrypt("root"); //每次加密出的密码都是不同的,但不影响解密
    System.out.println(doEncrypt);
    String doDecrypt = service. doDecrypt(doEncrypt);
    System.out.println(doDecrypt);
}

4.2、调整配置

属性加密配置,在密文前加特殊标识DECRYPT@

spring.datasource.password=DECRYPT@kQ6Z1+/d2TQ=

五、apollo扩展

5.1和5.2是开头云盘中修改过的。

5.1、修改支持嵌入iframe

对apollo-portal的AuthConfiguration类进行修改

5.2、调整默认日志路径

为避免非root用户不能写入到/tmp目录下,分别在apollo-adminservice、apollo-configservice、apollo-portal工程中,添加如下属性至logback.xml(src/main/resources/logback.xml)

<springProperty name="LOG_FOLDER" source="logging.file"/>

demo:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <springProperty name="LOG_FOLDER" source="logging.file"/>
    <!-- <property name="LOG_FILE"
        value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}apollo-adminservice.log}" />
    <springProperty name="LOG_PATH"source="logging.path"/> -->
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <root level="INFO">
        <appender-ref ref="FILE" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

注:apollo-portal需额外添加依赖,以支持日志中使用springProperty标签

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter</artifactId>
</dependency>

5.3、Apollo官方提供的扩展:分布式多环境部署

即不同环境的配置信息,均可通过一个apollo-portal页面进行管理:

官方地址:https://github.com/ctripcorp/apollo/wiki/分布式部署指南

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!