环境:centos 6.4 64bit

应用:nginx

目的:keepalived可以让两台服务器处于主备关系,如果主的挂了,备的取得VIP(或者互为主备等关系,文字游戏不纠结),

以实现服务器的高可用。

关于恢复:

如果设置keepalived为主备模式,那么当主服务器恢复,VIP重新回到主服务器上,

那么就产生了多次切换的问题,所以这里我不采用主备,而是采用备备的模式。

但是备备模式,两台机的优先级不一样,还是会竞争,所以需要在优先级高的服务器上设置nopreempt(具体见下面的配置)。

两台服务器,备备模式,都运行着nginx:

nginx-1: 192.168.1.136

nginx-1: 192.168.1.150

VIP(虚拟IP):192.168.1.176

1
yum install -y gcc gcc-c++ popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel

安装keepalived

1
2
3
4
5
6
wget  http://www.keepalived.org/software/keepalived-1.2.13.tar.gz
tar zxvf keepalived-1.2.13.tar.gz
cd keepalived-1.2.13
./configure --prefix=/usr/local/keepalived
make
make install

keepalived开机启动,两个脚本(开机启动可以参考我另外的文章。)

vim setkeep_startup.sh

1
2
3
4
5
6
7
8
#!/bin/bash
mkdir /opt/sta
chmod a+x /opt/sta/*
 
echo -e "start on runlevel 2\nstart on runlevel 3\nstart on runlevel 4\nstart on runlevel 5\nrespawn\nexec /opt/sta/keep_check.sh" > /etc/init/keep.conf
initctl reload-configuration
initctl list
initctl start keep

vim keep_check.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#check keepalived
 
while [ 1 ]
do
 
Run=$(ps aux|grep keep|grep -v "grep"|wc -l)
echo Run=$Run
if [ 0 == $Run ]
then
/usr/local/keepalived/sbin/keepalived
echo "start keepalived"
else
echo "keepalived is runing"
fi
 
sleep 3
done

nginx开机启动

同上,改改就行。如果连改都懒得改,请自行右上角。

nginx检测脚本(两台服务器都需要),如果发现Nginx进程不在了,则杀死keepalived进程:

1
2
3
4
5
6
7
8
#!/bin/bash
run=`ps -C nginx --no-header |wc -l`             
if [ $run -eq 0 ];then                     
        killall keepalived         
echo "kill keepalived" >> /opt/keep.log
else
echo "nginx alive" >> /opt/keep.log
fi

nginx-1配置,路径:/usr/local/keepalived/etc/keepalived/keepalived.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
vrrp_script check_nginx  {
                script "/opt/sta/nginx_alive_check.sh"  #nginx监控脚本
                interval 2                       #执行监控时间间隔
                weight 2                         #脚本结果导致的优先级变更:2表示优先级+2;-2表示优先级-2
}
 
global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@local host
   smtp_server localhost
   smtp_connect_timeout 30
   router_id  NodeA
}
 
 
vrrp_instance VI_1 {
    state BACKUP   #两台机都设置为BACKUP
    interface eth0   #绑定虚拟IP的网络接口
    virtual_router_id 51    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 100   #竞争时节点的优先级(1-254之间)
    nopreempt    #在优先级高的机器上设置,防止恢复时重新竞争
    advert_int 3   #组播信息发送间隔,两个节点设置必须一样
    authentication {   #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 1234
    }
 
track_script  {
             check_nginx                   #监控服务定义
        }
 
    virtual_ipaddress {   #虚拟IP, 两个节点设置一样
        192.168.1.176/24
    }
 
}

nginx-2配置,路径:/usr/local/keepalived/etc/keepalived/keepalived.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
vrrp_script check_nginx  {
                script "/opt/sta/nginx_alive_check.sh"  #nginx监控脚本
                interval 2                       #执行监控时间间隔
                weight 2                         #脚本结果导致的优先级变更:2表示优先级+2;-2表示优先级-2
}
 
global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@local host
   smtp_server localhost
   smtp_connect_timeout 30
   router_id  NodeA
}
 
 
vrrp_instance VI_1 {
    state BACKUP   #两台机都设置为BACKUP
    interface eth1   #绑定虚拟IP的网络接口
    virtual_router_id 51    #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 99   #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
    advert_int 3   #组播信息发送间隔,两个节点设置必须一样
    authentication {   #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 1234
    }
 
track_script  {
             check_nginx                   #监控服务定义
        }
 
    virtual_ipaddress {   #虚拟IP, 两个节点设置一样
        192.168.1.176/24
    }
 
}

启动keepalived

cd /usr/local/keepalived/sbin/

./keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf

-f为指定配置文件路径

启动之后在/var/log/messages中可以看到相关信息输出

输出ip addr可以查看网卡上绑定的ip,看看是不是VIP已经绑定到某一台机器的网卡了。

如果发现两台机都绑了,那么就是两台机无法正常通信,检查防火墙。

关于防火墙,据说这样设置可以让keepalived正常工作:

到/etc/sysconfig/iptables中添加一行

-A INPUT -m state --state NEW -m tcp -p tcp -d 224.0.0.0/8 -j ACCEPT

-A INPUT -i eth0 -p vrrp -j ACCEPT

但是我发现不设置,但是stop然后start,也可以正常工作。目前未解。

keepalived安装配置(nginx)的更多相关文章

  1. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  2. ELK 6安装配置 nginx日志收集 kabana汉化

    #ELK 6安装配置 nginx日志收集 kabana汉化 #环境 centos 7.4 ,ELK 6 ,单节点 #服务端 Logstash 收集,过滤 Elasticsearch 存储,索引日志 K ...

  3. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

  4. keepalived安装配置实战心得(实现高可用保证网络服务不间断)

    keepalived安装配置实战心得(实现高可用保证网络服务不间断) 一.准备2台虚拟机     安装的系统是:centos-release-7-1.1503.el7.centos.2.8.x86_6 ...

  5. lvs keepalived 安装配置详解

    前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较.F5相当的贵,真不是一般企业能负担的起的.负载均衡软件也用过不少,nginx,apache,hapro ...

  6. keepalived安装实现nginx主备高可用

    . keepalived安装环境 su - root yum -y install kernel-devel* yum -y install openssl-* yum -y install popt ...

  7. deepin 15.3 安装配置nginx

    1.安装nginx sudo apt-get install nginx 2.配置nginx sudo gedit /etc/nginx/sites-enabled/default 找到:index ...

  8. Ubuntu 16.04 LTS 安装配置 Nginx 1.10.0 Php7.0-FPM

    1. 安装Nginx,Php-7.0 ~$ sudo add-apt-repository ppa:nginx/stable ~$ sudo apt-get update ~$ sudo apt-ge ...

  9. Ansible安装配置Nginx

    一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...

随机推荐

  1. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  2. asp.net解决数据转换为DBNULL的问题

    if (string.IsNullOrEmpty(CookieHelper.GetCookie("DEPID", "theway").ToString()) = ...

  3. pb中创建连接webservice对象实例方法

    try soapConnection conn // Define SoapConnectionHospitalServiceSoap in_hhzswebser // Declare proxyin ...

  4. 【Hibernate 6】常用的hql语句以及N+1问题

    HQL:Hibernate Query Language,是Hibernate框架中的查询语言,十分接近于SQL语言!以下介绍一些常用的Hql语句: 一.测试类 Classes类: <span ...

  5. 【HTML/XML 11】XML和HTML的混合使用

    导读:在前面介绍了很多关于XML和HTML的东西,他们其实各有各的好处,在很多时候都需要结合起来使用.现在已经有XML和HTML结合的产物:XHTML(可扩展超文本标记语言).在本篇博客中,则主要介绍 ...

  6. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

  7. LiveView 0.8 RC1 could boot evidence files acquired from Win10 64bit

    The latest Windows 10 will be more and more popular in the very near future. Now let's take a look i ...

  8. Android IOS WebRTC 音视频开发总结(三十)-- ice协议异同

    本文主要介绍ICE与SDP交互过程中的一些知识,支持原创,文章来博客园RTC.Blacker,转载请说明出处. 用过libjingle模块的同学都知道连接过程中candidate的获取与连接流程,一边 ...

  9. The given path's format is not supported.

    问题 编程以来今本没有使用input[type=file]这个控件过,今天突然使用尽然报错了,在本地chrome,firefox等其他的浏览器都是好的,唯独ie报错了.在服务器的时候,尽然chrome ...

  10. linux禁止tty终端登陆

    修改文件/etc/pam.d/system-auth #%PAM-1.0# This file is auto-generated.# User changes will be destroyed t ...