背景介绍
某企业将公司业务网站部署在华为云上,该业务有以下需求,作为云服务架构师,该怎么建议客户来做方案设计呢?
- 将数据节点与业务节点分开部署在不同的服务器上
- 可针对不同业务量动态调整服务器个数
- 可自动将流量分发到多台服务器
- 使用云监控服务来监控业务状态
方案设计
| 需求 | 解决方案 | 服务 |
|---|---|---|
| 将数据节点与业务节点分开部署 | 搭建网站:购买云服务器和 RDS 实例分别作为业务节点和数据节点。由虚拟私有云为弹性云服务器提供网络资源 | 弹性云服务器 ECS、虚拟私有云 VPC、关系型数据库 RDS |
| 针对不同业务量动态调整服务器个数 | 配置特性:根据业务需求和策略采用弹性伸缩,使用基础业务节点的镜像动态地调整作为业务节点的弹性云服务器实例个数,保证业务平稳健康运行 | 弹性伸缩 AS、镜像服务 IMS |
| 自动将流量分发到多台服务器 | 配置特性:使用负载均衡将访问流量自动分发到多台业务节点弹性云服务器,扩展应用系统对外的服务能力,实现更高水平的应用程序容错性能 | 弹性负载均衡 ELB |
| 监控业务状态 | 配置特性:使用云监控服务来监控业务状态 | 云监控服务 |
方案拓扑图。


配置步骤
登录华为云
打开华为云官网:https://www.huaweicloud.com 单击右上角登录按钮。
输入对应的用户名和密码后,单击登录按钮。
创建虚拟私有云
进入控制台,切换区域为:上海一,找到虚拟私有云 VPC,进入网络控制台。

单击创建虚拟私有云。


设置虚拟私有云创建信息如下后,单击立刻创建。参数设置如下:
- 区域:华东-上海一
- 名称:vpc-name(name 为学员姓名,此处示例为 vpc-gqd)
- 其它参数:可默认

返回控制台,确认创建成功。

创建并配置安全组
在网络控制台,找到访问控制 > 安全组 > 创建安全组。

(本实验为方便后续操作全部放通,实际使用需最小化放通)。

购买弹性云服务器
在华为云控制台的服务列表中找到弹性云服务器 ECS。

单击购买弹性云服务器,参数配置参考如下。

基础配置:
- 计费模式:按需计费
- 区域:上海一
- 可用区:随机分配
- CPU 架构:x86 计算
- 规格:通用计算型:2 vCPU | 4 GB
- 镜像:公共镜像 CentOS 7.6 64bit(10GiB)
- 系统盘:高 IO 40G

网络配置:
- 网络:选择自己创建的虚拟私有云
- 安全组:选择自己创建的安全组
- 弹性公网 IP:现在购买,全动态 BGP,按带宽计费,2 Mbit/s

高级配置:
- 云服务器名称:自定义
- 登录凭证:密码,ECS 登录密码自定义

确认配置无误后,阅读并同意《镜像免责声明》,单击立即购买按钮。

返回云服务器列表,查看已创建好的 ECS。

RDS 实例的购买
返回华为云控制台,在服务列表中找到云数据库 RDS。

点击购买。

配置数据库实例参数如下,配置完成后单击立即购买。
- 计费模式:按需计费
- 区域:华东-上海一
- 实例参数选择:rds-name(可自定义),MySQL,版本:8.0,主备,SSD 云盘
- 性能规格:通用型 2核 | 4 GB(练习时选用最小规格,具体业务按需求选择)
- 虚拟私有云/内网安全组:选择自己创建的,密码自行设置
- 其它参数默认




确认购买信息后,单击立即购买按钮,单击提交按钮。

单击返回云数据库 RDS 列表,创建需等待 6-10 分钟。

单击数据库实例名称,查看数据库内网 IP 地址并记录。


搭建 LAMP(Linux、Apache、MySQL、PHP)环境
返回云服务器 ECS 控制台,单击远程登录。

输入密码,连接。

