• 饮冰三年-人工智能-Python-64-Apollo之06测试环境部署


    上一节:饮冰三年-人工智能-Python-58-Apollo之05Python实例

    一、准备工作

    本次使用的是测试服务器具体信息如下:

    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=20.04
    DISTRIB_CODENAME=focal
    DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

    版本要求:
    a: Java
    Apollo服务端:1.8+
    Apollo客户端:1.7+
    b: MySQL
    版本要求:5.6.5+

    注意:Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

    考虑后期维护追踪,这里将使用的软件包统一存储在百度云盘中,仅供参考
    地址:https://pan.baidu.com/s/1gZf80TLHAQHDMIaX-Ht_AA 提取码为:6666

    文件安装目录

    文件名

    作用

    地址

    jdk1.8.0_256

    用于存放jdk文件内容

    /usr/lib/jvm

    mysql 用于存放mysql文件内容

    /usr/local/mysql

    apollo 用于存放apollo文件内容 /usr/lib/apollo

    二、部署步骤

    2.1 安装Java:

            1:每个场景下使用的jdk版本不同,可以按照自己所需的版本要求,下载安装包。

            2:把jdk包解压到安装的路径文件夹下(/usr/lib/jvm)

    3:配置环境变量之JDK
    vim /etc/profile
    添加如下内容:JAVA_HOME根据实际目录来

    export JAVA_HOME=/usr/local/jdk
    export CLASSPATH=$JAVA_HOME/lib/
    export PATH=$PATH:$JAVA_HOME/bin
    export PATH JAVA_HOME CLASSPATH

    4:执行命令重启配置文件

    source /etc/profile
    5:检验Java是否安装成功
    java -version

    注意:如果启动服务的时候提示

    Unable to find Java

    sudo ln -s /usr/lib/jvm/jdk1.8.0_261/bin/java /sbin/java

    2.2 安装mysql:

            1:每个场景下使用的版本不同,可以按照自己所需的版本要求,下载安装包。

            2:把安装包解压到安装的路径文件夹下(/usr/lib/mysql)

    3:在/usr/local/mysql目录下创建data目录
    sudo mkdir /usr/lib/mysql/data

    4:添加mysql用户,并更改mysql目录下所有的目录及文件夹所属的用户组和用户,以及权限
    sudo useradd mysql
    sudo chown -R mysql:mysql /usr/lib/mysql
    sudo chmod -R 755 /usr/lib/mysql

    5:编译安装并初始化mysql,务必记住初始化输出日志末尾的密码(数据库管理员临时密码)  
    cd /usr/lib/mysql/bin 
    sudo ./mysqld --initialize --user=mysql --datadir=/usr/lib/mysql/data --basedir=/usr/lib/mysql

     注意:如果安装过程中出现:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    解决方法:sudo apt-get install libaio1

    6:编辑配置文件my.cnf,添加配置如下

    cd /etc/mysql

    [mysqld]
    datadir=/usr/lib/mysql/data
    port=3306
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    symbolic-links=0
    max_connections=400
    innodb_file_per_table=1
    lower_case_table_names=1
    vim 编辑内容

    7:添加软连接,并重启mysql服务

    sudo ln -s /usr/lib/mysql/support-files/mysql.server /etc/init.d/mysql
    sudo ln -s /usr/lib/mysql/bin/mysql /usr/bin/mysql
    sudo service mysql restart   

    8:登录mysql,修改密码

    mysql -u root -p
    Enter password:注意这里的密码就是步骤5中的临时密码
    mysql>set password for root@localhost = password('yourpass');

    9:开发远程连接

    连上数据库
    use mysql
    设置用户
    update user set host='%' where user='root';
    刷新
    flush privileges;

    连接上MySQL后,可以通过如下命令检查:
    SHOW VARIABLES WHERE Variable_name = 'version';

    2.3 安装Apollo:

    分布式部署需要事先确定部署的环境以及部署方式。

    • DEV    开发环境
    • UAT    测试环境
    • PRO   生产环境

    Portal部署在生产环境的机房,通过它来直接管理DEV、UAT、PRO等环境的配置

    Meta Server、Config Service和Admin Service在每个环境都单独部署,使用独立的数据库

       2.3.1 创建数据库:

         Apollo服务端共需要两个数据库:ApolloPortalDBApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

         需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如dev、uat和pro分别部署3套ApolloConfigDB。(初始化脚本在 一、准备工作 提供的资料中)

         在数据库中运行以上脚本

        2.3.1.1  验证:

                 select `Id`, `Key`, `Value`, `Commentfrom `ApolloPortalDB`.`ServerConfiglimit 1;

         select `Id`, `Key`, `Value`, `Comment` from `ApolloConfigDBDEV`.`ServerConfig` limit 1;

         2.3.1.2  调整配置:

              update `ApolloPortalDB`.`ServerConfig` set value ='dev,uat,pro' where `Key` = 'apollo.portal.envs'

     2.3.2 部署Apollo服务端:

    1:文件安装

    创建文件夹,用于安装apollo

    sudo mkdir /usr/lib/apollo

    sudo mkdir /usr/lib/apollo/adminservice

    sudo mkdir /usr/lib/apollo/configservice

    sudo mkdir /usr/lib/apollo/portal

    将准备资料中的文件分别放置到相应的文件夹下,并进行解压(unzip 命令解压)

    2:文件配置

    sudo vim /usr/lib/apollo/configservice/config/application-github.properties

    注意spring.datasource.url:spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDBPRO?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

    sudo vim /usr/lib/apollo/adminservice/config/application-github.properties

    注意spring.datasource.url:spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDBPRO?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

    sudo vim /usr/lib/apollo/portal/config/application-github.properties

    注意spring.datasource.url:spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&useSSL=false&serverTimezone=UTC

    spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDBPRO?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    spring.datasource.username = root
    spring.datasource.password = 123
    application-github.properties

    sudo vim /usr/lib/apollo/portal/config/apollo-env.properties

    local.meta=http://localhost:8080
    dev.meta=http://localhost:8080
    fat.meta=http://localhost:8080
    uat.meta=http://localhost:8080
    lpt.meta=${lpt_meta}
    pro.meta=http://localhost:8080
    apollo-env.properties

    3:启动

    sudo /usr/lib/apollo/portal/scripts/startup.sh
    sudo /usr/lib/apollo/adminservice/scripts/startup.sh
    sudo /usr/lib/apollo/configservice/scripts/startup.sh

    4:验证

     2.3.3 部署UAT:

    我们将uat环境部署到另一台的服务器上。

    2.3.3.1.修改vim /usr/lib/apollo/portal/config/apollo-env.properties

    local.meta=http://localhost:8080
    dev.meta=http://localhost:8080
    fat.meta=http://localhost:8080
    uat.meta=http://XX.X.X.XXX:8080
    lpt.meta=${lpt_meta}
    pro.meta=http://localhost:8080
    apollo-env.properties

    登录到47的服务器

    2.3.3.2 安装Java

    2.3.3.3 部署Apollo

    sudo mkdir /usr/lib/apollo

    sudo mkdir /usr/lib/apollo/adminservice

    sudo mkdir /usr/lib/apollo/configservice

    同样的调整配置

    spring.datasource.url = jdbc:mysql://XX.X.X.X:3306/ApolloConfigDBUAT?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    spring.datasource.username = root
    spring.datasource.password = 123
    application-github.properties

    注意:调用bash的时候出现curl command not found

    解决办法:

    apt-get install curl

     2.3.3 部署其他环境:

           按照同样的步骤我们部署其他的环境......至此,Apollo环境部署基本成功

     

    三、配置项整理

    主要思想:把程序启动时用到的环境变量,从Apollo中获取。整理相应的配置项主要来源(Docker中原有的环境变量:主+config.py 中用到的配置:辅)

    注意:保密,

    四、Apollo应用配置

    将步骤三中的内容相应的配置到Apollo相应的各个项目中

    4.1 调整部门信息

    4.2 创建一个项目(cy_common)用于存放公共属性

    4.2.1 创建项目,设置AppID和应用名称

    4.2.2 添加命名空间(common_config),设置公共属性值,用于存储各个系统中公共的配置项,如:OA_HOST、ERP_HOST、MES_HOST

     4.2.3 配置属性值,并发布

    4.2.4 同样的步骤,添加配置命名空间(common_rabbit_config)

    4.3 同样的步骤创建一个项目(ERP)用于存放ERP相关信息

    4.3.1 创建项目,设置AppID和应用名称,与4.2.1 类似,不再赘述

    4.3.2 添加命名空间,关联公共命名空间(common_config和common_rabbit_config),并发布

    4.3.3 添加erp系统专属命名空间(erp_config)配置信息并发布

    4.4 同样的步骤创建一个项目(OA、MES)用于存放相关信息

    4.5 效果展示与测试

    4.5.1 整体结果

    4.5.2 以ERP系统

    整体分为三个环境(DEV、UAT、PRO);每个环境又包括多个命名空间(common_config、common_rabbit_config、erp_config....)

    每个环境(DEV、UAT、PRO);对应命名空间相互独立,可单独发布,互不影响(common_config、common_rabbit_config、erp_config)

    五、Docker环境配置与代码升级

    下一节:饮冰三年-人工智能-Python-65-Apollo之07 Docker环境部署

  • 相关阅读:
    11.13 同步异步协程
    GIL及进程池
    线程
    守护进程-互斥锁-IPC
    进程
    网络编程
    异常的处理
    面向对象编程2
    第一章 python学习,个人对计算机硬件的一些理解
    ActiveReports之直接打印报表
  • 原文地址:https://www.cnblogs.com/YK2012/p/14051725.html
Copyright © 2020-2023  润新知