nginx实现负载均衡
一、负载均衡
负载均衡就是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
根据此次做的实验来理解就是,当大量用户访问某个服务器时(即主服务器),为了减轻主服务器的负担,就会跳转到自己的子服务器上,实现均衡负载。
二、反向代理与正向代理
反向代理:代理的是服务器端
正向代理:代理的是客户端
三、用nginx实现负载均衡
环境:三台centos7虚拟机
1.先创建第一台虚拟机,等环境配置好后,另外两台直接克隆就可以
这里,创建的第一台虚拟机作为主服务器,克隆的两台分别作为子服务器一、子服务器二
2.装好虚拟机后,打开终端
进入root:
su root
3.安装nginx
先更新下rpm依赖库,配置两个源站
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
再安装nginx
yum -y install nginx
4.安装maridab
安装maridab
yum -y install mariadb-server
启动maridab
systemctl start mariadb.service
初始化maridab
mysql_secure_installation
5.安装php/fpm
yum -y install php php-fpm
6.更改nginx配置文件
打开 default.conf
vim /etc/nginx/conf.d/default.conf
按下键盘上的 i 键进入编辑模式
启动 nginx 和 php-fpm
systemctl start php-fpm nginx
7.编辑 index.php 文件,向网页中写入内容
vim /usr/share/nginx/html/index.php
按下键盘上的 i 键进入编辑模式
输入:
<?php echo '<p>******</p>'; ?>
******可替换为别的内容,只要在后边修改两个子服务器的php文件的内容不一样就行,为了能够肉眼看出实现负载均衡
写完内容之后,:wq,保存并退出
8.关闭防火墙及selinux
systemctl status firewalld //查看防火墙状态
systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭selinux
9.完成以上操作后,关机,进行克隆
选择虚拟机当前状态,创建完整克隆
克隆完两台后,将三台虚拟机都开机
10.修改php文件
由于克隆的虚拟机中都已经安装和配置好nginx了,所以不需要再重新安装
现在需要修改两台子服务器的 php 文件
让php文件里的内容不一样,这样在网页上显示的时候就不一样,可以看出用户进行访问时,是用的哪台服务器
vim /usr/share/nginx/html/index.php
两台子服务器均进行以上操作
可以将子服务器一的******换成*
子服务器二的******换成**
11.分别在克隆的虚拟机中查看两台子服务器的ip地址
ifconfig
12.再回到主服务器,修改nginx配置文件
vim /etc/nginx/conf.d/default.conf
按 i 进入编辑
(1)将之前更改的 index.php 再改回 index.html
(2)在文件的顶部添加以下模板的内容:
upstream (启用功能)$名字 {
server $IP/$Domain A;
server $IP/$Domain B;
}
如:
upstream lcf {
server 192.168.149.131; //子服务器一的ip
server 192.168.149.137; //子服务器二的ip
}
(3)在server内部添加:proxy_pass http://$名字;
location / {
……
proxy_pass http://$名字;
}
}
如:
location / {
……
proxy_pass http://lcf;
}
}
(4):wq 保存并退出
13.开启nginx服务
systemctl start nginx
14.查看主服务器的ip
ifconfig
在自己电脑的浏览器上输入主服务器的ip,进行访问
多刷新几次,会发现页面显示的内容不一样,即实现了负载均衡