概述:
本实践演示了云上网站经典架构云上搭建最佳实践,涉及大部分基础云产品。
应用范围:
传统企业/零售/游戏行业单库单服系统上云。
产品介绍:
-
京东云私有网络(Virtual Private Cloud,简称VPC),是您在京东公有云上自定义的逻辑隔离的网络空间,与您在数据中心搭建的传统网络类似,此私有网络空间由用户完全掌控,支持自定义网段划分、路由策略等。用户可以在VPC内创建和管理多种云产品,如云主机、负载均衡等,同时可配置网络内的资源连接Internet。另外,您可以通过VPN\专线接入,打通您的IDC内网和京东云网络,实现应用的混合云部署,以及将应用平滑地迁移至云上
-
负载均衡(LB, Load Balancer)提供安全稳定、管理便捷的流量分发服务。访问流量经由 LB 可自动分发至多台服务器上,提高系统的可用性并扩展服务能力,消除单点故障。LB 可智能调整资源分配,提升利用率,轻松应对高并发的流量访问,满足大流量、复杂业务需求
-
云主机(CVM,Cloud Virtual Machine)是一种管理便捷、安全稳定的弹性计算服务。您可实时、快速地创建多台云主机,并可根据业务需要随时扩展或缩减计算资源,按需付费,节约成本,帮助您更高效可靠的开展业务。
-
云数据库 RDS 是京东云基于全球广受欢迎的 MySQL, Percona, MariaDB, SQL Server, PostgreSQL 数据库提供的稳定可靠的云数据库服务。相比传统数据库,云数据库 RDS 易于部署、管理和扩展,默认支持主从热备架构,提供数据备份、故障恢复、监控等全套解决方案,彻底解决数据库运维的烦恼。同时,京东云数据库 RDS 通过使用网络隔离、使用白名单限制外网访问等方式,为数据库服务提供了高级别的安全性需求。
-
数据传输 DTS (Data Transmission Service),是京东云提供的实时数据流服务,可帮助您在业务不停服的前提下轻松完成数据库迁移上云,支持数据迁移、数据订阅、数据同步,可简单方便的满足数据上云、业务异步解耦、跨地域数据灾备等业务场景。
-
对象存储(OSS,Object Storage Service)是京东云自研的存储海量数据的分布式存储服务,提供高可靠、低成本、强安全的云端数据存储。您可存储音视频、图文等非结构化的海量数据,无容量限制,无格式限制,管理高效便捷,存储成本智能优化,解决您在 CDN 内容分发、大数据、容灾备份等多种场景的数据存储问题。
应用场景:
概述:在创业型公司或阿米巴模式经营的公司,新项目发布初期存在较大的不确定性,既要考虑项目未来的扩展性,又要衡量项目的运营成本。本解决方案为客户提供低成本,敏捷快捷的最佳实践。
典型行业:传统企业、游戏和零售等行业。
适配场景:
-
系统可以按地域等规则拆解成一个个独立小系统单元化部署;
-
公司以项目为核心组建团队,项目核心系统的主要运维工作由开发兼任;
-
成本优先,数据打通、数据安全、容灾等需求滞后考虑(能接受数据丢失、系统部
分不可用等情况)
技术架构
方案优势:
系统分级:核心系统通过多产品组合 LB+CVM+RDS 保障服务稳定可靠,分散业务节点在两个 AZ 实现跨区域容灾;业务节点单元化部署。
灵活:子系统可单元化形式把部分应用和数据库集中部署在一台 CVM 上,节省成本,各节点之间互不干扰,灵活增减业务节点。
静态内容通过 CDN 加速,CDN 通过私有 Bucket 回源,有效防止资源盗链。
前置条件:
-
注册京东云云账号,并完成实名认证。您可以登录京东云控制台,
并前往实名认证页面(https://realname.jdcloud.com/account/verify)查看是否完成实名认证。
-
购买按量付费资源,京东云账户余额需要大于 100 元。您可以登录京东云控制台,
前往账户总览页面(https://capital.jdcloud.com/cost/capital/capital-overview)查看账户余额。
-
已 申 请 域 名 且 已 经 完 成 域 名 备 案 ( 申 请 ******.cn 域名, **.cn www..cn两个域名备案备用)。
-
开通 CVM、OSS、CDN、云解析 DNS 等服务。
-
本方案实践的资源规划仅作为实践演示,实际业务场景资源以用户实际需求为准。
-
付费方式:为了便于演示默认按量付费。
资源规划:
网络资源规划:
资源类别 | 配置项 | 配置明细 |
---|---|---|
区域 | 区域: | 华北-北京 |
私有网络VPC | VPC名字: 网段: | x_vpc 10.0.0.0/16 |
EIP | EIP 名称: 支付方式: 公网带宽: 带宽: | EIP 后付费 按流量 1Mbps |
SLB | SLB 名: 支付方式: 可用区: | 测试slb 后付费 华北-北京 |
弹性计算资源规划:
资源类别 | 配置项 | 配置明细 |
---|---|---|
CVM(核心业 务系统,2 台) | 可用区: CVM 名: 支付方式: 实例规格: 镜像版本: | 华北-北京(可用区A) VM-01 VM-02 按量付费 g.n3.medium(1核4GB 通用 标准型) 通用型SSD云盘 (40GB) CentOS 7.6 64位 |
CVM(区域服务器) | 可用区: CVM 名: 支付方式: 实例规格: 镜像版本: 私有镜像名称: | 华北-北京(可用区B) VM-04 g.n3.medium(1核4GB 通用 标准型) 通用型SSD云盘 (40GB) CentOS 7.6 64位 phpMyAdmin |
OSS (对象存储) | Bucket 名: 存储类型: 访问策略: 配置类: | oss-x.s3.cn-north-1.jdcloud-oss.com 标椎存储 公有读私有写 上传对象:/aa.webp |
RDS(核心业 务系统) | 实例名: 支付方式: 类型: 版本: 分类: 主节点可用: 备节点可用: 部署方案: 数据库账号: 端口: | mysql_x 按配置 主备 mysql5.7 可用区A 可用区B 多可用区部署 rds_admin 3306 |
CDN | 加速域名: 业务类型: 加速区域: 源站信息: | www.***.cn 图片小文件 中国内地 OSS:oss-x.s3.cn-north-1.jdcloud-oss.com |
域名 | 网 站/应用整体域名: CDN使用域名: | .cn www.********.cn |
创建部署资源:
一、创建CVM
创建Linux云主机,方法参考
二、配置CVM测试程序监听80端口
1.单击实例VM-01进行远程连接
2.通过WebTerminal登录,root权限登陆CentOS
3.执行下列命令,安装启动测试程序监听 80 端口,并创建当前访问服务器 hostname 信息 的 html 文 件
[root@VM-01 ~]# yum -y install httpd
4 .启动 httpd 服务,设置开机启动,并确定 80 端口被占用
[root@VM-01 ~]# systemctl start httpd
[root@VM-01 ~]# systemctl enable httpd
[root@VM-01 ~]# ss -tnl|grep 80
5 .创建当前访问服务器 hostname 信息的 html 文件,并验证文件写入正常
[root@VM-01 ~]# cat <<EOF > /var/www/html/local.html
> <html>
> hostname:`hostname`
> </html>
> EOF
[root@VM-01 ~]# cat /var/www/html/local.html
<html>
hostname:VM-01
</html>
6.重复步骤1-5 部署VM-02
三、创建LB实例,并把两台CVM:VM-01 VM-02加入服务器组
1.创建LB实例,方法参考
2.创建监听策略,方法参考
3.创建虚拟服务组,方法参考
4.创建转发后端服务,把虚拟服务器加入后端服务,方法参考
6.在负载均衡管理界面,复制LB的公网ip
7.在浏览器直接访问ip,出现一下界面,表示访问正常
0
8. 输入 http://IP 地址/local.html,查看响应本次请求的后端服务器(本例是 VM-01)
由于会话保持机制,几次刷新都应该是同一后端服务器响应.
9.查看LB后端服务运行状态,注意由于健康检查规则限制实例健康状态显示会有延迟,健康状态异常参考
10.停止当前页面访问的服务器的 80 端口服务(本例为 VM-01,实际以测试情况为准),验证LB状态(验证结束后恢复启动 httpd 服务)
#停止httpd服务
[root@VM-01 ~]# systemctl stop httpd
[root@VM-01 ~]# ss -tnl |grep 80
#刷新页面发现服务正常,但是负载服务器已漂移为 VM-02:
#恢复httpd服务
[root@VM-01 ~]# systemctl restart httpd
[root@VM-01 ~]# ss -tnl |grep 80
四、创建配置云上 RDS 环境
1.创建数据库
2.创建用户
配置项 | 说明 |
---|---|
数据库账号 | rds_admin |
账号类型 | 普通账号 |
密码 | Rds1234 |
3.创建库,在创建数据库页面,参考下表,配置相关参数,并单击创建
配置项 | 说明 |
---|---|
数据库(DB)名称 appdb | rds |
支持字符集 | utf8mb4 |
4 .验证数据库(CVM内网测试访问RDS)
#记录内网地址及端口号
#使用WebTerminal登陆
#上传rpm包(可自行去mysql官网下载)
#yum安装mysql
yum -y install mysql-community-*
#mysql 登陆验证
命令格式:mysql -h域名 -P端口 -u用户名-p密码 。
域名:要访问的云数据库的域名,域名展示在云数据库的详情页面。
端口:链接端口号默认为3306,其中PostgreSQL默认端口是5432。
用户名:在创建数据库时的用户名。
密码:用户名对应的密码。
五、配置云上OSS和CDN环境
1.设置LB域名解析
#查看LB公网ip
#设置域名解析,通过京东云控制台登陆控制台.
#点击目标域名后面的解析
#说明:本步骤前提为已申请域名且已通过备案,本例已申请并备案域名备用。
#添加解析
#访问域名,验证解析成功
2.部署OSS环境上传测试图片
#新建一个oss空间
#上传文件
六、开启CDN加速
1.通过https://cdn-console.jdcloud.com/domain/list?curTab=list登陆CDN控制台
#添加域名选择OSS回源.https://docs.jdcloud.com/cn/cdn/getting-started
2.在云解析 DNS中添加cname记录
配置项 | 说明 |
---|---|
记录类型 | CNAME-将域名指向另外一个域名 |
主机记录 | 在 CDN 控制台添加域时用到的加速域名的前缀(CDN 加速域名以 www.keepcloud.cn为例,那这里的主机记 录即为 www) |
记录值 | 在 CDN 控制台添加域名后得到的 CNAME 地址 |
3.验证cname配置生效
4.测试 OSS 对象通过 CDN 能被正常访问
#在浏览器输入CDN加速的域名加OSS图片路径
七、测试CDN加速效果
#在 VM-01 和 VM-02 服务器的/var/www/html/路径下创建 html 文件:test.html,通过 OSS 文件aa.webp 的临时 url 和 CDN 分别访问几次,查看对象载入速度。
1.登陆OSS控制台获取外链
2.登陆云主机控制台远程连接VM-01
vim /var/www/html/test.html
<html>
<img src="https://oss-x.s3.cn-north-1.jdcloud-oss.com/aa.webp" />
<img src="http://www.*****.cn/aa.webp" alt="CDN" />
</html>
3.重复步骤在VM-02中创建html文件
4.为了避免缓存影响,通过 chrome 流量器无痕模式并且打开调试(F12 快捷键开启)模式关闭缓存访问 http://******.cn/test.html,查看两个图片对象的载入时间
#第一次测试 CDN 需要回源取文件,两种方式耗时接近
#多次刷新网页后 CDN 方式耗时减少,实际使用中随着访问人数的增加,优势会更加明显
八、部署区域服务器
1.在CVM区服上部署应用和数据库
#通过VNC登陆连接
2.安装配置 MySQL5.6。
(1).创建安装目录
mkdir -p /opt/db
cd /opt/db/
(2).安装 MySQL 5.6
#下载资源包
[root@VM-03 pma]# wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
#安装资源包
[root@VM-03 pma]# rpm -ivh mysql-community-release-el6-5.noarch.rpm
Preparing... ################################# [100%]
package mysql-community-release-el6-5.noarch is already installed
#查看yum源能否看到mysql源
[root@VM-03 pma]# yum repolist all | grep mysql
!mysql-connectors-community/x86_64 MySQL Connectors Community enabled: 178
mysql-connectors-community-source MySQL Connectors Community - disabled
!mysql-tools-community/x86_64 MySQL Tools Community enabled: 83
mysql-tools-community-source MySQL Tools Community - Sourc disabled
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - disabled
!mysql56-community/x86_64 MySQL 5.6 Community Server enabled: 644
mysql56-community-source MySQL 5.6 Community Server - disabled
mysql57-community-dmr/x86_64 MySQL 5.7 Community Server De disabled
mysql57-community-dmr-source MySQL 5.7 Community Server De disabled
#yum安装mysql
[root@VM-03 pma]# yum install mysql-community-server -y
(3).启动并初始化mysql
#启动mysql
[root@VM-03 pma]# service mysqld start
[root@VM-03 pma]# Starting mysqld (via systemctl): [ OK ]
#初始化mysql
[root@VM-03 pma]# mysql_secure_installation
(4).root登陆本地mysql数据库
[root@VM-03 pma]# mysql -uroot -p
3.安装配置 phpMyAdmin
1.创建安装目录
[root@VM-03 pma]# mkdir -p /opt/pma
[root@VM-03 pma]# cd /opt/pma/
2.下载安装包
[root@VM-03 pma]# wget --no-check-certificate https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip
3.安装依赖包
[root@VM-03 pma]# yum install -y httpd php-mysql php
4.删除老程序包
[root@VM-03 pma]# yum list installed | grep php
php.x86_64 5.4.16-48.el7 @base
php-cli.x86_64 5.4.16-48.el7 @base
php-common.x86_64 5.4.16-48.el7 @base
php-mysql.x86_64 5.4.16-48.el7 @base
php-pdo.x86_64 5.4.16-48.el7 @base
#删除老安装包
[root@VM-03 pma]# yum remove -y php.x86_64 php-cli.x86_64 php-common.x86_64 php-gd.x86_64 php-ldap.x86_64 php-mbstring.x86_64 php-mcrypt.x86_64 php-mysql.x86_64 php-pdo.x86_64
Loaded plugins: fastestmirror
No Match for argument: php-gd.x86_64
No Match for argument: php-
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-48.el7 will be erased
---> Package php-cli.x86_64 0:5.4.16-48.el7 will be erased
.........
5.安装RPM包
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64
6.安装 phpMyadmin
#安装解压软件(已安装跳过)
[root@VM-03 pma]# yum -y install unzip
#解压zip文件
[root@VM-03 pma]# unzip phpMyAdmin-4.8.5-all-languages.zip
#复制到指定目录
[root@VM-03 pma]# cp -a phpMyAdmin-4.8.5-all-languages /var/www/html/pma
#生成配置文件
[root@VM-03 pma]# cd /var/www/html/pma
[root@VM-03 pma]# cp config.sample.inc.php config.inc.php
#生成随机字符串备用
[root@VM-03 pma]# tr -d 'a-z0-9A-Z'</dev/urandom |head -30 |md5sum
8e4af9572c8036887cc4b350fc877568 -
#编辑配置文件,添加字符转
[root@VM-03 pma]# vim config.inc.php
#启动http服务
[root@VM-03 pma]# systemctl start httpd
#查看80端口监听
[root@VM-03 pma]# ss -tnl |grep 80
LISTEN 0 80 :::3306 :::*
LISTEN 0 128 :::80 :::*
7.验证数据库管理功能
#登陆控制台记住VM-03公网ip
#打开浏览器输入 ip/pma(访问失败在控制台检查下服务对应端口开没开)
8.制作程序镜像,开新区服
#登陆控制台,找到刚才的云主机
#等待镜像创建完成(过程较慢,需等待一段时间)
#开新服务器
#选择创建的镜像,依次创建
#在确认订单页面,确认各项参数信息。确认无误,阅读、同意并确认开通
#进入控制台,点击远程连接
#启动 MySQL 和 httpd 服务验证服务正常启动
#记录公网ip,浏览器访问