Nginx+keepalived实现负载均衡和高可用性 in ubuntu

标签: nginx keepalived 负载均衡 | 发表时间:2013-07-01 09:56 | 作者:
出处:http://www.iteye.com

使用Nginx已经有很长一段时间,但是最近才去实践利用Nginx做负载均衡和高可用性。

大致思路:根据keepalived的特性,通过一个虚拟ip来实现主从服务器的切换,如果一台服务器宕机,可以自动切换到另一台备份服务器,从而不影响用户的访问。

以下是我的安装配置步骤,请大家参考指正。

1:服务器准备

准备两台ubuntu虚拟主机服务器,对应的IP分别是 192.168.1.100   192.168.1.200

两台主机的ip一定要在相同的网段

2:虚拟IP准备

sudo ifconfig  eth0:0 192.168.1.150 netmask 255.255.255.0

然后查看ifconfig,不难发现与之前的ifconfig 的不同。也可以通过ip a查看,对应的网卡eth0有两个ipaddress

两台虚拟主机要使用相同的虚拟IP: 192.168.1.150

 

3:安装nginx

sudo apt-get install nginx

安装完成之后,ps -ef|grep nginx 查看nginx的进程,如果没问题,可以查看http://192.168.1.100  如果显示正常,说明nginx服务正常启动。

两台服务器的nginx配置一致

 

4:安装keepalived

sudo apt-get install keepalived

安装完成之后,查看进程发现并没有keepalived的进程,这是因为keepalived配置文件不存在,需要用户自己创建一个keepalived.conf文件存放到/etc/keepalived目录

 

vrrp_script chk_nginx {
 script "/etc/keepalived/check_nginx.sh" //检测nginx进程的脚本
 interval 2
 weight 2
}

global_defs {
 notification_email {
      //可以添加邮件提醒
 }
}
vrrp_instance VI_1 {
 state MASTER //主服务器
 interface eth0
 virtual_router_id 51 
 mcast_src_ip 192.168.1.100
 priority 250
 advert_int 1

 authentication {
        auth_type PASS
        auth_pass 123456
 }
 track_script {
        chk_nginx
 }
 virtual_ipaddress {
        192.168.1.150
 }
}

 

 

两台服务器的keepalived.conf文件除了优先级,state和mcast_src_ip不一样,其他的完全一致,但是需要注意的几点是:

  • 主服务器的state为MASTER,从服务器的state为BACKUP
  • 主服务器的priority一定要比从服务器的priority大
  • mcast_src_ip就是对应服务器的局域网ip
  • “{”前面一定要有个空格,不能跟前面的字符连起来,否则出现问题很难发现
  • check_nginx.sh脚本文件的执行权限一定要正确。
  • check_nginx.sh的代码如下:
    #more /etc/keepalived/check_http.sh
    #!/bin/bash
    #代码一定注意空格,逻辑就是:如果nginx进程不存在则启动nginx,如果nginx无法启动则kill掉keepalived所有进程
    A=`ps -C nginx --no-header |wc -l`
    if [ $A -eq 0 ];then
     /etc/init.d/nginx start
    sleep 3
    if [ `ps -C nginx --no-header |wc -l`-eq 0 ];then
     killall keepalived
    fi
    fi

配置文件完成之后,sudo /etc/init.d/keepalived start,然后再查看下keepalived的进程是否存在,如果存在,再检查keepalived的log(sudo tail /var/log/syslog),如果看到nginx Keepalived_vrrp: VRRP_Script(chk_nginx) succeeded,则说明配置成功。

两台服务器的keepalived配置和启动命令是一致的

 

5:测试

因为check_nginx的缘故,当启动keepalived是,nginx也会同时被启动,所以此时,查看nginx和keepalived的进程应该都是存在的,否则就是配置有问题。

现在访问http://192.168.1.150,如果访问正常,此时应该显示的是主服务器的页面,也就是192.168.1.100的页面,否则也是配置有问题。

然后在关闭主服务器的nginx访问,访问http://192.168.1.150页面应该正常,因为check_nginx的缘故。

再关闭主服务器的keepalived进程,则此时访问http://192.168.1.150应该显示的是从服务器的页面,也就是192.168.1.200的页面,否则也是配置不正确。

如果再关闭从服务器的nginx和keepalived则http://192.168.1.150无法访问。

 

以上就是我的配置步骤,很粗略,还希望大家多指点 酷

另外,以下是版本信息

ubuntu:Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-29-generic x86_64)

