乐趣区

干货 | 京东云部署WordPress最佳实践

摘要
传统的 IT 环境构建是比较复杂的过程。从安装硬件、配置网络、安装软件、应用、配置存储等,许多环节都需要一定的技术力量储备。当环境发生改变时,整个过程需要重复进行。我们都知道,不同的人安装配置的环境会又很大差异。放在复杂的企业环境来考虑,即使有说明,仍然无法保证环境的一致性。
众所周知,传统服务器包含处理器、存储、网络、电源、风扇等模块设备。与传统服务器相比,云主机关注的是高性能吞吐量计算能力,关注的是在某段时间内的工作量总和。因此,云主机在架构上和传统的服务器有着很大的区别。
本文以 Wordpress 为例,介绍 Web 网站在京东云上的最佳实践经验。使用到的京东云产品包含云主机、负载均衡、云 RDS、云 Redis、高可用组、私有网络、基础 DDOS 防护。WordPress 是一个流行的基于 PHP 和 MySQL 的开源博客平台和内容管理系统(CMS)。本文详细说明 Wordpress 部署过程,使用到的京东云产品包含云主机、负载均衡、云 RDS、云 Redis、高可用组、私有网络、基础 DDOS 防护。

产品配置列表

私有网络
1 私有网络(VPC)京东云私有网络 (Virtual Private Cloud,简称 VPC),是您在京东公有云上自定义的逻辑隔离的网络空间,与您在数据中心搭建的传统网络类似,此私有网络空间由用户完全掌控,支持自定义网段划分、路由策略等。用户可以在 VPC 内创建和管理多种云产品,如云主机、负载均衡等,同时可配置网络内的资源连接 Internet。另外,您可以通过 VPN 专线接入,打通您的 IDC 内网和京东云网络,实现应用的混合云部署,以及将应用平滑地迁移至云上。
2 子网子网是所属 VPC IP 地址范围内的 IP 地址块。目前私有网络中的云资源部署在子网内,如云主机、容器、负载均衡等。子网位于 VPC 内,在创建 VPC 后,您可以在 VPC 下创建子网。同一 VPC 下子网的网段不可以重叠,不同 VPC 下子网的网段可以重叠。
京东云的子网在地域下为跨可用区部署,您在创建子网时无需选择 AZ 区,子网内的资源可以仅基于某一个 AZ 区创建使用,也可以分布到多个 AZ 区进行创建使用。跨 AZ 子网的设计为业务规划部署、扩展提供了最大的灵活性:

用户应用规划只需要考虑按照业务类型划分子网、而不需要结合可用区考虑,可简化规划过程;
用户云数据库集群等 PaaS 应用在跨 AZ 部署时只需要选择一个子网,业务访问数据库时只需要配置一组 ACL 规则,减少用户配置复杂度、提升使用体验;
用户想增加新 AZ 时,数据库服务等 PaaS 应用不需要再增加新子网与业务访问控制规则,直接在原子网内基于新 AZ 创建新数据库服务即可,用户数据库业务可扩展性好;
用户自建高可用业务,私网 IP 可以跨 AZ 进行漂移,方便用户自建跨 AZ 的高可用服务。

云数据库 RDS-MySQL
数据库 RDS 是京东云基于全球广受欢迎的 MySQL, Percona, MariaDB, SQL Server 数据库提供的稳定可靠的云数据库服务。相比传统数据库,云数据库 RDS 易于部署、管理和扩展,默认支持主从热备架构,提供数据备份、故障恢复、监控等全套解决方案,彻底解决数据库运维的烦恼。同时,京东云数据库 RDS 通过使用网络隔离、使用白名单限制外网访问等方式,为数据库服务提供了高级别的安全性需求。
云数据库连接测试
1、远程登录云主机,安装 MySQL 客户端工具;
[root@node11 ~]# yum install mysql
2、登录云数据库控制台,复制云数据库实例域名;
3、在云主机客户端工具上使用命令连接数据库;
[root@node11 ~]# mysql -uwordpress -p -hjddb-cn-north-1-xxxxxxxxx.jcloud.com(数据库域名)
应用连接数据库
以 PHP 应用为例,编辑配置文件 wp-config.php,添加数据库连接配置;
云 缓 存
京东云数据库缓存 Redis,是基于开源 Redis 协议的 Key-Value 类型在线缓存服务,即支持标准 Redis 协议。通过“内存 + 硬盘”的存储方式在提供高速数据读写能力的同时能够满足数据的持久化。目前我们已经支持主从版、集群版的多种规格供用户选择,可满足多种业务场景对可用性、可靠性和性能的要求。支持双机热备,提供自动容灾切换、实例监控等服务,以降低业务风险,确保业务的连续性,用户可专注于自身产品的业务即可。
云缓存连接测试
以 PHP 应用为例,编辑配置文件 wp-config.php,添加云缓存连接配置;
1、登录云主机安装 redis;
[root@node11 ~]# yum install redis2、使用 redis-cli 工具连接 redis-cli -h [host] -p [port] -a [token]。
[root@node11 ~]# redis-cli-h jredis-hb1-prod-redis-wsq2gq6qx1.jmiss.jcloud.com -p 6379 -a redis-wsq2gq6qx1:Jdyun2018
应用配置连接云缓存
1、以 PHP 应用为例,编辑配置文件 wp-config.php,添加云缓存连接配置;2、访问网站测试,浏览器中通过访问云主机的公网 IP 进行测试,通过云缓存控制台监控面板查看云缓存使用情况;
负载均衡创建与配置
应用负载均衡可将大并发流量分发到多台后端实例,调整资源利用情况,消除由于单台设备故障对系统的影响,提高系统可用性、扩展系统服务能力。
京东云应用负载均衡提供多重机制保障服务的高可用:
a. 应用负载均衡的高可用:

