携程Apollo一键编译脚本+部署实现
Posted aiaitie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了携程Apollo一键编译脚本+部署实现相关的知识,希望对你有一定的参考价值。
系统编译安装
- ubuntu16.11
- java 1.8
系统规划
- Portal共用
- 其它环境每个两台机器
- mysql都做主从,所以每个环境的机器上都会安装admin 服务,config服务,以及一个mysql服务
env | ip | usage |
---|---|---|
all | 192.168.1.1 | portal |
dev | 192.168.2.1 | admin+config+configdb |
dev | 192.168.2.2 | admin+config+configdb |
test | 192.168.3.1 | admin+config+configdb |
test | 192.168.3.2 | admin+config+configdb |
pre | 192.168.4.1 | admin+config+configdb |
pre | 192.168.4.2 | admin+config+configdb |
pro | 192.168.5.1 | admin+config+configdb |
pro | 192.168.5.2 | admin+config+configdb |
#!/bin/bash
## 先安装jdk1.8以上到/usr/local/java 并设置系统环境变量
java -version
base_home="/home/test/Desktop"
############################################################################
dev_meta="http://192.168.2.1:8080,http://192.168.2.2:8080"
fat_meta="http://192.168.3.1:8080,http://192.168.3.2:8080"
uat_meta="http://192.168.4.1:8080,http://192.168.4.2:8080"
pro_meta="http://192.168.5.1:8080,http://192.168.5.2:8080"
########### portal 数据库 ,共用一个
# apollo portal db info
apollo_portal_db_url=jdbc:mysql://192.168.1.1:3306/ApolloPortalDB?characterEncoding=utf8
apollo_portal_db_password=portal_root_db_password
############ 四个环境的配置数据库
# apollo dev config db info
dev_apollo_config_db_url=jdbc:mysql://192.168.2.1:3306/ApolloConfigDB?characterEncoding=utf8
dev_apollo_config_db_password=dev_config_root_db_password
# apollo fat config db info
fat_apollo_config_db_url=jdbc:mysql://192.168.3.1:3306/ApolloConfigDB?characterEncoding=utf8
fat_apollo_config_db_password=fat_config_root_db_password
# apollo uat config db info
uat_apollo_config_db_url=jdbc:mysql://192.168.4.1:3306/ApolloConfigDB?characterEncoding=utf8
uat_apollo_config_db_password=uat_config_root_db_password
# apollo pro config db info
pro_apollo_config_db_url=jdbc:mysql://192.168.5.1:3306/ApolloConfigDB?characterEncoding=utf8
pro_apollo_config_db_password=pro_config_root_db_password
########################## 以下勿更改
build_sh() {
cd "$base_home/apollo"
cp -pr apollo apollo_$1
cd apollo_$1/scripts
# apollo config db info
apollo_config_db_url=$2
apollo_config_db_username=root
apollo_config_db_password=$3
# apollo portal db info
apollo_portal_db_url=$4
apollo_portal_db_username=root
apollo_portal_db_password=$5
# meta server url, different environments should have different meta server addresses
dev_meta=$6
fat_meta=$7
uat_meta=$8
pro_meta=$9
META_SERVERS_OPTS="-Ddev_meta=$dev_meta -Dfat_meta=$fat_meta -Duat_meta=$uat_meta -Dpro_meta=$pro_meta"
# =============== Please do not modify the following content =============== #
# go to script directory
cd "${0%/*}"
cd ..
# package config-service and admin-service
echo "==== starting to build config-service and admin-service ===="
mvn clean package -DskipTests -pl apollo-configservice,apollo-adminservice -am -Dapollo_profile=github -Dspring_datasource_url=$apollo_config_db_url -Dspring_datasource_username=$apollo_config_db_username -Dspring_datasource_password=$apollo_config_db_password
echo "==== building config-service and admin-service finished ===="
echo "==== starting to build portal ===="
mvn clean package -DskipTests -pl apollo-portal -am -Dapollo_profile=github,auth -Dspring_datasource_url=$apollo_portal_db_url -Dspring_datasource_username=$apollo_portal_db_username -Dspring_datasource_password=$apollo_portal_db_password $META_SERVERS_OPTS
echo "==== building portal finished ===="
echo "==== starting to build client ===="
mvn clean install -DskipTests -pl apollo-client -am $META_SERVERS_OPTS
echo "==== building client finished ===="
}
####################初始化环境,下载apollo
sudo apt-get install -y maven git
sudo sed -i ‘/<mirrors>/a<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>‘ /etc/maven/settings.xml
mkdir -p apollo
cd apollo
git clone https://github.com/ctripcorp/apollo.git
source /etc/profile
sudo mv /usr/bin/java /usr/bin/java_bak
sudo ln -s /usr/local/java/bin/java /usr/bin/
###########################################
##### dev
build_sh "dev" "$dev_apollo_config_db_url" "$dev_apollo_config_db_password" "$apollo_portal_db_url" "$apollo_portal_db_password" "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
build_sh "fat" "$fat_apollo_config_db_url" "$fat_apollo_config_db_password" "$apollo_portal_db_url" "$apollo_portal_db_password" "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
build_sh "uat" "$uat_apollo_config_db_url" "$uat_apollo_config_db_password" "$apollo_portal_db_url" "$apollo_portal_db_password" "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
build_sh "pro" "$pro_apollo_config_db_url" "$pro_apollo_config_db_password" "$apollo_portal_db_url" "$apollo_portal_db_password" "$dev_meta" "$fat_meta" "$uat_meta" "$pro_meta"
######################### 添加本地jar包到本地mvn
dev_home="$base_home/apollo/apollo_dev"
apollo_version=`ls $dev_home/apollo-client/target/apollo-client-*.jar |grep -v sources |sed ‘s/.jar//g‘ |sed "s#.*apollo-client-##g"`
mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-client -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-client/target/apollo-client-$apollo_version.jar
mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-core -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-core/target/apollo-core-$apollo_version.jar
mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-buildtools -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-buildtools/target/apollo-buildtools-$apollo_version.jar
mvn install:install-file -DgroupId=com.ctrip.framework.apollo -DartifactId=apollo-common -Dversion=$apollo_version -Dpackaging=jar -Dfile=$dev_home/apollo-common/target/apollo-common-$apollo_version.jar
#mkdir -p /opt/setting
#echo ‘env=DEV‘ > /opt/setting/server.properties
安装Portal
Portal是共用的,代码都一样,所以这里从dev环境拿个编译包就可以
- portal服务器的mysql上面执行该SQL : apollo/apollo_dev/scripts/sql/apolloportaldb.sql
- 修改数据表ApolloPortalDB.ServerConfig配置如下,修改 apollo.portal.envs : dev,fat,uat,pro
- 上传 apollo/apollo_dev/apollo-portal/target/apollo-portal-0.11.0-SNAPSHOT-github.zip 到 portal服务器(192.168.1.1)/data/apollo_portal
- unzip apollo-portal-0.11.0-SNAPSHOT-github.zip
- 启动portal ./scripts/startup.sh
- 访问portal管理后台 http://192.168.1.1:8080/ . 默认管理员 : apollo / admin
安装config服务
···这里以DEV环境设置为例···
- dev环境的两个mysql做好主从,执行 apollo/apollo_dev/scripts/sql/apolloconfigdb.sql 的sql文件创建库表
- 修改apolloconfigdb库中的ServerConfig
- 修改 eureka.service.url : http://192.168.2.1:8080/eureka/,http://192.168.2.1:8080/eureka/
- 这里根据环境不同修改,这里配置的是dev环境的IP
- 上传apollo/apollo_dev/apollo-configservice/target/apollo-configservice-0.11.0-SNAPSHOT-github.zip 到 dev两个机器的/data/apollo_config 目录里面
- unzip apollo-configservice-0.11.0-SNAPSHOT-github.zip
- 启动: ./scripts/startup.sh
安装admin服务
- 上传apollo/apollo_dev/apollo-adminservice/target/apollo-adminservice-0.11.0-SNAPSHOT-github.zip 到dev两个服务器的/data/apollo_admin 目录里面
- unzip apollo-adminservice-0.11.0-SNAPSHOT-github.zip
- 启动 scripts/startup.sh
- 如果能看懂这个图,Apollo的基本架构也就理解了。下一篇就开始来讲讲Apollo的一些组件,或是服务
以上是关于携程Apollo一键编译脚本+部署实现的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 16.04下搭建基于携程Apollo(阿波罗)配置中心单机模式