Apollo安装配置
1.Apollo简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。 Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。 .Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。 详情参考https://github.com/ctripcorp/apollo 根据官方描述apollo可以用在:开发环境(dev)、生产环境(pro)、以及测试和集成环境(fat和uat)
在部署方式上:
其实这些环境在部署方面都是一样的,都分别部署了离线包中的apollo-adminservice和apollo-configservice然后再找一台服务器部署apollo-portal来管理这些环境同时根据官方描述同一个环境(例如PRO)可以进行高可用部署,也就是在多个服务器上部署多个副本
2.环境准备
本次部署的架构
为了适应未来项目架构,我们需要部署两个Apollo配置中心,其中Apollo1提供读写服务,Apollo2仅提供读服务;通过Mysql的主从模式,中心2的Mysql会一直同步中心1的Mysql数据,作为中心1的备份
部署规划如下:
server1 apollo1 + mysql主
server2 apollo2 + mysql从
3.开始部署
3.1 jdk 1.8离线部署
查询本服务器预装的openjdk版本
卸载openjdk
1 2
| rpm -e --nodeps java-11-openjdk-11.0.ea.28-7.el7.x86_64 rpm -e --nodeps java-11-openjdk-headless-11.0.ea.28-7.el7.x86_64
|
查看java版本报错,已经卸载成功
下载jdk-8u161-linux-x64.tar.gz,放到/java目录下(如果没有请新建)
解压缩jdk-8u161-linux-x64.tar.gz
1 2
| cd /java tar -zxvf jdk-8u161-linux-x64.tar.gz
|
编辑/etc/profile
1 2 3 4 5 6 7 8
| vim /etc/profile
JAVA_HOME=/java/jdk1.8.0_161 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH
|
重新加载环境变量
1 2
| source /etc/profile java -version
|
3.2 jdk 1.8在线部署
查看yum库中jdk的版本,选择java-1.8.0安装
1 2 3
| yum search java|grep jdk
yum install java-1.8.0-openjdk* -y
|
配置环境变量
1 2 3 4 5 6 7 8 9 10 11
| vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64 JRE_HOME=$JAVA_HOME/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
source /etc/profile java -version
|
3.3 使用apollo用户创建数据库
#注意:由于架构图中的两个Mysql已经设置为主从模式,下面数据库操作仅在主数据库上进行,从数据库会自动同步 #下载数据库sql文件压缩包Apollo_db_sql.zip,并解压 #执行2个.sql文件 #给apollo用户授权ApolloConfigDB、ApolloPortalDB两个库的使用权限
1 2 3 4 5 6 7 8 9
| CREATE USER 'apollo'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'Apollo@147258'; # 给apollo用户授权ApolloConfigDB、ApolloPortalDB两个库的使用权限 use ApolloConfigDB; grant ALL PRIVILEGES on ApolloConfigDB.* to 'apollo'; FLUSH PRIVILEGES;
use ApolloPortalDB; grant ALL PRIVILEGES on ApolloPortalDB.* to 'apollo'; FLUSH PRIVILEGES;
|
3.4 配置Apollo
解压三个zip文件到/data/apollo
1 2 3
| unzip apollo-adminservice-1.6.2-github.zip -d /data/apollo/apollo-adminservice unzip apollo-configservice-1.6.2-github.zip -d /data/apollo/apollo-configservice unzip apollo-portal-1.6.2-github.zip -d /data/apollo/apollo-portal
|
3.4.1 部署adminservice
修改application-github.properties中的mysql信息后启动
1 2 3 4
| vi apollo-adminservice/config/application-github.properties spring.datasource.url = jdbc:mysql://192.168.150.11:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8 spring.datasource.username = apollo spring.datasource.password = Apollo@147258
|
在apollo-adminservice/scripts中执行starup.sh启动服务
1 2
| cd /data/apollo/apollo-adminservice/scripts ./startup.sh
|
更改日志文件位置(可不更改)
1 2 3 4
| vi /data/apollo/apollo-adminservice/apollo-adminservice.conf MODE=service PID_FOLDER=. LOG_FOLDER=/data/apollo/logs/100003172/
|
3.4.2 部署configservice
修改application-github.properties中的mysql信息后启动
1 2 3 4
| vi /data/apollo/apollo-configservice/config/application-github.properties spring.datasource.url = jdbc:mysql://192.168.150.11:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8 spring.datasource.username = apollo spring.datasource.password = Apollo@147258
|
在apollo-configservice/scripts中执行starup.sh启动服务
1 2
| cd /data/apollo/apollo-configservice/scripts ./startup.sh
|
更改日志文件位置(可不更改)
1 2 3 4
| vi /data/apollo/apollo-configservice/apollo-configservice.conf MODE=service PID_FOLDER=. LOG_FOLDER=/data/apollo/logs/100003171/
|
3.4.3 部署portal
修改apollo-env.properties更改环境信息
1 2 3 4 5 6 7
| vi /data/apollo/apollo-portal/config/apollo-env.properties
dev.meta=http://192.168.150.11:8080
|
修改application-github.properties中的mysql信息后启动
DataSource
1 2 3
| spring.datasource.url = jdbc:mysql://192.168.150.11:3306/ApolloPortalDB?characterEncoding=utf8 spring.datasource.username = apollo spring.datasource.password = Apollo@147258
|
在apollo-portal/scripts中执行starup.sh启动服务
1 2
| cd /data/apollo/apollo-portal/scripts ./startup.sh
|
更改日志文件位置(可不更改)
1 2 3 4
| vi /data/apollo/apollo-portal/apollo-configservice.conf MODE=service PID_FOLDER=. LOG_FOLDER=/data/apollo/logs/100003173/
|
4. 编辑Apollo服务并开机自启
4.1 编辑apollo-config.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat >/usr/lib/systemd/system/apollo-config.service <<EOF [Unit] Description=Apollo Service After=network.target
[Service] Type=simple Environment=JAVA_HOME=/data/java/jdk1.8.0_161 PIDFile=/data/apollo/apollo-configservice/apollo-configservice_dataapolloapollo-configservice.pid ExecStart=/data/apollo/apollo-configservice/scripts/startup.sh ExecStop=/data/apollo/apollo-configservice/scripts/shutdown.sh Restart=no
[Install] WantedBy=multi-user.target EOF
|
4.2 编辑apollo-admin.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat >/usr/lib/systemd/system/apollo-admin.service <<EOF [Unit] Description=Apollo Service After=network.target
[Service] Type=simple Environment=JAVA_HOME=/data/java/jdk1.8.0_161 PIDFile=/data/apollo/apollo-adminservice/apollo-adminservice_dataapolloapollo-adminservice.pid ExecStart=/data/apollo/apollo-adminservice/scripts/startup.sh ExecStop=/data/apollo/apollo-adminservice/scripts/shutdown.sh Restart=no
[Install] WantedBy=multi-user.target EOF
|
4.3 编辑apollo-portal.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat >/usr/lib/systemd/system/apollo-portal.service <<EOF [Unit] Description=Apollo Service After=network.target
[Service] Type=simple Environment=JAVA_HOME=/data/java/jdk1.8.0_161 PIDFile=/data/apollo/apollo-portal/apollo-portal_dataapolloapollo-portal.pid ExecStart=/data/apollo/apollo-portal/scripts/startup.sh ExecStop=/data/apollo/apollo-portal/scripts/shutdown.sh Restart=no
[Install] WantedBy=multi-user.target EOF
|
4.4 设置开机自启
1 2 3 4
| systemctl start apollo-config.service systemctl start apollo-admin.service systemctl start apollo-portal.service
|
1 2 3 4
| systemctl stop apollo-config.service systemctl stop apollo-admin.service systemctl stop apollo-portal.service
|
1 2 3 4
| systemctl enable apollo-config.service systemctl enable apollo-admin.service systemctl enable apollo-portal.service
|
5. 验证
打开浏览器,输入前台界面的登陆地址http://192.168.6.60:8070,注意前台登陆的端口默认是8070
默认账号apollo 密码 admin
可以尝试创建一个项目
与USE_START_DAEMON相关的错误在apollo-adminservice.conf开头加上一行USE_START_DAEMON=false就好了