Apollo安装部署

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版本
rpm -qa |grep jdk
# 卸载openjdk
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版本报错,已经卸载成功
java -version

# 下载jdk-8u161-linux-x64.tar.gz,放到/java目录下(如果没有请新建)
# 解压缩jdk-8u161-linux-x64.tar.gz
cd  /java
tar -zxvf jdk-8u161-linux-x64.tar.gz

# 编辑/etc/profile
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

# 重新加载环境变量
source  /etc/profile
java -version

3.2 jdk 1.8在线部署

# 查看yum库中jdk的版本
yum search java|grep jdk
# 选择java-1.8.0安装
yum install java-1.8.0-openjdk* -y
# 配置环境变量
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文件
# 创建用户
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
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信息后启动
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 = 123456

# 在apollo-adminservice/scripts中执行starup.sh启动服务
cd /data/apollo/apollo-adminservice/scripts
./startup.sh
# 更改日志文件位置(可不更改)
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信息后启动
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 = 123456

# 在apollo-configservice/scripts中执行starup.sh启动服务
cd /data/apollo/apollo-configservice/scripts
./startup.sh
# 更改日志文件位置(可不更改)
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更改环境信息
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
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启动服务
cd /data/apollo/apollo-portal/scripts
./startup.sh
# 更改日志文件位置(可不更改)
vi /data/apollo/apollo-portal/apollo-configservice.conf
MODE=service
PID_FOLDER=.
LOG_FOLDER=/data/apollo/logs/100003173/

启动报错为UTC相关

# 解决办法
在jdbc连接字符串后添加characterEncoding=utf8&serverTimezone=UTC

4. 编辑Apollo服务并开机自启

4.1 编辑apollo-config.service

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

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

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 设置开机自启

# 启动
systemctl start apollo-config.service
systemctl start apollo-admin.service
systemctl start apollo-portal.service

# 停止
systemctl stop apollo-config.service
systemctl stop apollo-admin.service
systemctl stop apollo-portal.service

# 开机自启
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
# 可以尝试创建一个项目

留下评论