云上部署实践详解
上章节介绍完云上应用架构及产品选型,接下来本章将重点介绍下上云迁移的实践过程。在实际迁移过程中甚至会更加具体。由于文章内容已经很多了,所以在接下来实践迁移过程中会有部分内容会省略。先介绍一下整体迁移流程:
迁移整个应用到阿里云涉及到几个阶段,首先是数据库配置和数据迁移,然后是基础服务的部署,例如Dubbo服务和消息队列服务以及存储服务,其次是应用部署和配置,之后是功能测试以及集成测试,最后是流量切割和安全加固。
1、 数据库准备和配置
前面章节提到我们将原来自建的MySQL数据库改用云上的RDS替换,针对性能要求特别高的数据库(比如单台高配物理服务器已经无法满足性能要求的情况下),采用云上DRDS分布式关系数据库替换。下面主要介绍云上RDS数据库的创建和配置。
1.1 RDS配置
a) 创建实例
b) 初始化配置
为了数据库的安全稳定,在开始使用RDS实例前,需要将访问数据库的IP地址或者IP段加到目标实例的白名单中。正确使用白名单可以让RDS得到高级别的访问安全保护,建议定期维护白名单。
c) 创建初始账号
e) 创建用户
f) 数据迁移
当数据库、迁移账号都创建完成后,就可以开始配置迁移任务了。同理将线下的数据以此方式迁移到云上数据库中。下面详细介绍下具体的配置步骤。
当点击查看后,可以查看到具体的预检查失败原因及修复方法:
当修复完成后,可以在任务列表中,选择这个任务,然后重新启动预检查。
g) 其他
1.2 Redis配置
前面提到由于传统自建Redis数据库通常存在集群节点扩容复杂,管理维护难等问题。所以我们改用云上数据库 Redis 版来替代,它具有性能卓越,弹性扩容,数据安全性高,可用性高,秒级监控,简单易用等优势。下面介绍云数据库Redis的创建和配置:
a) 创建实例
由于云数据库 Redis 提供的数据库服务与原生的数据库服务完全兼容,连接数据库的方式也基本类似。任何兼容 Redis 协议的客户端都可以访问云数据库 Redis 版服务,可以根据自身应用特点选用任何 Redis 客户端。
注意:云数据库 Redis 版仅支持阿里云内网访问,不支持外网访问,即只有在同节点的 ECS上安装 Redis 客户端才能与云数据库建立连接并进行数据操作。
Redis 的客户端请参考 http://redis.io/clients
c) 数据迁移
将自建 Redis 中的数据迁移到云 Redis 实例中
使用数据传输 DTS可以进行 Redis 实例间的数据迁移。如果源实例为自建 Redis,那么 Redis 迁移支持增量数据同步功能,可以实现在本地应用不停写的情况下,平滑完成 Redis 数据迁移。
d) 迁移前置条件
如果待迁移的 Redis 是通过专线接入阿里云 VPC 的自建 Redis,或是专有网络的云 Redis 实例,那么需要架设代理,进行数据转发。下面介绍如何使用 nginx 进行 Redis 的转发配置,让 DTS 服务器可以访问专有网络内的 Redis 实例。
yum install nginx
例如,需要访问的 Redis 的连接地址为:
r-bp1b294374634044.redis.rds.aliyuncs.com:6379, nginx 代理转发端口为3333,那么 tcp 相关配置如下:
如果是传统IDC中自建redis,那么将上面redis的地址为内网地址。原理就是通过机房中具有公网IP 的nginx进行转发。
如上图所示,可以通过访问 nginx 代理转发端口来访问 Redis 实例。
e) 告警设置
1.3 HBase配置
前面提到我们改用云上数据库HBase版来替换原来的MongoDB集群。HBase的高并发大数据量等特性非常适合海量数据存储,业务大屏,安全风控,搜索等场景。下面介绍下HBase的创建和配置:
a) HBase集群规格选型
core数目 < 6,选择 2cpu4g即可
6 <= core数目 <20 选择4cpu8g即可
20 <= core数目 < 50 选择8cpu16g即可
50 <= core数目 < 100 选择 16cpu32g即可
SSD云盘比高效云盘,更加稳定,且对读有更好的性能,特别是随机读
独享通用规格:
独享比通用更加稳定,也就是24个小时内,独享这些资源,价格更加贵一些
规格大小:
4cpu8g属于入门版本,规格大一些对于热点有更好的支持。但是越大,GC的影响就越大。 推荐8cpu32g、16cpu64g的机型.
对于响应延迟要求高的:可以选择 独享的8cpu32g或者16cpu64g的机型,再加SSD云盘
对于QPS不是很大的,比如1w~10w QPS可以选择 4cpu8g、4cpu16g的
对于读要求高的选择:1:4内存的机型,读一般的1:2
4台 8cpu32g 4*5.5T 不可添加节点,可以向16cpu升级
4台 16cpu64g 8*5.5T 不可添加节点,可以向24cpu升级
4+n台 24cpu96g 12*5.5T 可以添加节点
b) 创建HBase集群
c) 开源软件访问
当新建一个集群以后,阿里云提供了一种快捷的方式来访问集群上的开源组件,如HBase、Ganglia和HDFS,操作方式如下:
d) 数据迁移
可通过数据集成工具建立数据同步任务来实现数据导入。方法请参考下面链接:
https://yq.aliyun.com/articles/165981?spm=a2c4g.11186623.2.9.yY4Noh
1.4 Elasticsearch配置
由于传统自建Elasticsearch集群存在性能不足,集群节点扩容复杂,管理维护难度高等问题,因此我们改用云上Elasticsearch服务,它具有丰富的预置插件(IK Analyzer,pinyin Analyzer,smart Chinese Analysis Plugin,Mapper Attachments Type plugin等等),还包括集成X-pack插件提供企业级权限管控,实时监控等强大功能。下面主要介绍如果创建和配置Elasticsearch集群。
a) 购买ES集群
b) 基本配置
password:是在购买阿里云ES界面中指定的密码
注意:若创建的阿里云Elasticsearch实例版本包含 with_X-Pack 信息,则访问该阿里云ES实例时,必须指定用户名和密码。否则不用指定用户名和密码。
创建成功响应:
d) 数据导入
离线数据导入Elasticsearch,请参考下面文章:
https://help.aliyun.com/document_detail/62584.html?spm=a2c4g.11186623.6.557.uwwFYu
e) 配置监控报警
阿里云Elasticsearch已支持对实例进行监控,并允许通过短信报警。可根据需求,自定义报警阈值。
强烈建议配置如下监控报警:
集群状态。(主要监控集群状态是否为绿色或红色)
节点磁盘使用率(%)。(报警阀值控制在75%以下,不要超过80%)
节点HeapMemory使用率(%)。(报警阀值控制在85%以下,不要超过90%)
节点CPU使用率(%)。(报警阀值控制在95%以下,不要超过95%)
节点load_1m。(以CPU核数的80%为参考值)
集群查询QPS(Count/Second)。
集群写入QPS(Count/Second)。
两种方式配置监控报警:
登录ES控制台,进入ES实例基本信息界面,点击集群监控转到ES云监控。
或者使用账号登录阿里云控制台,选择产品导航栏下的云监控,再选择云服务监控菜单栏下的Elasticsearch。
监控指标配置方法:
2、 基础服务准备和配置
2.1 OSS对象存储配置
由于传统的自建NFS文件系统存在可靠性差,成本高,扩展要停机等问题,所以我们改用云上的对象存储OSS服务代替,下面简单介绍下OSS对象存储创建和配置方法:
a) 开通OSS服务
b) 购买OSS服务
c) 创建存储空间
d) 上传文件
上传下载方式更加安全(临时、灵活的赋权鉴权)。
成本低,不需要准备很多服务器。移动应用直联云存储,只有控制流走应用服务器。
高并发,支持海量用户(OSS有海量的上传和下载带宽)。
弹性(OSS有无限扩容的存储空间)。
方便,可以方便的对接到媒体转码服务-视频多端适配,图片处理服务,CDN加速下载等。
2.2 消息队列服务配置
传统自建开源kafka消息队列通常存在各版本bug多,得不到官方技术支持,遇到疑难问题只能抓瞎等问题。所以我们改用云上消息队列kafka,它针对开源kafka提供全托管服务,彻底解决开源产品长期以来的痛点,用户只需专注于业务开发,无需部署运维,具有低成本,更弹性,更可靠等优势。下面介绍消息队列kafka的创建和配置。
a) 开通消息队列kafka服务
单击立即开通进入消息队列 Kafka 服务开通页面,根据提示完成服务开通。
b) 创建资源
使用消息队列 Kafka 消息收发服务之前,先在消息队列 Kafka 控制台上创建资源否则将无法通过鉴权认证及使用相关的运维功能。创建资源的步骤如下:
创建 Topic 资源
创建 Consumer Group
创建阿里云 Access Key ID 和 Access Key Secret
创建消息主题(Topic)
消息主题(Topic)是消息队列 Kafka 里对消息进行的一级归类,比如可以创建“Topic_Trade”这一主题用来识别交易类消息。 使用消息队列 Kafka 的第一步就是先为应用创建 Topic。
请按照以下步骤创建 Topic:
c) 发送消息测试
创建文本文件:kafka_client_jaas.conf
可以使用 Demo 库中的文件进行修改,内容形式如下:
设置 kafka_client_jaas.conf 的路径
kafka_client_jaas.conf 的路径是系统变量,有以下两种办法进行设置(这里假设 kafka_client_jaas.conf 放在 /home/admin 下面,实际部署时请将其修改为自己的路径)。
程序启动时,启动 JVM 参数:
-Djava.security.auth.login.config=/home/admin/kafka_client_jaas.conf
在代码中设置参数(需要保证在 Kafka Producer 和 Consumer 启动之前):
下载根证书。
将根证书放入某个目录下,并且其路径直接配置在代码中。
请参考以下示例代码进行修改:
加载配置文件
请参考以下示例代码进行修改:
d) 发布消息
使用 Java SDK 发送消息
示例代码如下:
e) 订阅消息测试
使用 Java SDK 订阅消息
示例代码如下:
e.printStackTrace();53. }54. }
2.3 构建分布式应用配置中心
在云上我们改用阿里云的应用配置管理ACM产品。云上应用配置管理是一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。基于该应用配置中心产品,可以在微服务、DevOps、大数据等场景下极大地减轻配置管理的工作量,增强配置管理的服务能力。下面介绍如何利用ACM创建配置中心:
操作步骤:
1) 在ACM 上创建命名空间
a) 登录 ACM 控制台
b) 在左侧导航栏选择 命名空间,单击右上角的添加按钮:
2) 在命名空间下创建配置
在配置列表中选择对应环境,例如生产环境;
点击新建配置;
提供 JSON,XML 格式语法校验能力。在配置格式中选择不同的格式,会提供不同格式预发校验,减少语法格式导致的问题。
点击发布
按照以上步骤完成所有应用配置的创建工作;
创建完配置后,就可以在代码里使用了。由于配置容易发生变化,因此经常需要在 ACM 控制台编辑配置。ACM 控制台提供了搜索、查看、编辑、删除配置等功能。
3) 代码使用API监听配置
关于如何使用API监听配置请参考阿里云官网介绍
https://help.aliyun.com/document_detail/59964.html?spm=a2c4g.11186623.6.546.bpA9S0
2.4 大数据计算服务配置
云上我们改用阿里云MaxCompute作为大数据离线计算服务,我们需要提前完成MaxCompute服务创建,初始化配置以及数据导入等工作,以便大数据开发人员快速展开大数据开发工作。下面介绍下MaxCompute创建和配置以及数据导入。
1) 开通MaxCompute
进入阿里云MaxCompute产品首页,单击立即购买,进入购买页面。可根据自身需求进行选择、购买,MaxCompute有按CU预付费和按I/O后付费两种付费方式。我们这里选择使用按量付费,我们刚开始使用还不知道需要会用多少量,所以等使用一段时间之后再根据情况改成包月形式。如下图所示:
2) 创建项目
登录DataWorks管理控制台,击控制台概览页面常用功能下的创建项目,如下图所示:
填写创建项目弹出框中的各配置项,选择Region及服务,如Region没有购买相关的服务,会直接显示该Region下暂无可用服务,数据开发、运维中心、数据管理默认是选中的。如下图所示:
配置新建项目的基本信息和高级设置
基本配置:
项目名:项目名长度需要在3到27个字符之间。
显示名:显示名不能超过27个字符。
高级配置:
启用调度周期:控制当前项目是否启用调度系统,如果关闭则无法周期性调度任务。
允许在本项目中直接编辑任务和代码:当前项目成员在本项目中新建/编辑代码文件的权限,如果关闭则无法新建/编辑代码文件。
本项目中能下载select结果:控制数据开发中select出的数据结果是否能够下载,如果关闭无法下载select的数据查询结果。
MaxCompute项目名称:创建项目过程中可以创建MaxCompute相同的名称项目。
MaxCompute访问身份:个人账号,系统账号。推荐安全要求高的企业用户使用个人账号。
Quota组切换:Quota用来实现磁盘配额。
3) 创建表
由于在MaxCompute中的操作对象(输入、输出)都是表,所以在处理数据之前,首先要创建表、分区。在和大数据开发人员确定好表名,分区等信息之后就可以开始创建表的工作了。
创建/删除表的方式有以下几种:
通过MaxCompute Studio实现可视化创建/修改/删除表。
通过DataWorks实现创建表和删除表。
通过客户端常用命令实现创建表和删除表。
这里我们通过DataWorks实现创建表和删除表。
进入用车报告项目点击新建表:
输入建表语句
按照以上步骤创建所有需要的表即可。
4) 导入数据
在 DataWorks中,使用数据集成功能,将系统中产生的业务数据导入到工作区,通过工作流任务的计算后,再将计算结果定期导出到指定的数据源中。目前数据集成功能支持从以下数据源中将数据导入工作空间或将数据从工作空间导出:RDS、MySQL、SQL Server、PostgreSQL、MaxCompute、OCS、DRDS、OSS、Oracle、FTP、 dm、Hdfs、MongoDB 等。操作步骤如下:
新增数据源
通过数据集成导入数据
可以通过向导模式和脚本模式两种方式配置同步任务,这里介绍如何将MySQL的数据通过向导模式导入到MaxCompute中。
配置项说明:
分区信息:必须指定到最后一级分区。例如把数据写入一个三级分区表,必须配置到最后一级分区,例如pt=20150101,type=1,biz=2。非分区表无此项配置。
清理规则:
写入前清理已有数据:导数据之前,清空表或者分区的所有数据,相当于insert overwrite。
写入前保留已有数据:导数据之前不清理任何数据,每次运行数据都是追加进去的,相当于insert into。
配置项说明如下:
作业速率上限:是指数据同步作业可能达到的最高速率,其最终实际速率受网络环境、数据库配置等的影响。
作业并发数:从单同步作业来看,作业并发数*单并发的传输速率=作业传输总速率。
运行同步任务
同步任务保存后,直接单击运行同步任务并查看运行同步任务日志情况,如下图所示:
5) 授权给开发人员
当数据导入工作完成之后,我们需要给开发人员配置角色以及授权,以便开发人员登录平台进行数据开发工作。
单击右上角的 新建用户,如下图所示:
填写弹出框的各配置项,如下图所示:
单击 确定,即可创建子账号。
允许子账号登录
成功创建子账号后,主账号进入 访问控制 > 用户管理 页面,单击对应子账号后的 管理,进入用户详情页面。单击 启用控制台登录 并重置密码,填写该子账号用于登录的密码。如下图所示:
创建子账号的运行秘钥
运行密钥对于DataWorks中创建的任务的顺利运行非常重要,因此主账号需要为子账号创建 AK,或者允许子账号用户自行创建和管理自己的 AK 信息。具体操作如下:
主账号进入 访问控制 > 用户管理 页面,单击对应子账号后的 管理,进入用户详情页面。单击 创建 Accesskey,填写手机收到的验证码,即可为子账号创建新的 AK。
主账号进入访问控制 > 设置 页面,单击 子用户安全设置。勾选子用户安全设置 页面中的 允许自主管理 AccessKey,单击 保存修改 即可生效。如下图所示:
主账号进入访问控制 > 设置页面,单击企业别名设置,即可看到自己的企业别名,并可编辑进行修改。如下图所示:
交付子账号给其他用户使用时,需要提供如下信息:
RAM 用户登录链接。
所属主账号的企业别名。
该子账号的用户名和密码。
该子账号的 Access Key ID 和 Access Key Secret。
确认已经允许子账号 启用控制台登录。
确认已经 允许子账号自主管理 accesskeys。
3、 应用部署和配置
由于我们希望到云上可以Jenkins+docker方式构建持续集成,所以改用云上CodePipeline,阿里云CodePipeline是一款提供持续集成/持续交付能力,并完全兼容Jenkins的能力和使用习惯的SAAS化产品。它无需运维,开箱即用,全量兼容Jenkins插件,支持ECS,容器服务持续部署,快速上手。下面介绍利用codepipeline+kubernetes部署应用。
使用 CodePipeline 之前,需要先开通产品,下面介绍利用codepipeline构建Java应用并部署到kubernetes。
操作步骤如下:
1) 登录 CodePipeline 控制台。
2) 同意 RAM 的 CodePipeline 角色的授权。
Branches to build 中配置的是代码分支,默认值是master分支。
![image079](https://yqfile.alicdn.com/70e21e6208efc5dd884c572d9b0f697b4da53928.png)
构建 中配置的是代码构建命令,默认值是
mvn package -B –DskipTests
测试 中配置的是单元测试命令,默认值是mvn test。如果不需要做单元测试,可以不填写测试命令。
3) 选择部署方式,单击 部署到Kubernetes。
配置 镜像构建和发布
镜像仓库名称。镜像仓库名格式为namespace/镜像仓库名。
Registry地址。Registry地址 用来配置docker registry地址,如果为空,默认使用Docker hub registry ,https://index.docker.io/v1/;如果使用阿里云registry, 请填写https://registry.cn-beijing.aliyuncs.com/v2/,其中地域cn-beijing根据用户实际的镜像仓库地域来修改。
Registry证书。用来添加授权信息,请添加Registry授权类型的证书。
Dockerfile路径。填写Dockerfile文件在该项目工作空间的相对路径。如果该配置为空,则默认使用工作空间目录下命名为Dockerfile的文件。
配置 部署Kubernetes。
选择 认证方式。
CodePipeline目前支持 证书认证,用户名密码认证 和 Token认证 三种认证方式。如果是 阿里云容器服务Kubernetes集群,默认都是 证书认证。
填写 API服务器地址。
请输入Kubernetes API 服务器地址,您可以在阿里云容器服务控制台查看Kubernetes集群 API Server 公网连接端点,
例如https://1.12.123.134:6443。
添加 证书。
根据上文选择的 认证方式,决定添加的证书类型。
证书认证 的认证方式,添加 Docker授权 类型的证书。
如果是 阿里云容器服务Kubernetes集群,在集群 基本信息 页面,找到 配置集群凭据 中提供的 KubeConfig。
把 client-key-data 的内容(冒号后面的字符串)填入 客户端Key 对话框。
把 client-certificate-data 的内容(冒号后面的字符串)填入 客户端证书 对话框。
用户名密码认证 的认证方式,添加 用户名和密码 类型的证书。
Token认证 的认证方式,添加 用户名和密码 类型的证书。
添加 部署配置文件。
输入yaml格式的Kubernetes部署配置文件。如果文件在当前项目的workspace下,请直接输入文件名,如果在项目workspace的子目录中,请输入 ..子目录/文件名。不支持位于当前项目的workspace之外的文件。
添加 状态检查配置。
支持检验的 Kubernetes Kind:
pods,daemonsets,deployments,replicasets,replicationcontrollers,statefulsets。如果检验的不是 default namespace 下的资源,请在首行填写 namespace 名称。请用 “:” 分隔 Kubernetes Kind 和 Kind name, 用 “,” 分隔多个 Kind name。每一行描述一种 Kubernetes Kind。示例配置:
namespace:default
注意:请严格按照说明填写单词,不要删减字母;请勿填写多余的空格或者换行。
添加 变量申明配置
支持系统环境变量,可以通过 ${JENKINS_URL}/env-vars.html/ 查看。如果使用了多个变量,请用”,”分隔。您可以在上文的部署配置文件中使用变量,请以 ${BUILD_NUMBER} 格式严格填写,其他格式插件将忽略。示例:BUILD_NUMBER,JOB_NAME
单击 下一步。
检查所有配置信息,单击 提交。
4) 执行构建
完成项目的任务配置后,可以单击左侧导航栏中的 立即构建,开始执行配置中的构建及部署命令。
可以在构建队列及构建历史中查看构建状态。单击 构建序号,进入该次构建具体信息页面。
然后在侧导航中,单击 控制台输出,可以查看该次构建日志。
4、 负载均衡配置
4.1 创建负载均衡实例
4.3 域名解析
负载均衡配置完成后,需要将域名解析到负载均衡实例的公网服务地址上。例如,网站的域名为www.abc.com,运行在公网IP地址为1.1.1.1的ECS实例上。创建负载均衡实例后,系统分配的负载均衡实例的公网IP地址为2.2.2.2。需要要将ECS实例添加到负载均衡实例的后端服务器池,并将域名www.abc.com解析到2.2.2.2。通常情况下,建议使用A记录解析(即将域名解析到一个IP地址)即可。
5、 测试验证
当我们的应用都已经部署完成并且正常启动之后,需要对应用做必要的测试验证工作,例如功能测试、集成测试,由于这部分工作主要集中在测试团队,所以暂时省略。
6、 流量割接
如果功能测试,集成测试,性能测试等相关测试都已经通过,没有任何问题的情况,下一步可以开始上线割,但需要提前做好客户及公司内部的维护通告(重大维护公告需至少提前一周通知用户和客户,并提前准备好各种预案)。正式迁移的时候,由于系统、代码、文件及数据库都已迁移过去。维护期间停止数据新的数据写入,开启数据库只读模式,这样可以减少用户的影响。等待数据库同步一致之后,开始迁移的最后一步是将域名解析至阿里云,这里需要特别提醒一下,域名需要提前备案的。
虽然域名已经解析到最新的ip,当前万网的刷新最新的解析记录的时间周期最短也仅仅10分钟。但是我们没法把控的客户端本地的DNS缓存,即还会有部分客户还是访问到老的站点。针对那些依旧访问IDC机房应用的客户,我们在IDC机房前端nginx上做302重定向跳转,将依旧还访问IDC的客户引流到阿里云。值得注意的是,由于nginx是七层负载均衡,需要匹配域名。这里nginx的server_name和跳转的链接配置的域名都是同一个,为了确保跳转的域名解析的地址为阿里云,我们可以在nginx所在服务器的hosts配置中强制将域名的解析ip设置为阿里云对应的IP。最后还要观察下一段时间,直到所有流量都平稳的切到阿里云上,但仍然建议老应用保留一段时间,以防不测。万一遇到任何问题还可以修改DNS解析快速恢复到原来的业务。如下图所示:
关于RollBack 计划稍微多说两句,企业都要根据自身业务来制定详细的rollback计划,例如业务很重要,不能出现一丝数据错误,那么建议在切到云上的时候,保持线下与线上数据库同步,云上可以设置为master,线下设置为从库,开启主从同步,保障数据的一致性。当然操作过程会很复杂,但是绝对有必要提前考虑到出现各种问题的风险,以及应对措施。针对比较重要的业务和数据,一定要做好详细的切割计划以及回滚计划。但也有人说我的业务是不太重要的,业务影响较小,回滚代价反而比较大,这种情况就需要灵活考虑。
7、 安全加固
7.1 DDOS高防IP配置
智能终端上报数据的地址为公网地址,为防止汽车上报的地址被他人恶意攻击,因此需要对该地址进行重点防护。可以通过配置DDoS高防IP,将攻击流量引流到高防IP,确保数据上报地址的稳定可靠。操作步骤如下:
a) 购买实例
b) 启用高防实例
购买高防实例后,需要启用该实例才可将业务接入高防进行防护。操作步骤如下:
在云盾DDoS防护管理控制台配置完成后,DDoS高防预期可以把请求高防IP对应端口的报文转发到源站(真实服务器)的对应端口。为了最大程度保证业务的稳定,我们建议在全面切换业务之前先进行本地的测试。可以直接本地通过telnet命令访问高防IP的后端业务端口,telnet命令能连通则说明转发成功。
7.2 web应用防火墙配置
a) 购买web应用防火墙服务
c) 放行WAF回源IP段。
回源IP是WAF用来代理客户端请求服务器时用的源IP,在服务器看来,接入WAF后所有源IP都会变成WAF的回源IP,而真实的客户端地址会被加在HTTP头部的XFF字段中。接入WAF后,WAF作为一个反向代理存在于客户端和服务器之间,服务器的真实IP被隐藏起来,客户端只能看到WAF,而看不到源站。如下图所示(origin为源站):
d) 验证域名转发配置是否生效。
在把业务流量切到WAF上之前,建议先通过本地验证的方式确保一切配置正常,WAF转发正常。首先需要修改本地hosts文件,使本地对于被防护站点的请求先经过WAF。修改hosts文件后保存。然后本地ping一下被防护的域名,预期此时解析到的IP地址应该是刚才绑定的WAF IP地址。如果依然是源站地址,可尝试刷新本地的DNS缓存(Windows的cmd下可以使用ipconfig/flushdns命令)。确认hosts绑定已经生效(域名已经本地解析为WAF的IP)后,打开浏览器,输入该域名进行访问,如果WAF的配置正确,网站预期能够正常打开。
e) 修改网站域名DNS解析记录将业务流量切换至WAF。
通过修改DNS将网站域名解析到WAF,完成业务正式接入。