一、搭建Nginx服务
Nginx 是俄罗斯人编写的十分轻量级的HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器
1 安装扩展包epel
在安装Nginx之前需要安装epel扩展包,先通过rpm -qi epel-release 查看一下是否安装,通过查看已经安装,如果没有安装就需要通过yum install epel进行安装

通过yum安装Nginx需要有扩展的源epel.repo ,确定有后yum install nginx -y 就开始安装

查看下Nginx版本是1.10.2,这是官方的稳定版本

2 修改配置文件
Nginx的配置文件村村存放在/etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
2.1 server
下图中sever中 80代表的是监听的是80端口,root 的路径/var/share/nginx/html;是网站的根目录,这是去全局的,最后必须用分号结尾

2.2 location
- url 统一资源定位符
|
|
- uri 统一资源占位符
|
|
能定位到服务端的c.txt文件
客户端提交请求,最终服务端寻找的就是
|
|
上网最终就是上网查找文件下载到本地
1 http:// —>sever端基于http给clint发送数据
2 192.168.1.1:80 —>定位到全世界唯一的软件
3 /a/b/c.txt —> /先找软件的根 root /usr/share/nginx/html
在找根的时候会先找location,没有location会从root寻找

3 启动软件
3.1 启动Nginx服务
第一次启动的时候需要用Start,systemctl start nginx,启动后可以通过systemctl status nginx 查看状态

Nginx启动后,修改配置文件后需要重新启动,用systemctl restart nginx
3.2 通过浏览器访问
先获得服务端的IP地址,ifconfig 得到IP地址是192.168.16.134
在浏览器中输入192.168.16.134不能访问,这是软件防火墙的问题,通过systemctl stop firewall 就能把防火墙关闭,重新输入就能访问

下面修改index文件,在文件中写入welcome Nginx


3.3 创建一个文件的,通过目录进行访问

重启Nginx在浏览器中

3.4 修改location
在location中添加 根目录和index

将在文件中写入内容

在浏览中输入192.168.16.134/index.html出现403页面,尝试关闭软件防火墙还是不行,通过查找资料关闭内核防火墙,修改/etc/selinux/config 文件,
将SELINUX=enforcing改为SELINUX=disabled
重启机器
在浏览中输入192.168.16.134/index.html

二、Nginx反向代理
在Nginx官网中找到Using nginx as HTTP load balancer,意思是使用Nginx作为负载均衡
将一台机器配置为Nginx服务器,当有访问的时候,由这台服务器负责分配流量到不同的服务器
下面通过搭建一台Nginx服务器,反向代理3台服务器
具体的环境是在VMware中操作,同过软件的克隆功能复制出3台web服务器,分别是web1、web2、web3.原来的主机做负载均衡
通过xshell5进行远程连接


修改3个web服务器的主页
分别修改 /var/www/html/index.html中的内容为web1、web2、web3,用systemctl restart nginx重启nginx服务,在浏览器中分别输入相应的IP地址就能验验证修改的内容。
我们要做的是通过访问反向代理主机就能访问web123的内容
修改反向代理主机的配置文件
nginx做负载均衡的时候有3中调度算法
- 轮询
- 最小连接
- IP hash
1 基于轮询的方式调度三台web
在反向代理主机的配置文件中添加
|
|
这里面这要是修改三处,一是名字myapp1,在实际的测试中修改成了Pythonwebtest,二是下面的域名修改成web1、web2、web3的IP地址,三是在server中添加proxy_pass http://pythonwebtest;


实验结果:
在浏览器中访问反向代理主机的IP地址,不断刷新显示的内容依次是web1、web2、web3



2 hash的方式调用三台web
IP hash会将访问的IP地址固定到一台web服务器,作用就是会话保持
|
|
同样的将myapp1修改成pythonwebtest
实验结果就是当访问反向代理主机的时候一直刷新返回的都是web1
3 基于权重的方式调度三台web
|
|
具体的实现就是在轮询的基础上再相应的IP后面添加weight并赋值
实验结果:
当访问反向代理主机的时候不断刷新,前3次返回的是web1,之后依次返回web2、web3,然后是3次web1,依次往复循环
三、nfs服务
NFS 是Network File System的缩写,即网络文件系统。
### 1 安装nfs
yum install rpcbind nfs-utils -y
2 配置
配置文件在/etc/exports
/share 192.168.16.0/24(rw,sync,fsid=0)
把IP地址设置成相同的子网16,这样就都能访问了,这里通过设置反向代理服务器上的文件作为共享文件
3 修改share目录的权限
将share目录的权限修改成 chmod -R o+w /share
### 4 先为rpcbind和nfs做开机启动
|
|
5 启动
必须先启动rpcbind服务
|
|
6 确认NFS服务器启动成功
|
|
出现share目录证明启动成功
|
|
|
|
现在还没有服务器连接
7客户端安装并开启服务
|
|
|
|
在web1、web2、web3中进行挂载
|
|
-t nfs 是指定文件的类型

此时,就可以在浏览器中访问192.168.16.134/share.txt
web1、web2、web3 此时共享/var/www/html/

四、nginx反向代理+三台web+nfs共享存储实现集群配置
在虚拟机中进行配置,一台机器做nginx反向代理,三台web服务器作为处理任务的服务器,同时实现nfs共享文件存储

1 搭建nginx反向代理
之前已经主机中安装了nginx,其他的机器是通过克隆出来的,现在需要开启nginx,在xshell中发送systemctl start nginx启动nginx,发送systemctl status nginx查看nginx的状态
2 将主机192.168.16.122设置成反向代理服务器
修改配置文件,设置成轮询方式
3 配置nfs服务
- 安装nfs和rpcbind
RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去
要注意,要启动 NFS 之前,RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外,RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。
- 修改配置文件
/share 192.168.16.0/24(rw,sync,fsid=0)
3.1 服务端
在服务端新建/share并把目录的权限的设置成其他用户可读可写
输入exportfs可以查看服务端分享的目录,这个文件中可以写入的内容是需要共享的IP段,文件的权限,同步等
需要注意的是服务端的配置文件中,location中不需要路径,root也不需要路径

3.2 客户端
在客户端安装nfs和rpcbind并启动,通过showmount -e 192.168.16.122可以查看主机分享的目录。下一步就是把客户端分别挂载到/share下
这个命令只能挂载一次,重启后需要重新挂载。

现在在/var/www/html下新建文件,在其他的web中都可以查看 修改
现在通过监控日志文件查看负载均衡,在nginx反向代理的服务器中看到的是Windows电脑访问的IP等信息,在web1、web2、web3中监控信息都是反向代理服务器的IP等信息,但是是以轮询的方式进行访问
此时默认访问的是index的信息,在共享路径下有别的文件也能够访问。
|
|
基于nginx的负载均衡配置,打开后端被代理服务的access.log日志,tail -f access.log来观察访问,访问LB刷新页面发现内容保持一致,但是每台被代理的机器的access.log日志都有新的内容进来
五、源码安装nginx
1 安装环境
从GitHub下载nginx的源码包并解压,在机器上安装开发工具
2 制作Makefile文件
|
|
3 编译并安装
|
|
4设置环境变量
|
|
5 启动
|
|
在浏览器中输入主机的IP地址就能访问了