多可用区部署:根据业务需求,对支持多可用区的地域可选择将应用负载均衡实例部署在多个可用区下,一旦可用区机房故障或可用区下资源故障,可将流量自动分发至其他可用区,实现可用区级高可用;
资源冗余机制:应用负载均衡采用集群部署,提供双活模式(单可用区下至少提供 2 个资源实例),如一个负载均衡服务故障,可将流量自动转发至另一个负载均衡服务,业务侧无感知。

b. 后端服务器的高可用:
应用负载均衡可绑定高可用组,根据业务流量和设备负载情况动态调整服务器数量,实现资源的合理分配,保证业务正常运行。

1 配置负载均衡
添加创建监听策略 A. 通过负载均衡 - 详情 - 监听器进入监听器管理页;B. 点击新建监听器,打开监听器设置页;C. 监听器设置:
前端监听配置

选择前端监听协议:http、https、tcp、tls;端口:1-65535;注:同一应用负载均衡下的监听端口不可重复,监听器创建后,监听协议、端口不允许修改;
空闲连接超时:输入范围 1 -86400 秒;

后端转发配置如前端设置 HTTP/HTTPS 协议监听,系统默认开启客户端真实 IP 获取,可选择是否开启 cookie 会话保持(植入方式)并设置超时时间;

默认后端服务:新建或选择一个已有的后端服务,选择已有后端服务相关参数不可修改;
后端服务名称:定义后端服务名称,随监听器同步创建的后端服务可在后端服务列表查看;
后端协议:默认显示,如监听协议为 http、https 则后端协议为 http,如监听协议为 tcp、tls 则后端协议为 tcp;
端口:后端业务转发端口,输入范围 1 -65535,不同后端服务的端口可以重复;
调度算法:加权轮询、加权最小连接数、源 IP,可根据实际业务需求选择;
会话保持:默认关闭,后端协议为 http 时支持植入方式的 cookie 会话保持;
cookie 超时时间:输入范围 0 -86400,默认 0 代表与浏览器同生命周期;
获取真实 IP:后端协议为 http 时,默认开启不可关闭,此时可通过 X -Forwarded-For 头字段获取客户端真实 IP;后端协议为 tcp 时,支持 proxy protocol 协议方式透传客户端 IP;

(注:当后端协议为 tcp 时,如开启获取真实 IP,需在后端服务端完成 proxy protocol 的相关配置。)
获取 HTTP 头字段:用于透传客户端 http 请求的相关信息。支持通过 X -Forwarded-Proto 字段获取负载均衡监听协议、通过 X -Forwarded-Port 字段获取负载均衡监听端口、通过 X -Forwarded-LBIP 字段获取负载均衡 VIP 地址、通过 X -Forwarded-Host 字段获取负载均衡监听目的 IP(域名)和端口;
健康检查设置

选择健康检查方式:http、tcp;
设置检查端口:输入范围 1 -65535,如不填写默认为后端实例接收负载均衡流量的端口;
响应超时时间 (s):输入范围 2 -60 秒, 此为健康检查响应的最大超时时间;
健康检查间隔 (s): 输入范围为 5 -300 秒, 此为健康检查的时间间隔;
不健康阈值:输入范围 1 -5,此为后端实例从成功到失败的连续健康检查失败次数;
健康阈值:输入范围 1 -5,此为后端实例从失败到成功的连续健康检查成功次数;
正常态码:输入范围 2xx(等价于 200-299)、3xx(等价于 300-399)、4xx(等价于 400-499);
检查路径:仅健康检查方式为 HTTP 时填写,必须以“/”开头、最多支持 5 级目录,不得超过 100 字符。

