• Linux之Nginx服务 nfs文件存储 负载均衡


    一、搭建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 统一资源定位符
    http://192.168.1.1:80 能定位到唯一的一个软件
    
    • uri 统一资源占位符
    http://192.168.1.1:80/a/b/c.txt
    

    能定位到服务端的c.txt文件

    客户端提交请求,最终服务端寻找的就是

    /var/share/nginx/html/a/b/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 就能把防火墙关闭,重新输入就能访问

    systemctl disable firewalld配置开机关闭防火墙
    

    下面修改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

    在反向代理主机的配置文件中添加

    http {
        upstream myapp1 {
            server srv1.example.com;
            server srv2.example.com;
            server srv3.example.com;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://myapp1;
            }
        }
    }
    
    

    这里面这要是修改三处,一是名字myapp1,在实际的测试中修改成了Pythonwebtest,二是下面的域名修改成web1、web2、web3的IP地址,三是在server中添加proxy_pass http://pythonwebtest;

    实验结果:

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

    2 hash的方式调用三台web

    IP hash会将访问的IP地址固定到一台web服务器,作用就是会话保持

    upstream myapp1 {
        ip_hash;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
    

    同样的将myapp1修改成pythonwebtest

    实验结果就是当访问反向代理主机的时候一直刷新返回的都是web1

    3 基于权重的方式调度三台web

      upstream myapp1 {
            server srv1.example.com weight=3;
            server srv2.example.com;
            server srv3.example.com;
        }
    
    

    具体的实现就是在轮询的基础上再相应的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做开机启动

    systemctl enable nfs-server.service
    
    systemctl enable rpcbind.service
    

    5 启动

    必须先启动rpcbind服务

    systemctl start rpcbind.service
    
    systemctl start nfs-server.service
    

    6 确认NFS服务器启动成功

    exportfs 
    

    出现share目录证明启动成功

    showmount -e #默认查看自己共享的服务
    
    showmount -a #显示已经与客户端连接上的目录信息
    

    现在还没有服务器连接

    7客户端安装并开启服务

    yum install rpcbind nfs-utils -y
    
    
    systemctl enable rpcbind.service && systemctl start rpcbind.service						
    
    

    web1、web2、web3中进行挂载

    mount -t nfs 192.168.16.134:/share /var/www/html/
    

    -t nfs 是指定文件的类型

    此时,就可以在浏览器中访问192.168.16.134/share.txt

    web1、web2、web3 此时共享/var/www/html/

    四、源码安装nginx

    1 安装环境

    从GitHub下载nginx的源码包并解压,在机器上安装开发工具

    2 制作Makefile文件

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

    3 编译并安装

    make && make install
    

    4设置环境变量

    vim /etc/profile.d/http.sh
    PATH=/usr/local/nginx/sbin:$PATH
    

    5 启动

    systemctl start nginx
    

    在浏览器中输入主机的IP地址就能访问了

  • 相关阅读:
    整型表示
    有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
    shell排序算法实现
    一些小细节
    wordpress新注册用户或重置密码链接失效
    wordpress访问速度慢
    mysql主从复制
    mysql root密码忘记
    mysql root用户登录后无法查看数据库全部表
    Ansible
  • 原文地址:https://www.cnblogs.com/Python666/p/6589356.html
Copyright © 2020-2023  润新知