nginx+keepalived实现双机热切的高可用

标签: nginx keepalived | 发表时间:2014-05-12 23:26 | 作者:247687009
出处:http://www.iteye.com

Nginx+keepalived热切换高可用

一 keepalived简介

keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

为了方便测试清关闭防火墙 service iptables stop 

二 安装

1,本次采用的是centos5.10 两台机器 (master_slave)架构master 192.168.235.101,

slave 192.168.235.102

2,准备编译环境 yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel

3,下载软件源代码包

Nginx1.7.0 最新版

wget  http://nginx.org/download/nginx-1.7.0.tar.gz

keepalived 1.2.12最新版

wget  http://www.keepalived.org/software/keepalived-1.2.12.tar.gz

4,编译安装源代码

a. Nginx的安装(两台机器进行相同的安装即可)

解压nginx

tar xf nginx-1.7.0

cd nginx1.7.0

./configure

make && make install

如果没有报错证明安装成功

测试

/usr/local/nginx/sbin/nginx –t

[root@keepMaster opt]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

表示成功

b. keepalived安装

tar xf keepalived-1.2.12.tar.gz

cd keepalived-1.2.12

./configure

make && make install

cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

chmod +x /etc/init.d/keepalived

chkconfig –add keepalived

chkconfig keepalived on

mkdir /etc/keepalived

ln –s /usr/local/sbin/keepalived /usr/sbin

三 配置

Keepalived的配置

a在master机器(192.168.235.101中的配置)

vi /etc/keepalived/ keepalived.config //这个文件默认是不存在的

使用vi 加入以下的配置

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_script chk_http_port {

                script "/opt/nginx_pid.sh" ############该脚本我们在后面书写

                interval 2

                weight 2

}

vrrp_instance VI_1 {

    state MASTER        ############ 辅机为 BACKUP

    interface eth0

    virtual_router_id 51

    mcast_src_ip 192.168.235.101

    priority 102                  ########### 权值要比 back 高

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

track_script { 

        chk_http_port ### 执行监控的服务 

        }

    virtual_ipaddress {

      192.168.235.100 ############ 此处的虚拟IP 地址即 我们web所                                                      ####要访问的IP地址  必须在同一网段

    }

}

 

 

b 配置slave(192.168.235.102)

vi /etc/keepalived/ keepalived.config //这个文件默认是不存在的

使用vi 加入以下的配置

 

global_defs {

   notification_email {

     [email protected]

   }

   notification_email_from [email protected]

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_script chk_http_port {

                script "/opt/nginx_pid.sh" ############该脚本我们在后####面书写

                interval 2

                weight 2

}

vrrp_instance VI_1 {

    state BACKUP  

    interface eth0

    virtual_router_id 51

    mcast_src_ip 192.168.235.102

    priority 102                  ########### 权值要比 back 低

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

track_script { 

        chk_http_port ### 执行监控的服务 

        }

    virtual_ipaddress {

      192.168.235.100 ############ 此处的虚拟IP 地址即 我们web所                                                      ####要访问的IP地址  必须在同一网段

    }

}

 

c 分别在master slave上建立nginx的监控脚本文件

vi /opt/nginx_pid.sh

 

输入以下配置

#!/bin/bash

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

if [$A –eq 0];then

/usr/local/nginx/sbin/nginx

sleep 3

if[`ps –C nginx –no-header |wc -l` -eq 0];then

killall keepalived

fi

fi

四 测试

<!--[if !supportLists]-->1. <!--[endif]-->分别在mster和slave上启动nginx  /usr/local/nginx/sbin/nginx

<!--[if !supportLists]-->2. <!--[endif]-->先启动master(101)上的 keepalived  service keepalived start 再启动slave(102)

<!--[if !supportLists]-->3. <!--[endif]-->在master上敲入 ip a

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

   link/ether 00:0c:29:c2:74:15 brd ff:ff:ff:ff:ff:ff

    inet 192.168.235.101/24 brd 192.168.235.255 scope global eth0

    inet 192.168.235.110/32 scope global eth0 //虚拟IP成功了 使用该地址访问 

   inet6 fe80::20c:29ff:fec2:7415/64 scope link

       valid_lft forever preferred_lft forever

此时在slave输入ip a 是看不到虚拟ip的

<!--[if !supportLists]-->4. <!--[endif]-->在master上关闭nginx  /usr/local/nginx/sbin/nginx –s stop 输入ip a 

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

   link/ether 00:0c:29:c2:74:15 brd ff:ff:ff:ff:ff:ff

    inet 192.168.235.101/24 brd 192.168.235.255 scope global eth0 

   inet6 fe80::20c:29ff:fec2:7415/64 scope link

       valid_lft forever preferred_lft forever

虚拟IP地址没有了

此时在slave下输入ip a 

看到inet 192.168.235.110/32 scope global eth0 说明成功了

下面是我测试机器

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:0c:29:e3:a2:2b brd ff:ff:ff:ff:ff:ff

    inet 192.168.235.102/24 brd 192.168.235.255 scope global eth0

    inet 192.168.235.110/32 scope global eth0 //看到这个 表示切换成功 秒级别

    inet6 fe80::20c:29ff:fee3:a22b/64 scope link

       valid_lft forever preferred_lft forever

<!--[if !supportLists]-->5. <!--[endif]-->重新启动master 上的nginx,keepalived会自动切换到master 

<!--[if !supportLists]-->6. <!--[endif]-->经测试在master意外断电的情况下任然不影响切换,并在master成功修复,重新启动成功之后,slave会自动切换到master

 



已有 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.

nginx+keepalived实现双机热切的高可用

- - 开源软件 - ITeye博客
Nginx+keepalived热切换高可用. 一 keepalived简介. keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换. Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器.

Keepalived安装

- - CSDN博客架构设计推荐文章
Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可以实现web前端服务的高可用. 安装Keeplived依赖. 安装 openssl. #通知email,根据实际情况配置 { [email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 stmp_connect_timeout 30 router_id node1.

配置LVS+Keepalived

- -
lvs说明:目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);. 八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh). 在调度器的实现技术中,IP负载均衡技术是效率最高的. 在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性.

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).

Keepalived+Mysql 高可用方案

- - 数据库 - ITeye博客
Keepalived+Mysql 高可用方案. 安装: 略  Keepalived可从CentOS系统安装包中获得. 建立一个脚本用于在keepalived检测到mysql挂了的时候调用该脚本把keepalived杀死. 当然,在这个文件你也可以加入邮件通知等功能,这里就不列举了.. 配置keepalived.conf.

Keepalived避免无用的failover

- - 小火箭
通常情况下,当主挂掉时,从会自动切换为主. 当主上的服务恢复时,则会再次抢占成为主,这里就发生了一次不必要的failover. 为了解决上述情况,可以在主的配置中vrrp_instance增加nopreempt. 注意:确保实验机器防火墙不会过滤掉vrrp协议的数据包. 以下是 sudo tcpdump vrrp -i eno16777736命令输出.

keepalived-1.2.9集群的安装及配置

- - CSDN博客系统运维推荐文章
一、目        的:本文实现的Linux集群是基于Keepalived-1.2.9软件实现,. 二、难        点:实现虚拟IP(VIP)自动切换的同时,还要同时实现虚拟MAC地址(VMAC)的切换,即无论集群中的Host如何切换,对外访问的IP和MAC始终不变. 三、适用环境:当对外路由或交换机绑定主机MAC时适用.