依次输入如下命令安装 LAMP 环境,并开启相应服务。
bash
[root@ecs-gqd ~]# yum install epel-release
[root@ecs-gqd ~]# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@ecs-gqd ~]# yum -y install yum-utils
[root@ecs-gqd ~]# yum repolist all | grep php
[root@ecs-gqd ~]# yum-config-manager --enable remi-php74
[root@ecs-gqd ~]# yum install -y httpd php php-fpm php-server php-mysql mysql
运行结果,显示"Complete!"。


输入以下命令进行编辑配置 httpd 服务。

bash
[root@ecs-gqd ~]# vim /etc/httpd/conf/httpd.conf
在打开的配置文件界面,单击快捷键"shift+g",进入配置文件最后一行。按"i"进入编辑模式,移动光标至配置文件末尾,回车换行,键入配置"ServerName localhost:80",单击快捷键"ESC"退出编辑模式,输入":wq",回车执行保存并退出配置文件。
上传本地下载好的 WordPress 软件。
bash
[root@ecs-gqd /]# ls
bin CloudrResetPwdAgent etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
wordpress-5.2.3-zh_CN.zip

输入如下命令,将 WordPress 安装包解压到目录 /var/www/html。
bash
[root@ecs-gqd ~]# unzip wordpress-5.2.3-zh_CN.zip -d /var/www/html
[root@ecs-gqd ~]# cd /var/www/html/
[root@ecs-gqd html]# ls
wordpress
输入如下命令,赋予文件所在目录读写权限。
bash
[root@ecs-gqd html]# chmod -R 777 /var/www/html
输入如下命令,开启 httpd service。
bash
[root@ecs-gqd html]# systemctl start httpd.service
输入如下命令,开启 php-fpm service。
bash
[root@ecs-gqd html]# systemctl start php-fpm.service
输入如下命令,查看 httpd service 状态。httpd 状态为高亮显示的 active (running)。

输入如下命令,查看 php-fpm service 状态。如下图所示,php-fpm 状态为高亮显示的 active(running)。

输入如下命令,将 httpd 服务设为开机启动。如下所示,httpd 服务已设置为开机启动。
bash
[root@ecs-gqd html]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
输入如下命令,将 php-fpm 服务设为开机启动,如下所示,php-fpm 服务已设置为开机启动。
bash
[root@ecs-gqd html]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

在浏览器中,输入 ECS 的 EIP 出现以下页面说明 LAMP 环境已安装成功。

创建 WordPress 数据库
返回数据库控制台,登录已创建好的 MySQL 数据库。

输入用户名和密码(用户名默认 root,密码输入购买 RDS 时设置的密码)。

创建 WordPress 数据库,如下图。


访问 WordPress 并进行相应配置
在浏览器地址栏中输入 http://ECS_IP/wordpress(ECS IP 替换成自己 ECS 的 EIP)地址访问 WordPress。

点击 Let's go! 按钮,进入 WordPress 数据库配置页面,如下图所示配置相关参数:
- 数据库名:wordpress
- 用户名:root
- 密码:自己创建的数据库密码
- 数据库主机:填写数据库的内网地址和端口(在购买 RDS 章节)
- 表前缀:默认
点击 Run the installation(现在安装)。

设置站点标题、用户名、密码及电子邮件后,点击 Install WordPress。

填写用户名和密码,登录网站。

登录成功。


至此,WordPress 网站服务器和其后端数据库实例的初始化配置完成。返回弹性云服务器控制台,将安装 wordpress 的 ECS 的弹性 IP 解绑。


接下来,我们将为 WordPress 网站服务器配置负载均衡服务和弹性伸缩服务。
配置网站服务器级别的高可用性
在企业现网中,为了能够提高应用服务器的可用性,通常我们不会只用一台服务器来承载业务,而是通过多台应用服务器来自动分担访问流量和扩/缩容服务器数量。接下来我们通过配置弹性负载均衡服务为网站提供自动访问流量分发,通过配置弹性伸缩服务来实现网站服务器自动调整数量的功能。
创建和配置弹性负载均衡
返回华为云控制台,在服务列表中找到弹性负载均衡 ELB。

单击购买弹性负载均衡。

选择共享负载均衡。参数配置如下:
- 实例规格类型:共享型
- 计费模式:按需计费
- 区域:华东-上海一
- 网络类型:IPv4 公网
- 所属 VPC:自己创建的 VPC 和子网
- 弹性公网 IP:使用已有(选择已解绑 ECS 的弹性 IP)
- 名称:elb-name(自定义)

