升级Rexdeploy

如果你已经安装了旧版本,可以采用手动升级方法升级到最新即可

  • 手动升级
第1步 初始化模块
#安装依赖包
wget  https://download.osichina.net/tools/cpanm -O /usr/bin/cpanm; chmod +x /usr/bin/cpanm
cpanm Archive::Zip LWP::Protocol::https JSON  DBD::SQLite  DBIx::Simple SQL::Abstract IPC::System::Options

#查询Rex模块安装路径
perldoc -l Rex::Commands 
##/usr/local/Cellar/perl518/5.18.2/lib/site_perl/5.18.2/Rex/Commands.pm
##对应Rex模块的路径为 /usr/local/Cellar/perl518/5.18.2/lib/site_perl/5.18.2/Rex

cd RexDeployV3
\cp src/Rex/* /usr/local/Cellar/perl518/5.18.2/lib/site_perl/5.18.2/Rex/ -ar
第2步 灌入更新数据并修改配置

(1) 备份RexdeployV3目录的 lib 、 config 、Rexfile 这个2个目录和1个文件

(2) 修改对应的数据库配置 文件路径: lib/Deploy/Db/__module__.pmlib/Deploy/Core/__module__.pm

(3) 执行更新的SQL文件 数据库文件路径: install/sql/update_2018_0503.sql

(4) 对比原配置文件,修改或者新增对应的配置项 配置文件路径: config/config.yml 灰度发布相关可自定义,具体参照下面章节的灰度发布配置项

第3步 验证

初始化配置之后执行 cd RexDeployV3 && rex -T, 看到正常的返回提示,则证明安装已经成功.

第4步. 数据录入和校验

如果是灰度发布,则需要录入以下数据
灰度发布需要录入灰度相关数据(关于数据库字段的解释,可以参照SQL的注释)
录入示例 (灰度相关需要插入3条相关数据)

(1).插入负载均衡ID

UPDATE pre_server_detail
SET loadBalancerId = '负载均衡id1,负载均衡id2,负载均衡id..'
WHERE
    app_key IN ('server1', 'server2');

如果你的集群绑定多了负载均衡,loadBalancerId 可以添加多个,以英文,分割。loadBalancerId 可以在腾讯云负载均衡控制台查询。因为有可能1个应用绑定了内网负载和外网负载或者更多。

(2).插入URL校验数据

UPDATE pre_server_detail
SET
 url = 'http://127.0.0.1:6080/packController/runCmd.do?cmd=uptime',
 header = 'Content-Type:application/json',
 params = '{"cmd":"uptime"}',
 `require` = 'inputStr',
 requirecode = '200'
WHERE
    app_key = 'server1';

UPDATE pre_server_detail
SET
 url = 'http://127.0.0.1:7080/packController/runCmd.do?cmd=uptime',
 header = 'Content-Type:application/json',
 params = '{"cmd":"uptime"}',
 `require` = 'inputStr',
 requirecode = '200'
WHERE
    app_key = 'server2';

这个数据主要是发布完成后校验url,只有校验url正常之后才能把节点加上去。 其中当params 不传时为get请求,当params 有参数为post请求。header有多个时用分号;间隔。 require的意思是返回内容校验,requirecode 返回状态码校验。如上示例,校验返回内容是否有inputStr 以及返回状态是否为200,如果其中任何1个不成立,该灰度发布就会终止。不会把异常的节点加上去。

(3).插入灰度发布顺序

INSERT INTO load_key_sorts (local_name, app_key_sort)
VALUES
    ('server','server1;server2');

指定灰度发布的顺序,如上,会先发布server1,然后再发布server2。当然可以有多个同时发。 如values为 ('server','server1 server2 server3;server5 server6 server7') ; 会先发布server1 server2 server3然后再发布server5 server6 server7。

results matching ""

    No results matching ""