添加服务器组

选择服务器组类型:虚拟服务器、高可用组,或者可以暂不添加;
虚拟服务器组:系统会自动筛选出当前可以绑定的服务器组列表,如没有可用的服务器组,可点击“新建虚拟服务器组”进行创建;
注:可选服务器组中的后端实例必须与应用负载均衡处于相同地域、私有网络、可用区下。
高可用组:系统会自动筛选出当前可以绑定的高可用组,如没有可用的高可用组,请前往高可用组页面进行创建;注:可选高可用组中的后端实例必须与应用负载均衡处于相同地域、私有网络、可用区下。

2 负载均衡实例绑定公网 IP 将弹性公网 IP 绑定到负载均衡实例上,随后使用浏览器访问公网 IP 测试访问。

安全加固
1 安全组安全组是一种分布式、有状态的包过滤功能的虚拟防火墙,可实现对云主机的网络访问控制,从而控制一台或多台云主机的访问流量。创建云主机时,可以关联相应的安全组,将同一地域内具有相同网络安全隔离需求的云主机加到同一个安全组内。通过配置安全组策略对云主机的出入流量进行安全过滤。

配置入站规则
1. 进入京东云控制台,选择 弹性计算 >> 云主机 >> 安全组 页面(或者 弹性计算 >> 容器服务 >> 安全组,本帮助以云主机为例),找到需要配置入站规则的安全组,点击“更多”操作中的【修改入站规则】或点击安全组名称跳转到其详情页面;
2. 进入入站规则 TAB 页,点击页面上的【编辑规则】按钮,进入入站规则编辑页面;
3. 点击页面下方的【添加新规则】按钮将为当前安全组新增一条入站规则,选择入站规则类型,系统将根据所选择的入站规则类型自动匹配相应协议,依次设置端口(支持单个端口号,如 80,也支持端口范围如:80-8080)、目的 IP(支持单个 IP 或 CIDR)后完成一条入口规则的配置;

完成入站规则编辑后,点击页面上方的【保存】按钮后,新修改的安全组规则自动生效。
配置出站规则
1. 点击出站规则,会跳转到出站规则页面,点击页面上的【编辑规则】按钮,进入出站规则编辑页面;
2. 由于没有在云主机的操作系统中设置响应客户端 web 请求返回的端口,因此这里放行了全部端口,并保存配置;

绑定云主机实例
1. 进入京东云控制台,选择 弹性计算 >> 云主机,点击部署了 wordpress 应用的实例,云云主机实例页面中点击“安全组”;
2. 点击“绑定”,勾选刚才创建并配置了规则的安全组实例;

3. 移除多余的安全组;

至此,云主机的安全组配置完成。将浏览器缓存清空后,可以访问负载均衡公网 IP 进行测试。
2 RDS 白名单白名单控制哪些 IP 地址能够访问 RDS 实例。默认情况下,实例所在的 VPC 段会在白名单列表中,即在该 VPC 中的所有 IP 都可以访问。如果用户需要开启外网访问,必须需要访问的外网的 IP 地址加入到白名单中。建议只添加真正需要从外网访问的 IP 地址,从而保证实例的数据安全性。修改后的白名单的会立即生效,不需要重启实例。
操作步骤:
1. 登录 云数据库 RDS 控制台。
2. 选择需要设置白名单的目标实例,点击目标实例,进入实例详情页。
3. 选择 安全管理 标签,点击 名单设置 标签进入 白名单 的详情页,点击 编辑 按钮,弹出框参数说明如下:
编辑方式支持两种,分别为:文本编辑 和 从云主机选择
文本编辑方式需要您手动输入 IP 地址或者 IP 段,多个 IP 地址或者 IP 段通过逗号或者回车分隔。如果填写了 0.0.0.0/0,表示允许所有地址访问。
从云主机选择方式会显示所有和云数据库 SQL Server 实例处于同一 VPC 的云主机实例,您只要勾选需要访问云实例的云主机,它的内网 IP 地址会自动添加到白名单规则中。

配置完成后,清空浏览器缓存,访问负载均衡公网 IP 测试。
可查看京东云相关产品配属:https://www.jdcloud.com/cn?ut…
·END·

退出移动版