nginx服务、nginx反向代理和nfs共享服务

使用nginx作为HTTP负载均衡器

http://nginx.org/en/docs/http/load_balancing.html

介绍

负载平衡是一种常用的跨多个应用程序实例 技术优化资源利用率,最大化吞吐量, 减少延迟,并确保容错配置。

可以使用nginx作为非常有效的HTTP负载均衡器 将流量分发给几个应用程序服务器和改善 性能、可伸缩性和可靠性nginx的web应用程序。

负载平衡方法

以下负载平衡机制(或方法)的支持 nginx:

  • 循环——请求分发到应用程序服务器 以循环的方式,
  • least-connected——下一个请求分配给服务器的 的活跃连接数,
  • ip-hash——一个哈希函数是用来确定哪些服务器应该 被选中下一个请求(基于客户机的IP地址)。

 

 

默认的负载平衡配置

最简单的配置负载平衡nginx看起来 如下:

http {
上游myapp1 {
服务器srv1.example.com;
服务器srv2.example.com;
服务器srv3.example.com;
}

服务器{
听80;

位置/ {
proxy_pass http://myapp1;
}
}
}

 

在上面的示例中,有三个相同的应用程序的实例 srv1-srv3上运行。 当负载平衡方法不是特别的配置, 它默认为循环。 所有请求都代理服务器组myapp1,nginx应用HTTP负载 平衡分配请求。

反向代理实现HTTP nginx包括负载平衡, HTTPS,FastCGI、uwsgi SCGI,memcached。

配置HTTPS而不是HTTP负载平衡,只使用“HTTPS” 的协议。

When setting up load balancing for FastCGI, uwsgi, SCGI, or memcached, use fastcgi_pass,uwsgi_passscgi_pass, and memcached_pass directives respectively.

 

至少连接负载均衡

另一个负载平衡的纪律是least-connected。 Least-connected允许控制应用程序的负载 实例的情况更公平一些请求 需要更长的时间来完成。

least-connected负载平衡,nginx将尽量不要超载 忙与过度的请求,应用服务器分发新 请求一个不太繁忙的服务器。

Least-connected负载平衡在nginx被激活 least_conn指令使用的服务器组配置:

上游myapp1 {
least_conn;
服务器srv1.example.com;
服务器srv2.example.com;
服务器srv3.example.com;
}

 

 

会话持久性

请注意,与循环或least-connected负载 平衡,可能每个后续客户的请求 分发给不同的服务器。 没有保证相同的客户端会永远 针对同一个服务器。

如果有需要将客户端与一个特定的应用程序服务器 换句话说,让客户的会话“粘性”或“持续” 方面,总是试图选择一个特定的服务器——ip-hash负载 可以使用平衡机制。

ip-hash,客户机的IP地址作为散列的关键 确定哪些服务器应该选择服务器组 客户的请求。 这个方法确保了来自相同客户机的请求 总是指向相同的服务器 除非该服务器不可用。

配置ip-hash负载平衡,只是添加ip_hash指令到服务器(上游)组配置:

上游myapp1 {
ip_hash;
服务器srv1.example.com;
服务器srv2.example.com;
服务器srv3.example.com;
}

 

 

加权负载平衡

也可以影响甚至nginx负载平衡算法 进一步通过使用服务器的权重。

在上面的例子中,这意味着服务器权重不配置 所有指定的服务器被视为同等资格 特定的负载平衡方法。

与特定的循环或多或少也意味着平等 分布在整个服务器的请求——提供有足够的 请求,请求以统一的方式处理 足够快的完成。

重量参数指定一个服务器,重量是占一部分 负载均衡的决定。

上游myapp1 {
服务器srv1.example.com重量= 3;
服务器srv2.example.com;
服务器srv3.example.com;
}

 

在这个配置中,每5新的请求将分布在 应用程序实例如下:3请求将被引导 srv1、一个请求将srv2 srv3和另一个。

它也同样可以使用与least-connected和权重 ip-hash nginx的负载平衡在最近的版本。

 

nginx  一个web软件

nagios  一个监控软件

url:http://202.102.10.10:80   统一资源定位符
uri:http://202.102.10.10:80/a/b/c.txt 统一资源标识符

 

