• 沒有找到結果。

3.1 导读

本次实践基于Haproxy的服务名、IP进行分流,实现灰度发布,关于Haproxy的更多信 息请参考haproxy官网 。

说明

● 本文中使用HA-Proxy version 1.5.18,供其他版本参考。

● 本文提供的shell命令仅供参考,具体命令还以用户实际场景为准。

● 本文试例中的test_A、test_B分别指A边用户和B边用户。

● 本文中添加haproxy服务的主机是root用户。(若为其他用户,需添加包含haproxy目录文件 的权限)

最佳实践 3 实践--基于 haproxy 灰度发布

3.2 实现方式一:替换 haproxy 配置文件

3.2.1 实现原理

● 在本地修改好的haproxy配置文件上传到私有发布仓库中。

● 通过部署任务将发布仓库的haproxy配置文件拷贝到搭建了haproxy的机器上。

● 通过部署平滑的启动haproxy服务。

3.2.2 操作步骤

步骤1 本地修改haproxy配置文件。

● 本地新建haproxy_A.cfg配置文件内容:

#server test_A 10.10.10.10:8080 server test_B 10.10.10.11:8080

haproxy_A.cfg配置文件表示:下线test_A边流量

● 本地新建haproxy_AB.cfg配置文件内容:

server test_A 10.10.10.10:8080

#server test_B 10.10.10.11:8080

haproxy_AB.cfg配置文件表示:上线test_A边流量同时下线test_B边流量

● 本地新建haproxy_B.cfg配置文件内容:

server test_A 10.10.10.10:8080 server test_B 10.10.10.11:8080

haproxy_B.cfg配置文件表示:上线test_B边流量

最佳实践 3 实践--基于 haproxy 灰度发布

步骤2 将修改后的haproxy配置文件上传至发布仓库中.

1. 登录首页,进入目标项目,单击顶部导航栏“发布”,进入发布详情页面。

– 主机组:选择部署haproxy服务的主机组。

– 选择软件包:选择发布仓库中的haproxy配置文件。(下线A,上线A 下线 B,再上线B)

– 下载到主机的部署目录:填写haproxy.cfg配置文件所在的目录。

最佳实践 3 实践--基于 haproxy 灰度发布

2. 配置“执行shell命令”任务步骤。

参考命令:

#!/bin/sh

#haproxy_A.cfg为发布仓库的配置文件名称,用户根据实际情况填写 Haproxy_cfg_Name="haproxy_A.cfg"

#/etc/haproxy/为用户安装haproxy服务机器上的haproxy.cfg配置文件的路径,用户根据实际情况填写 Haproxy_cfg_Path="/etc/haproxy"

#serviceName为切流量的服务名称 serviceName="haproxy"

port="1234" #haproxy的监听端口 now_time=`date +%Y%m%d%H%M%S`

cp $Haproxy_cfg_Path/haproxy.cfg $Haproxy_cfg_Path/haproxy.cfg.$now_time /usr/sbin/$serviceName -c -q -f $Haproxy_cfg_Path/$Haproxy_cfg_Name checkflag=$?

if [ "$checkflag" -eq 0 ] then

mv $Haproxy_cfg_Path/$Haproxy_cfg_Name $Haproxy_cfg_Path/haproxy.cfg sudo iptables -I INPUT -p tcp --dport $port --syn -j DROP

sleep 1

service haproxy reload #(参考命令)若已将haproxy注册成服务的形式

# 参考命令(没有注册成服务):/usr/sbin/$serviceName D f /etc/$serviceName/$serviceName.cfg -p /var/run/$serviceName.-pid -sf $(cat /var/run/$serviceName.-pid)

最佳实践 3 实践--基于 haproxy 灰度发布

sudo iptables -D INPUT -p tcp --dport $port --syn -j DROP

● 通过部署任务中的“执行shell命令”步骤修改用户haproxy机器上的配置文件。

● 通过部署任务中的“执行shell命令”步骤平滑的重启haproxy服务。

3.3.2 操作步骤

2. 配置第一个“执行shell命令”任务步骤:修改用户的haproxy.cfg配置文件。

#!/bin/sh

#/etc/haproxy/为用户安装haproxy服务机器上的haproxy.cfg配置文件的路径,用户根据实际情况填写 Haproxy_cfg_Path="/etc/haproxy"

online_servername="" #上线主机名 offline_servername="" #下线主机名 port="1234" #haproxy的监听端口 now_time=`date +%Y%m%d%H%M%S`

cp $Haproxy_cfg_Path/haproxy.cfg $Haproxy_cfg_Path/haproxy.cfg.$now_time

[[ "$up_servername" != '' ]] && sed -i "/server $up_servername/s/#//g" $Haproxy_cfg_Path/

最佳实践 3 实践--基于 haproxy 灰度发布

相關文件