Nginx配置upstream实现负载均衡及keepalived实现nginx高可用

(原文链接:http://www.studyshare.cn/blog/details/1159/0 )

一、准备工作

1、准备两个项目,发布到不同的服务器上,此处使用2个虚拟机发布了两个项目分别为:http://192.168.28.128:8081,http://192.168.28.129:8081

2、在两个虚拟机上都安装好nginx

更多深度技术文章,在这里

java开发工具下载地址及安装教程大全,点这里

二、配置upstream

1、在任意一台虚拟机上所安装的nginx的nginx.conf配置文件中配置upstream如下:

以上是负载均衡的基本配置,当前模式采用的是轮询的方式负载。除了轮询,还有weight(权重)、ip_hash(根据访问ip,解决session问题)、第三方。

2、根据weight负载

upstream blog {

server 192.168.28.128:8081 weight=2;

server 192.168.28.129:8081 weight=1;

}

说明:以上配置表示三次访问的时候weight=2的服务被访问两次,weight=1的服务只被访问一次。

3、根据ip_hash负载

upstream blog {

ip_hash;

server 192.168.28.128:8081;

server 192.168.28.129:8081;

}

说明:用户第一次访问落在128上,那么以后该用户的访问都会在128的服务器上,如此即可解决session问题。

4、fair第三方

这种方式是按后端服务的响应时间来分配请求,相应时间短的优先分配。

  upstream blog {

        server 192.168.28.128:8081;

        server 192.168.28.129:8081;

fair;

    }

5、url_hash第三方

这种方式是按url的hash结果来分配请求,使没一个url请求定向到同一个后端服务器。也可解决session问题,但需要注意,使用这种方式后,server语句中不能写入weight等其他参数。

upstream blog {

server 192.168.28.128:8081;

server 192.168.28.129:8081;

        hash $request_uri;

hash_method crc32;  #使用crc32 hash算法

}

三、配置keepalived

使用以上配置可以达到负载均衡的目的,如果使其中一台机器的服务挂掉,例如使用kill -9将192.168.28.128的服务(注意:不是nginx挂掉,而是服务挂掉),此时nginx的负载均衡会检测到128的服务停止,只将来自客户端的请求发到129所在的服务器上去,因此也保证了高可用。

那么如果128机器上的nginx也挂了呢?整个服务肯定就不可用了,如何保证nginx也高可用呢?此处使用keepalived来保证nginx的高可用。

首先在192.168.28.128虚拟机上安装配置keepalived,如下:

1、安装keepalived:请参考:http://www.studyshare.cn/software/details/1158/1,此处不再赘述

2、配置keepalived

命令:cd /etc/keepalived  #进入keepalived配置文件目录

命令:vi keepalived.conf   #编辑keepalived.conf配置文件

global_defs {

router_id LVS_1

}

vrrp_instance VI_1 {

state MASTER  #主机

interface eth0   #网卡

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.28.200   #配置一个虚拟vip

}

}

启动keepalived

命令:/usr/local/keepalived/sbin/keepalived

命令:ps -ef|grep keepalived #查看启动进程

命令:ip addr  #查看eth0网卡

然后在192.168.28.129虚拟机上安装配置keepalived,如下:

1、安装略

2、配置keepalived配置文件

global_defs {

   router_id LVS_2

}

vrrp_instance VI_1 {

    state BACKUP  #从机

    interface eth0   #网卡

    virtual_router_id 51  

    priority 50 #优先级  

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.28.200   #配置一个虚拟vip,此ip与主机配置在虚拟ip需要一致  

    }

}

启动从机器的keepalived,启动方式与主机启动方式相同。

3、测试

(1)、主机的keepalive被kill前与kill后,从机器上eth0绑定vip情况如下:

总结:keepalived保证了vip在主从机器之间漫游。谁被kill掉后,vip就漫游到未被killdiao

4、配置keepalived监控nginx,实现nginx的高可用

(1)、新建一个文件并写入监控nginx执行脚本

命令:cd /usr/local/src

命令:vi check_nginx.sh

写入以下脚本命令:

#!/bin/bash

A=`ps -C nginx --no-header |wc -l`        

if [ $A -eq 0 ];then                            

/usr/local/nginx/sbin/nginx                #重启nginx,根据自己本机nginx安装路径编写

if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移

killall keepalived    #杀掉,vip就漫游到另一台机器

      fi

fi

保存退出。

(2)、修改keepalived.conf配置文件,加入以下两段

配置完成,重启keepalived。

总结:以上就完成了keepalived监控nginx的配置,当停止nginx的时候,监控脚本会自动检测nginx是否存活,否就重启。达到nginx不死鸟的目的。

原创文章,转载请注明出处。

更多深度技术文章,在这里

java开发工具下载地址及安装教程大全,点这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容