安装nginx服务

cd /etc/yum.repos.d

ls  查看yum源在不在

systemctl stop firewalld  关闭防火墙 systemctl disable firewalld  开机也不启动防火墙,太粗暴

yum install epel -release -y 装一个扩展包,装后有epel.pepo和epel -testing.pepo源

yum install nginx -y  安装nginx软件

systemctl start nginx  启动nginx软件(启动后重新启动systemctl restart nginx,只能在实验环境用)

vim /etc/nginx/nginx.conf   #查看nginx的配置文件

###{#配置文件内的信息

/var/log/nginx/error.log   nginx的错误日志

/var/log/nginx/access.log   nginx进程日志

server{

    root /usr/share/nginx/html/ 默认访问路径

     }

http://202.102.10.10:80/a/b/c.txt 第一段:http://----->server端是基于http协议给客户端发数据的

第二段:202.102.10.10:80---->定位到全世界范围内唯一一款软件是谁

第三段:/a/b/c.txt----》/usr/share/nginx/html/a/b/c.txt

###} 

测试nginx服务

systemctl reload nginx 修改配置文件后,要重新加载一下nginx的配置文件

mkdir /usr/share/nginx/html/a/b -p  递归创建文件目录

echo "welcome oldboy" >>/usr/share/nginx/html/a/b/c.txt

systemctl status nginx  查看启动状态

然后在客户端进行访问http://202.102.10.10:80/a/b/c.txt

vim /etc/nginx/nginx.conf

 自己定义访问路径,测试nginx

##{

location{

    root /var/www/html:#指定访问路径

    #index index.html   可以指定该路径下文件加载的顺序

    }

##}

systemctl reload nginx 修改配置文件后,要重新加载一下nginx的配置文件

mkdir  -p /var/www/html

touch /var/www/html/index. html

echo "welcom oldboy ">> /var/www/html/index.html

http://202.102.10.10:80/index.html

 

正向代理和反向代理: 

 

配置反向代理

echo "web1 ">> /var/www/html/index.html  在服务端1

echo "web2 ">> /var/www/html/index.html  在服务端2

echo "web3 ">> /var/www/html/index.html  在服务端3

systemctl start nginx  启动nginx软件(启动后重新启动systemctl restart nginx)

vim /etc/nginx/nginx.conf  代理机修改配置

修改 http{

#轮询

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

    }

修改 location,因为是代理用的,所以改为 proxy_pass http://myapp1;

然后在客户端访问代理主机

http://202.102.10.10:80

 

nfs共享存储

yum install rpcbind nfs-utils -y  

在服务端

mkdir /share   创建一个共享目录

mkfs.ext4 /dev/sdb1  #格式化一个盘

mount /dev/sdb1  /share  #将盘挂载到共享目录下

ifconfig eno1677736(网卡名)  192.168.16.147   #配置临时IP

touch /share/share.txt

echo 'gongxiang' > /share/share.txt

vim /etc/exports  修改配置文件
/share 192.168.16.0/24(rw,sync,fsid=0)

systemctl start rpcbind.service   #查看启动是否成功systemctl status rpcbind.service

systemctl start nfs-server.service#查看启动是否成功systemctl status nfs-server.service

systemctl enable rpcbind.service    设置为开机启动

systemctl enable nfs-server.service 设置为开机启动

chmod -R o+w /share   放开写权限,服务端才能写东西

exportfs  查看共享的目录

showmount -e #默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错

showmount -a #显示已经与客户端连接上的目录信息(几个客户端挂载到共享目录下)

 在客户端

showmount -e 192.168.16.147  查看服务端共享的目录

mount -t nfs (指定文件系统)192.168.16.147:/share   /var/www/html/   完成挂载

ls /var/www/html/  就能看到服务端/share下的内容

 

 

nginx反向代理+三台web+nfs共享存储实现集群配置

  

源码安装nginx,并按照作业一描述的那样去测试使用

 http://blog.csdn.net/finded/article/details/51889914   源码安装nginx

 

 

posted @ 2017-03-20 22:20  shy车队破风手  阅读(666)  评论(0编辑  收藏  举报