欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 19294|回复: 5

[经验分享] 体验弹性伸缩!在腾讯云 CentOS 服务器上搭建 LNMP环境

[复制链接]

5

主题

0

好友

2913

积分

腾讯云产品经理

Rank: 10Rank: 10Rank: 10Rank: 10

云币
8333
威望
2913
发表于 2016-8-5 10:07:49 |显示全部楼层
这篇教程手把手教你在腾讯云CentOS 服务器上搭建 nginx + mysql + php-fpm 环境,并且配置伸缩组。之后通过使用webbench对网站加压,体验服务器弹性伸缩的过程。


背景:
腾讯云的云服务器(CVM)可以选择多种操作系统,本篇文章选择了Linux 系统。这篇文章的演示是基于腾讯云的 CentOS 操作系统的服务器,我们在上面搭建一个 nginx + mysql + php-fpm 的环境,这就是常说的 LNMP架构 。
腾讯云弹性伸缩服务(Auto Scaling)是根据用户的业务需求和策略,自动调整计算资源的管理服务。可根据定时、周期或监控策略,恰到好处地增加或减少CVM实例,并完成配置,保证业务平稳健康运行。
webbench是Linux下的一个网站压力测试工具,它体积非常小,解压后仅50KB,最多可以模拟3万个并发连接去测试网站的负载能力。


一、创建云服务器实例

先来看看我们单台服务器的架构。
这里采用最简单的架构:我们把应用程序、数据库、文件等所有的资源都放在一台服务器上。服务器操作系统使用Linux,应用程序使用PHP开发,然后部署在Nginx上,数据库使用MySQL。




当然,我们还会加入伸缩组,所以,搭建完成后的效果图是这样的:


建一个服务器实例其实就是去购买一台相应配置的云服务器。系统选用的centos6 64位,购买的1核2G,在安全组的设置中我选择了开放了全部端口,便于访问。具体配置如下,大家可以根据需要自行调整。




购买成功后,我们可以在控制台的云服务器页面得到云服务器的公网ip和登录密码。
我购买的这台服务器地址是 119.29.205.33,使用这个地址配合 root 用户和密码,可以使用工具登录到服务器,对云服务器进行远程管理,比如安装软件,修改设置,重启服务等等。


二、控制云服务器
要控制云服务器可以在腾讯云的控制台控制,也可以远程控制。
控制台控制方法如下:
在管理中心登录该云服务器,之后进入控制台。



之后输入帐号密码,linux默认帐号为root。




远程控制 Linux 类型的系统的服务器,比如 CentOS 系统的服务器,一般不像 Windows 服务器那样,使用图形界面的远程控制。我们需要使用命令行工具,远程连接到服务器,然后使用命令去控制服务器。Windows 用户可以使用 Putty或者SecureCRT,Mac 用户可以使用系统自带的终端工具。然后用 ssh 命令,连接到你的服务器。像这样:
  1. ssh root@119.29.205.33
复制代码

@ 左边的 root 是连接时使用的用户的名字,@ 右边的数字是你的服务器的 IP 地址。这行命令的意思就是,使用 root 用户,登录到 119.29.205.33这台服务器上。回车以后,会提示你输入 root 用户的密码。


们在这里通过secureCRT远程控制云服务器(网上有破解版,用起来比较方便。不想下载用腾讯云自带的控制台也可以)。




使用云服务器的公网ip和用户名密码,新建一个连接,端口默认22。Username默认为root(超级管理员)。








启动云服务器实例成功之后,我们可以连接到该云服务器实例,然后像使用我们面前的计算机一样来使用它。


三、CentOS环境下通过YUM安装软件
为了提升用户在云服务器上的软件安装效率,减少下载和安装软件的成本,腾讯云提供了Yum下载源。在CentOS环境下,用户可通过YUM快速安装软件。
对于Yum下载源,不需要添加软件源,可以直接安装软件包。
在这里,我们要安装nginx、php-fpm和mysql。
安装步骤:
1) 登录操作系统为CentOS的云服务器后,默认已获取root权限。

2) 在root权限下,通过以下命令来安装软件。以nginx为例:
  1. yum install nginx
复制代码
3) 系统会自动搜索相关的软件包和依赖关系,并且在界面中提示用户确认搜索到的软件包是否合适,如下图所示:

4) 输入“y”确认后,开始安装软件,安装完成后会提示“Complete”,如下图所示:

这样,nginx就安装好了。


5) 和安装nginx的步骤一样,继续来安装php-fpm和mysql。
  1. yum install php-fpm
  2. yum install mysql
复制代码

四、CentOS下LNMP环境配置
1. 配置nginx
1) 启动nginx服务
用以下命令启动nginx:
  1. service nginx restart
复制代码

2) 测试nginx服务是否正常运行
用以下命令测试:
  1. wget http://127.0.0.1
复制代码

