Apollo安装配置
LiuSw Lv6

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版本

1
rpm -qa |grep jdk

卸载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版本报错,已经卸载成功

1
java -version

下载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
# set java environment
# 根据自己的路径设置(带bin目录的)
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
#local.meta=http://localhost:8080
dev.meta=http://192.168.150.11:8080
#fat.meta=http://fill-in-fat-meta-server:8080
#uat.meta=http://fill-in-uat-meta-server:8080
#lpt.meta=${lpt_meta}
#pro.meta=http://fill-in-pro-meta-server: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就好了

 评论