Nginx简单搭建实现负载均衡!

技术分享 2018年09月17日 阅读 331 豆浆大叔

Nginx搭建负载均衡环境简单实现

安装Nginx

Centos7 安装Nginx

第一种方式:通过yum安装

本机安装版本:nginx version: nginx/1.12.2

工具 :VMware虚拟机 安装好一个环境 然后在完整克隆两个nginx的环境即可。

总体实现结果是这样的:

负载概念:
负载均衡:把众多的访问量分担到其他的服务器上,让每个服务器的压力减少。
通俗的解释就是:把一项任务交由一个开发人员处理总会有上限处理能力,这时可以考虑增加开发人员来共同处理这项任务,多人处理同一项任务时就会涉及到调度问题,即任务分配nginx在这里的角色相当于任务分配者。

网上找一张图片为了方便看的更清楚一下:

直入正题

测试环境
A服务器IP :192.168.153.128 (主服务器作为分发接口请求)
B服务器IP :192.168.153.129 负载服务器1
C服务器IP :192.168.153.130 负载服务器2

负载的大致思路:

A服务器做为主服务器,域名直接解析到A服务器上,由A服务器负载均衡到B服务器与C服务器上等等其他服务器。

A服务器的nginx配置:

PS:箭头部分的必须相同一致

Server1可以随意配置的。

upstream指令主要是用于设置一组可以在proxy_pass(代理)和fastcgi_pass(处理动态资源数据)指令中使用代理服务器,默认均在均衡方式为轮询。

weight权重:
通俗的讲就是,对服务器性能的区分,权重高的,负载的压力就大一些。

Upstream server1{
 ip_hash;
 server 192.168.153.129 weight=1; 
 server 192.168.153.130 weight=1;
}

上面使用两条ip 都是使用weight=1,是因为方便后面观察负载到某一个服务器,更直观。

上面使用ip_hash的方法解析:

Upstream server1{
 ip_hash;
 server 192.168.153.129; 
 server 192.168.153.130;
}

有一种情况是的:当用户第一次登录了,可能在一台服务器上产生了登录信息,当再一次刷新页面时,有可能被负载到另一台服务器,导致信息丢失,ip_hash如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

upstream server1{ 
    server 192.168.153.129; 
    server 192.168.153.130; 
    fair; 
}

B与C的服务器的nginx配置:

然后重新启动nginx的配置。

浏览器访问A服务器的ip:192.168.153.128 效果如如下


这里是为了区分访问的是那一台服务器,分别更改了index.html的代码区分开来。

到这里简单的负载均衡就搞定了。当然可能对于生产环境使用,我们还要考虑其他的性能问题,正常来说A服务器属于一个分发点,如果a宕机了,则后面的负载就没有用了,这时候就可以使用路由器,A的分发器可以有多台来操作,这样通过路由器来分发给A+服务器,A+服务器又分发给下面的服务器,这样如果A服务器中的一个宕机了,不影响正常的运转。

最好是使用LVS+KeepAlived(linux虚拟服务器)来实现集群的负载均衡,所以有时间也会搞一下。

豆浆大叔 豆浆大叔 资深PHP工程师@某一线大厂

写了 264486 字,被 3 人关注,共写了 75 篇笔记

(已更名,豆浆大叔)有理想的码农,不应该只探究人性的懒惰面,而是积极的去探索人生道路上的荆棘坎坷,努力提升自己完善自己!
推荐文章:
  • 大数据领域Flink 与 Spark之间的区别?

    学而不思则罔 思而不学则殆,2020年砥砺前行!前言大家都知道已经2020年了,也到了新的一年。作为一个主营电商的公司,年底都会很忙。所以最近的更新进度也停滞不前,本来准备大侃PHP设计模式的,但是因...

    豆浆大叔 1个月前 3 吐槽 161 围观 技术分享
  • php如何实现钩子与实践案例

    前言学而不思则罔,思而不学则殆。30则而立,头顶正则脱光!昨天晚上,突然想起了PHP中的钩子如何使用?说实话,像dz,wordpress,TP,CI框架都已经集成了Hook钩子,尽管我不怎么使用框架以...

    豆浆大叔 2个月前 0 吐槽 61 围观 技术分享
  • Linux无法显示ip地址的解决办法

    今天想趁着有时间,用虚拟机调试一下lua脚本和其他的功能,结果启动虚拟机使用xshell连接不上,然后使用终端查看IP地址无法查看到,记录一下排查错误流程。查看IP地址使用ip addr 或者 ifc...

    豆浆大叔 2个月前 0 吐槽 119 围观 技术分享
  • 高并发性能指标QPS,TPS,RT,并发数,吞吐量是指什么?

    QPS,每秒查询QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系...

    豆浆大叔 2个月前 0 吐槽 259 围观 技术分享
  • 分享一些PHP常用的小算法

    下面分享一些最常见的算法,用PHP如何实现,拓展下知识面。冒泡排序function bubble_sort($arr) { $n=count($arr); for($i=0;$i<$n-1;$...

    我也庸俗 3个月前 0 吐槽 106 围观 技术分享
表情
  • [:821l1001:]
  • [:821l1002:]
  • [:821l1003:]
  • [:821l1004:]
  • [:821l1005:]
  • [:821l1006:]
  • [:821l1007:]
  • [:821l1008:]
  • [:821l1009:]
  • [:821l1010:]
  • [:821l1011:]
  • [:821l1012:]
  • [:821l1013:]
  • [:821l1014:]
  • [:821l1015:]
  • [:821l1016:]
  • [:821l1017:]
  • [:821l1018:]
  • [:821l1019:]
  • [:821l1020:]
  • [:821l1021:]
  • [:821l1022:]
  • [:821l1023:]
  • [:821l1024:]
  • [:821l1025:]
  • [:821l1026:]
  • [:821l1027:]
  • [:821l1028:]
  • [:821l1029:]
  • [:821l1030:]
  • [:821l1031:]
  • [:821l1032:]
  • [:821l1033:]
  • [:821l1034:]
  • [:821l1035:]
  • [:821l1036:]
  • [:821l1037:]
  • [:821l1038:]
  • [:821l1039:]
  • [:821l1040:]
  • [:821l1041:]
  • [:821l1042:]
  • [:821l1043:]
  • [:821l1044:]
  • [:821l1045:]
  • [:821l1046:]
  • [:821l1047:]
  • [:821l1048:]
  • [:821l1049:]
  • [:anger:]
  • [:applause:]
  • [:awkward:]
  • [:brokenheart:]
  • [:clown:]
  • [:confused:]
  • [:decline:]
  • [:diggingmouth:]
  • [:eyebrows:]
  • [:grinning:]
  • [:haha:]
  • [:ill:]
  • [:kiss:]
  • [:lascivious:]
  • [:laugh:]
  • [:love:]
  • [:lovely:]
  • [:rhinorrhea:]
  • [:smile:]
  • [:solid:]
  • [:strong:]
  • [:sweat:]
  • [:tearcollapse:]
  • [:tongue:]
  • [:uncomfortable:]
  • [:weak:]
  • [:worry:]
Tips:支持Markdown语法

6 个评论

豆浆大叔
(已更名,豆浆大叔)有理想的码农,不应该只探究人性的懒惰面,而是积极的去探索人生道路上的荆棘坎坷,努力提升自己完善自己!
资深PHP工程师 @ 某一线大厂

登录

第三方账号登录:
GitHub
微信
微博