您的位置:首页 > 运维架构 > Nginx

基于Nginx的负载均衡网站架构

2017-09-27 17:31 495 查看
操作环境:VMware Fusion

操作系统:Centos6

实验架构设计图及实现:



实验说明:

Nginx服务器作为Web前端,当接收到用户的Web访问请求时,将请求转发 给内部真正的WEB服务器。

Nginx具有两个网卡,一个网卡与Internet连接,一个网卡与内网相连 (能够访问内网真正的WEB服务器)。

WEB服务器采用Apache+PHP 技术,能够与Nginx的内部网卡和MySQL数据 库服务器通信。

MySQL数据库服务器用于保存网站数据

实验要求:

1.基于VMware Fusion构建拓扑图(也可使用virtualbox)。图中的 IP地址仅为参考,可以自行选择IP段。

2.操作系统使用CentOS 6 64位。Web服务器和MySQL数据库服务器的相关 软件Apache、PHP、MySQL可以使用CentOS软件仓库通过网络安装。Nginx需 要自行从官方网站下载源码安装。

3.在Nginx服务器对Nginx进行负载均衡配置。要求解决session问题(请采 用ip_hash方式)。

4.在两台WEB服务器上配置好Apache+PHP运行环境。在两台服务器上安装同 一款PHP开源程序(例如:Discuz,phpmyadmin,wordpress),数据使用 拓扑图中的MySQL服务器。

5.在MySQL服务器上对MySQL进行安装和配置,确保WEB服务器能够正常使用 将数据保存到MySQL数据库服务器上。

6.在Nginx服务器上启用iptables防火墙,对外部网卡仅开放TCP的80和22端 口,其他端口禁止访问,内部网开不做限制。

实验步骤:

一、首先需要先创建4个虚拟机,其中3个虚拟机当内网Server(两个Web Server,一个Mysql Server);一个Nginx Server(有两个网卡,eth0网卡与内网在同一网段,eth1网卡与外网Client在同一网段中);本机(或再创建一个虚拟机当Client)当Client(用来访问Web)



二、对内网每台Web Server的配置

1、Web1,Web2分别安装Apache、PHP服务,设置仅主机模式,然后配置IP:

Web1:192.168.56.2/24



Web2:192.168.56.3/24



并把Web1和Web Server的iptables和SELinux都关掉





Web2同上

2、并在每台Web Server上安装同一款PHP开源程序Wordpress,在连接数据库的时候设置IP为MySQL Server的IP地址。





(1)首先先从互联网上获取wordpress压缩包,而后解压缩,并把解压后的目录几文件全部移动到/var/www/html/目录下。

wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz

由于设置了仅主机,故我从Nginx服务器下载并推送过去



启动httpd服务



(2)修该配置文件,DocumentRoot和Direstory为以下内容



保存退出,重载服务 reload

PS:一般在实际运用中一般都是重载服务而不是重启服务

(3)cd 到/var/www/html/wordpress/目录下,然后把wp-config-sample.php拷贝一份,并命名为wp-config.php.而后修改此文件内容如下



(4)、在MySQL Server上安装Mysql服务,并设置IP为192.168.56.4/24在数据库中添加一个用户,作为Web1和Web2的用户。







启动mysql服务:



创建rsq2用户,并授予所有权限:



把mysql数据库转移一下



(5)在Web1上测试与MySQL Server 的连通性



(6)Web2上的操作同Web1,并修改wordpress中的wp-config.php文件,把数据库指向MySQL Server中,其他和Web1中一样。



3、安装Wordpress的步骤一样

两个Web为了以示区别,设置两个不同的站点标题

下面只演示Web2的安装:

站点标题:RSQ2的个人站点

用户名:rsq2

密码:123456

由于Web1的数据库和Web2共用同一个数据库,故直接导向Web2的页面







三、对Nginx的操作配置

1、添加一块网卡,并把此网卡的模式也改为仅主机



2、配置网卡IP地址

eth0:10.33.16.160/16



eth1:192.168.56.1/24



3、打开核心转发功能,并在外网Client上添加网关,以便外网能ping通内网。





4、打开防火墙,设置iptables防火墙,对外部网卡仅开放TCP的80和22端口,其他端口禁止访问,内部网关不做限制。





5、编译安装Nginx

(1)、先去官网下载源码压缩文件,而后解压,这里下载的版本是1.10.0

wget http://nginx.org/download/nginx-1.10.0.tar.gz



(2)、yum install pcre-devel 会用到这个包,否则在编译的时候可能会报错

(3)、添加nginx用户:groupadd nginx

useradd -g nginx -r nginx

id nginx



(4)源码编译安装:

./configure–prefix=/usr/local/nginx

–conf-path=/etc/nginx/nginx.conf

–user=nginx

–group=nginx

–error-log-path=/var/log/nginx/error.log

–http-log-path=/var/log/nginx/access.log

–pid-path=/var/run/nginx/nginx.pid

–lock-path=/var/lock/nginx.lock

–with-http_ssl_module

–with-http_stub_status_module

–with-http_gzip_static_module

–with-http_flv_module

–with-http_mp4_module

–http-client-body-temp-path=/var/tmp/nginx/client

–http-proxy-temp-path=/var/tmp/nginx/proxy

–http-fastcgi-temp-path=/var/tmp/nginx/fastcgi



make && make install



(5) 创建所需要的目录





(6)启动Nginx服务

/usr/local/nginx/sbin/nginx



(7)修改Nginx配置文件/etc/nginx/nginx.conf

在server 外添加如下内容



然后在server中添加如下内容



重载Nginx服务

/usr/local/nginx/sbin/nginx -s reload



在wordpress中把URL指向Nginx Server中



基本上到这已经结束了,下面就测试访问:







测试成功,外网Client访问Nginx的外网网卡,可以由Nginx代理,然后访问内网的两个Web。

后期也可以做个集群,实现轮询访问,若是服务器性能不同,还可以加权访问;也可以对其进行各种优化而使服务性能最优,这里就不多写了!



END!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx apache centos
相关文章推荐