确认相关信息,点击"立即购买",信息确认无误后,点击"提交"。

返回网络控制台,确认负载均衡实例的状态为运行中。

单击负载均衡实例的名称,进入负载均衡控制台,单击"监听器",选择"添加监听器"。配置监听器的名称、协议和端口,完成后点击下一步。

配置后端分配策略,分配策略类型选择加权轮询算法,其他保持默认即可,单击"下一步"。

此处暂时不添加云服务器,点击下一步。

确认配置无误后,点击"提交"。此时,弹性负载均衡服务的基础配置已经完成,但是其后端服务器组内还没有云服务器。接下来我们将通过弹性伸缩服务的配置来动态调整负载均衡服务后端服务器组内的云服务器数量。
制作镜像
返回云服务器控制台,将云服务器关机。

返回华为云控制台,在服务列表中找到镜像服务 IMS。

点击"创建私有镜像",配置参数参考如下。
- 区域:华东-上海一
- 创建方式:系统盘镜像
- 选择镜像源:云服务器,选择前面自己创建的云服务器
- 名称:ims-name(自定义)

点击"立即创建",确认配置后并提交。等待镜像的状态为正常。镜像创建完成后可将云服务器开机。
配置弹性伸缩
返回华为云控制台,在服务器列表中找到弹性伸缩 AS。

选择创建弹性伸缩配置。

设置伸缩配置信息如下后,单击"立即创建"。
注意点:镜像选择刚创建的系统盘镜像;安全组选择前面自己创建的安全组,不使用公网 IP。

点击立即创建后显示如下的伸缩配置。


点击创建弹性伸缩组。

设置服务选项信息如下后,单击立即创建。

选择刚才创建的伸缩配置和负载均衡器,后续弹性伸缩服务会根据伸缩配置中的镜像模板在弹性负载均衡器中的后端服务器中动态调整云服务器数量。

勾选协议,单击立即创建。

单击查看伸缩策略。

单击添加伸缩策略。
- 设置 CPU 最大值 >=60%,增加一台弹性云服务器
- 设置 CPU 平均值 <=20%,减少一台弹性云服务器



等待几分钟后,返回弹性伸缩组,观察伸缩实例变化情况,来判断伸缩策略是否为已启用。从下图可以看出,弹性伸缩服务已经完成了两个伸缩实例(云服务器的创建)。


返回弹性负载均衡控制台,点击负载均衡名称"elb-gqd",打开后端服务器组会发现,后端服务器组内加入了两台云服务器,而这两台云服务器正好就是刚才通过弹性伸缩服务创建的伸缩实例。
至此,弹性伸缩和弹性负载均衡服务配置完成。我们会发现弹性伸缩服务将通过配置的监控策略来为弹性负载均衡的后端服务器组动态调整云服务器数量。在上述部署 WordPress 网站应用时,我们是直接访问该云服务器的公网 IP 的,那么接下来,我们需要验证云服务器内部的网站应用是否能够通过负载均衡 IP 对外提供访问。
访问网站
查看弹性负载均衡器 ELB 绑定的弹性 IP 地址。

在浏览器输入 ELB 新绑定的 EIP 地址,测试网站是否可以正常打开,如果正常打开说明通过负载均衡器 ELB,我们能够访问到由弹性伸缩扩容的后端服务器内的 WordPress 网站应用。至此,WordPress 网站的弹性伸缩和弹性负载均衡配置完成。

资源监控
返回华为云控制台,在服务列表中,找到云监控服务然后打开。

在云监控服务界面,我们可以查看监控大屏信息,以此来获取全面的监控情况。

返回云监控服务界面,我们还可以查看业务的告警信息,及时处理故障。


除了上述基本功能外,我们还可以通过主机监控来查看云服务器的基本信息。

点击弹性云服务器的名称,即可进入到该云服务器的详细监控。


删除资源
- 删除弹性伸缩
- 删除 ECS
- 删除 RDS
- 删除镜像
- 删除 ELB
- 删除 VPC
- 删除安全组