若结果如下,最后显示" 'index.html' saved ",说明nginx服务正常。
  1. --2013-02-20 17:07:26-- http://127.0.0.1/
  2. Connecting to 127.0.0.1:80... connected.
  3.   HTTP request sent, awaiting response... 200 OK
  4.   Length: 151 [text/html]
  5.   Saving to: `index.html'
  6. 100%[===========================================>] 151 --.-K/s in 0s
复制代码

3) 在浏览器中,访问通过CentOS云服务器公网IP查看nginx服务是否正常运行
如果显示如下,说明nginx安装配置成功:






2. 配置PHP
1) 启动php-fpm
用以下命令启动php-fpm服务
  1. service php-fpm start
复制代码


2) 修改php-fpm和nginx的配置,实现nginx和php联动
用以下命令查看php-fpm默认配置:
  1. cat /etc/php-fpm.d/www.conf |grep -i 'listen ='
复制代码

返回结果为:
  1. listen = 127.0.0.1:9000
复制代码

以上结果表明php-fpm的默认配置的监听端口为9000,现在只用修改配置,将php解析的请求转发到127.0.0.0:9000处理即可。


使用以下命令查找nginx配置文件:
  1. nginx -t
复制代码
并使用vi命令修改该配置文件:




在配置文件中找到以下片段,修改红色部分。



修改完成后,按“Esc”键,输入“:wq”,保存文件并返回。
通过下面的命令,查看配置是否正确:
  1. cat /etc/nginx/nginx.conf
复制代码



3. 重启服务
用以下命令重启nginx,使配置生效:
  1. service nginx restart
复制代码

结果如下:
  1. Stopping nginx: [ OK ]
  2. Starting nginx: [ OK ]
复制代码



4. 环境配置验证
用以下命令在web目录下创建index.php:
  1. vim /usr/share/nginx/html/index.php
复制代码

写入如下内容:
  1. <?php
  2. echo "<title>Test Page</title>";
  3. echo "hello world";
  4. ?>
复制代码

在浏览器中,访问CentOS云服务器公网IP查看环境配置是否成功,如果页面可以显示“hello world”,说明配置成功。



五、安装wordpress
在连接云数据库之前,我们要安装wordpress。连接云数据库不一定非要经过wordpress,就像搭网站不一定非要经过wordpress,但是使用这个工具会更加简单。
wordpress的安装配置方法如下:
1)下载wordpress安装包。


2)安装代码如下:
  1. yum install lrzsz              #下载rz这种上传/下载工具
  2. rz
复制代码

  1. tar -zxvf wordpress-4.5.3-zh_CN.tar.gz   #解压
复制代码


如果出现这种结果就是安装成功了:



安装成功之后在浏览器输入公网IP+/wordpress,就会出现这种界面:





六、云数据库的购买和初始化
安装好wordpress之后,现在我们来配置数据库。在这里我们选择使用腾讯云的云数据库。
相比于传统数据库MySQL,云数据库MySQL主要有以下特点:
(1)云存储服务,是腾讯云平台提供的面向互联网应用的数据存储服务;
(2)完全兼容MySQL协议,适用于面向表结构的场景,适用MySQL的地方都可以使用云数据库;
(3)提供了高性能、高可靠、易用、便捷的MySQL集群服务;
(4)整合了备份、扩容、迁移等功能,同时提供phpMyAdmin管理后台,用户可以方便的进行数据库的管理。


首先购买一台云数据库for mysql,这里可以根据自己网站和数据的规模选取硬盘大小。购买成功后,可以在云数据库控制台中进行登录(腾讯云内置了phpmyadmin),点击登录后在如下页面输入用户名密码。




登录后,我们可以为自己的网站建一个数据库实例,比如我建的实例名为my_db。









现在我们来通过wordpress把云服务器和云数据库连接起来。
步骤如下:
(1)点击“现在就开始”按钮




(2)提交数据库连接信息

点击提交。


注意:
  • 数据库主机这里填云数据库的内网地址。


(3)进行安装



直接点击进行安装。


注意,如果安装失败,可以尝试在命令行输入以下代码,然后按上面的步骤重试一次。
  1. chmod -R 777 wordpress                        #增加目录读写权限
复制代码

之后按照默认一路点下来,直到出现这个页面,我们的网站就基本上搭建成功了:






登录进wordpress,给网站添加一个用户:



输入信息,点击添加用户。这时我们切换到刚才登录的云数据库管理页面,可以看到my_db的my_user表中多了一行新的信息,这就代表云服务器和云数据库的连接成功了~





七、给云服务器配置伸缩组

在给云服务器绑定伸缩组之前,我们要先制作云主机的镜像,这样做的好处在于绑定了镜像之后,自动加入的云主机可以直接使用,不需要再配置环境。


制作好镜像之后,下面我们开始配置伸缩组:

第一步,当然是要开通AS弹性伸缩服务了,请移步https://www.qcloud.com/product/as.html




开通很顺利,可以进入AS控制台了。


第二步新建启动配置,在这里,有两个注意点。第一点是“选择机型”这一步的时候启动配置的CPU、内存配置要和我们购买的CVM云主机相同。第二点是选择镜像的时候要绑定自定义镜像→我们刚刚制作的云主机的镜像。




第三步我们来新建伸缩组。


我们最小伸缩数设为了1,最大伸缩数设为了2,并且绑定了刚刚建立的启动配置。


第四步我们来新建伸缩策略。伸缩策略分为定时任务和告警触发任务两种,我们在这里选择了告警触发策略:如果云主机被监测到CPU利用率超过了50%,就会触发策略横向扩容。





第五步我们来绑定云主机。在云主机列表添加进我们购买的云主机实例:





到目前为止。给云主机配置伸缩组的任务就已经完成了。
好了,确定一下AS服务的状态吧。wordtest伸缩组已启动,没有任何cvm伸缩活动。


再来观察一下当前系统的负载情况,通过云监控了解ECS在加压之前的负载情况。CVM的CPU使用率是比较低的。




八、使用webbench做压力测试
首先我们先来安装webbench吧, webbench安装过程比较简单,如果你的机子之前安装过一些常用软件直接使用下面的命令就可以了:
  1. wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
  2. tar zxvf webbench-1.5.tar.gz
  3. cd webbench-1.5
  4. yum install ctags
  5. yum install gcc
  6. make && make install
复制代码
没错,安装就是如上这么简单。


那安装好了webbench,下面要做的就是开始压力测试了,在shell里面输入下面的命令:
  1. webbench -c 500 -t 30 http://XXXX/                         #XXXX就是公网IP地址
复制代码
参数说明:-c表示并发数,-t表示时间(秒)


最后就会出现详细的测试信息了:



那么来看看我们的云主机的监控记录:




经过加压,我们的CPU利用率提高到了19.8%,不过没有达到我们预设的触发报警伸缩的指标50%呢。让我们看看伸缩组的伸缩记录:

果然并没有活动。


所以我们继续加压:
  1. webbench -c 5000 -t 120 http://XXXX/                        #XXXX就是公网IP地址
复制代码


再看看云主机实例结果:






再看看我们的弹性伸缩活动记录,果然扩容了一台,而云服务器实例的CPU也降了下来:



结束语:
通过上面的过程,我们首先搭建了一个LNMP的环境,然后配置了伸缩组,通过设置报警伸缩策略,对网站加压,我们快速体验了AS弹性伸缩服务的自动伸缩功能。CVM数量由1个实例变成2个实例,应用服务器处理能力增加一倍。
其实AS除了报警伸缩策略,还有定时伸缩等其它功能,还可以搭配负载均衡CLB一起使用。这些且听下回分解吧。











0

主题

1

好友

1656

积分

攻城师[LV3]

Rank: 3Rank: 3Rank: 3

云币
5298
威望
1656
发表于 2016-8-8 11:22:19 |显示全部楼层
赞一个!
下回分解的时候,建议LNMP环境的主机制作镜像,那样伸缩出来的主机不用再配置了。

点评

pdm  感谢,根据你的建议已经修改帖子了  详情 回复 发表于 2016-8-8 12:52
pdm  感谢,根据你的建议已经修改帖子了  详情 回复 发表于 2016-8-8 12:51
pdm  感谢,根据你的建议已经修改帖子了  详情 回复 发表于 2016-8-8 12:51
回复

使用道具 举报

5

主题

0

好友

2913

积分

腾讯云产品经理

Rank: 10Rank: 10Rank: 10Rank: 10

云币
8333
威望
2913
发表于 2016-8-8 12:51:56 |显示全部楼层
九9nine 发表于 2016-8-8 11:22
赞一个!
下回分解的时候,建议LNMP环境的主机制作镜像,那样伸缩出来的主机不用再配置了。 ...

感谢,根据你的建议已经修改帖子了
回复

使用道具 举报

5

主题

0

好友

2913

积分

腾讯云产品经理

Rank: 10Rank: 10Rank: 10Rank: 10

云币
8333
威望
2913
发表于 2016-8-8 12:51:59 |显示全部楼层
九9nine 发表于 2016-8-8 11:22
赞一个!
下回分解的时候,建议LNMP环境的主机制作镜像,那样伸缩出来的主机不用再配置了。 ...

感谢,根据你的建议已经修改帖子了
回复

使用道具 举报

5

主题

0

好友

2913

积分

腾讯云产品经理

Rank: 10Rank: 10Rank: 10Rank: 10

云币
8333
威望
2913
发表于 2016-8-8 12:52:01 |显示全部楼层
九9nine 发表于 2016-8-8 11:22
赞一个!
下回分解的时候,建议LNMP环境的主机制作镜像,那样伸缩出来的主机不用再配置了。 ...

感谢,根据你的建议已经修改帖子了
回复

使用道具 举报

0

主题

0

好友

10

积分

小白[LV1]

Rank: 1

云币
23
威望
10
发表于 2017-8-30 23:15:01 |显示全部楼层
创建出新的CVM之后,web应用就已经启动了? 伸缩出来CVM和之前的CVM的系统运行状态一致?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-7-18 14:48 , Processed in 1.146680 second(s), 29 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部