Keepalived: v1.2.2

nginx version: nginx/1.1.19

 

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [nginx keepalived 负载均衡] 推荐:

Nginx+keepalived做双机热备加tomcat负载均衡

- - 开心平淡对待每一天。热爱生活
   Nginx+keepalived做双机热备加tomcat负载均衡. 一.Nginx配置. 1.安装Nginx所需pcre库. 2.安装Nginx. ./configure: error: SSL modules require the OpenSSL library.Centos需要安装openssl-devel Ubuntu则需要安装:sudo apt-get install libssl-dev.

Nginx+keepalived实现负载均衡和高可用性 in ubuntu

- - ITeye博客
使用Nginx已经有很长一段时间,但是最近才去实践利用Nginx做负载均衡和高可用性. 大致思路:根据keepalived的特性,通过一个虚拟ip来实现主从服务器的切换,如果一台服务器宕机,可以自动切换到另一台备份服务器,从而不影响用户的访问. 以下是我的安装配置步骤,请大家参考指正. 准备两台ubuntu虚拟主机服务器,对应的IP分别是 192.168.1.100   192.168.1.200.

Haproxy+KeepAlived 负载均衡

- - CSDN博客系统运维推荐文章
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现. LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. 还可以使用nginx来实现,不过nginx只工作在7层网络之上. 详细请参考 抚琴煮酒写的“ 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比”这篇文章,简单很详细,很好.

lvs+keepalived 负载均衡

- - CSDN博客系统运维推荐文章
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡. LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器. 目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh).

nginx负载均衡配置

- - 开心平淡对待每一天。热爱生活
  使用负载均衡的话,可以修改配置http节点如下:. #设定http服务器,利用它的反向代理功能提供负载均衡支持. #设定mime类型,类型由mime.type文件定义. #省略上文有的一些配置节点. #设定负载均衡的服务器列表. #weigth参数表示权值,权值越高被分配到的几率越大. server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口.

解析nginx负载均衡

- - 搜索研发部官方博客
摘要:对于一个大型网站来说,负载均衡是永恒的话题. 随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP、Citrix NetScaler、Radware等等,虽然可以解决问题,但其高昂的价格却往往令人望而却步,因此负载均衡软件仍然是大部分公司的不二之选. nginx作为webserver的后起之秀,其优秀的反向代理功能和灵活的负载均衡策略受到了业界广泛的关注.

Nginx负载均衡概览

- - 行业应用 - ITeye博客
Nginx做为一个强大的Web服务器软件,具有高性能、高并发性和低内存占用的特点. 此外,其也能够提供强大的反向代理功能. 俄罗斯大约有超过20%的虚拟主机采用Nginx作为反向代理服务器,在国内也有腾讯、新浪、网易等多家网站在使用Nginx作为反向代理服务器. 据Netcraft统计,世界上最繁忙的网站中有11.48%使用Nginx作为其服务器或者代理服务器.

Nginx 的 TCP 负载均衡介绍

- - zzm
ginx Plus的商业授权版开始具有TCP负载均衡的功能. 从Nginx 1.7.7版本开始加入的,现在变成了一个商业收费版本,想要试用,需要在官网申请. 也就是说,Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法. HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七层“应用层”.

Nginx的负载均衡原理

- - IT瘾-geek
  负载均衡在服务端开发中算是一个比较重要的特性. 因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就可以分发给后台服务端(backend servers, 后面简称backend)来做复杂的计算、处理和响应,并且在业务量增加的时候可以方便地扩容后台服务器.

Nginx 的 TCP 负载均衡介绍

- - zzm
Nginx Plus的商业授权版开始具有TCP负载均衡的功能. 从Nginx 1.7.7版本开始加入的,现在变成了一个商业收费版本,想要试用,需要在官网申请. 也就是说,Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法. HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七层“应用层”.