`

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

阅读更多

使用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的配置如下:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 1024;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        fastcgi_buffer_size  64k;
        fastcgi_buffers      16  64k;

        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        upstream server_lb {
            server 192.168.1.100:9000; //9000为php的端口
            server 192.168.1.200:9000;
            ip_hash;
        }



    server {
        listen       80;
        server_name  _;
        #root /var/www/html/demo/public;
        #charset koi8-r;

        try_files $uri $uri/ $uri.php?$args /index.php;

        location ~ \.php$ {
            fastcgi_pass server_lb;//通过fastcgi进行负载均衡
            include fastcgi_params;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
}

 

两台服务器的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

 

 

 

 

1
0
分享到:
评论
1 楼 alec03711 2013-07-26  
干货,很实用的

相关推荐

    linux安装nginx+keepalived,和tomcat负载均衡配置,动静分离配置,主备和双主模式

    Keepalived是一款用于实现高可用性的工具,它可以监控并管理服务,当主服务器失效时,能将流量切换到备用服务器。安装过程如下: ```bash # 对于Debian/Ubuntu sudo apt-get update sudo apt-get install ...

    nginx+tomcat实现负载均衡1

    总之,"nginx+tomcat实现负载均衡1"的学习将涵盖Nginx的基本操作、负载均衡配置、与Tomcat的集成以及高可用性的实现,这些都是构建高性能Web服务的关键技术。通过这些知识,开发者可以设计出更健壮、高效的分布式...

    nginx+keepalived安装包

    在现代互联网服务中,高可用性和负载均衡是不可或缺的要素。Nginx是一款高性能的HTTP和反向代理服务器,常用于处理静态文件、缓存、负载均衡等任务;而Keepalived则是一个用于网络服务高可用性的开源项目,主要用于...

    利用Keepalived实现Nginx高可用

    在Ubuntu 15操作系统上,采用Nginx 1.8.0作为Web服务器,Tomcat 7.0.64作为应用服务器,以及Keepalived 1.2.19和JDK 1.7.0_79-b15,我们可以通过以下步骤实现Nginx的高可用: - **环境准备**:设定每台服务器的IP...

    nginx+keepalived主辅切换

    Nginx 作为高性能的 Web 服务器和反向代理服务器,而 Keepalived 则主要用于高可用性(HA)和负载均衡。将两者结合使用可以实现服务的高可用性和动态负载均衡,从而提高系统的稳定性和性能。 本文主要介绍如何通过 ...

    keepalived+Nginx负载均衡+双机互备[文].pdf

    在构建高可用性和负载均衡的Web服务环境中,Keepalived和Nginx的结合使用是常见的一种解决方案。本文档详细介绍了如何在Linux系统上通过编译安装的方式设置一个基于Keepalived和Nginx的双机互备负载均衡系统。 首先...

    采用Keepalived实现Redis双机高可用

    Keepalived是一款开源软件,主要用于网络服务的负载均衡和故障检测。它通常与Nginx、HAProxy等配合使用,但在Redis场景下,Keepalived可以用来实现虚拟IP漂移,当主服务器出现故障时,自动将网络请求切换到备用...

    keepalived高可用

    8. **负载均衡**:除了故障转移,Keepalived还可以配合其他工具(如Nginx、HAProxy)实现负载均衡,将请求分发到多个服务器,提高系统整体性能和可用性。 在实际部署中,需要注意的是,Keepalived的配置文件应根据...

    nginx高可用实现部署详细文档

    在现代互联网服务中,确保Web服务器的高可用性至关重要,因为这直接影响到网站或应用的稳定性和用户体验。本文档将详细讲解如何通过修改启动web服务器、安装配置Nginx、安装及配置Keepalived来实现Nginx的高可用部署...

    Keepalived&nginx;安装包.zip

    首先,LVS是基于Linux内核的虚拟服务器技术,它可以通过IP负载均衡和TCP负载均衡来分散服务请求,实现高可用性和高性能。LVS工作在四层(TCP/UDP)和七层(HTTP),可以根据不同的需求选择合适的工作模式。 接着,...

    keepalived-2.1.5.tar

    在IT行业中,Keepalived和Nginx是两个非常重要的组件,它们被广泛用于构建高可用性和负载均衡的网络服务。Keepalived是一款基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的开源软件,主要用于...

    keepalived实现nginx高可用

    Keepalived是一个开源项目,主要用于网络服务的高可用性(High Availability, HA)。它提供了一种基于VRRP(Virtual Router Redundancy Protocol)协议的解决方案,确保在网络服务出现故障时能够快速切换到备用...

    集群,高可用,linux

    **Keepalived** 是一个开源项目,主要用于实现IP负载均衡和高可用性。它通过VRRP(虚拟路由冗余协议)来监控和管理网络服务,当主服务器出现故障时,可以快速将服务切换到备用服务器,确保服务的不间断。Keepalived...

    keepalived-1.2.13.tar.gz

    Keepalived是一款开源的网络和服务监控系统,其主要功能是实现基于VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的高可用性解决方案。本文将深入探讨Keepalived 1.2.13版本中的关键特性、配置与...

    keepalived附件

    【描述】: Keepalived是一款开源的、基于LVS(Linux Virtual Server)的高可用性解决方案,它主要用于实现负载均衡和故障转移,确保服务的持续稳定运行。Keepalived通过VRRP(Virtual Router Redundancy Protocol,...

    keepalived安装包

    Keepalived与Nginx、HAProxy、LVS等负载均衡器配合使用,可以提供强大的服务冗余和故障恢复功能。 【安装Keepalived】 1. **系统依赖检查**:在安装Keepalived之前,需要确保系统已经安装了必要的依赖,如`iputils...

    keepalived安装部署

    Keepalived是一款开源的网络和服务监控软件,它主要用于实现Linux服务器间的负载均衡和高可用性。在系统集群中,Keepalived与Nginx、HAProxy等配合使用,可以确保当主服务器出现故障时,服务能够自动切换到备用...

    ubuntu主备切换使用软件包

    6. **keepalived-1.2.7.tar.gz**: Keepalived 是一个基于VRRP(Virtual Router Redundancy Protocol)的高可用性工具,主要用于实现Linux系统的负载均衡和故障转移。在主备切换中,Keepalived 负责监控主服务器的...

    Linux运维从入门到高级全套案例v3

    - **LVS+Keepalived负载均衡**:使用Linux Virtual Server(LVS)和Keepalived实现高可用的负载均衡解决方案。 - **Squid缓存服务器配置**:配置Squid代理服务器,减少网络带宽消耗。 6. **高并发系统内核优化**:...

Global site tag (gtag.js) - Google Analytics