环境: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. css各兼容应该注意的问题

    1.div布局在ie浏览器和chrome浏览器,firefox浏览器不同,不如在div里面嵌套3个div,分别左中右,左边div的pading和margin在ie8以上都是几乎相同,ie8以下做内边距 ...

  2. CSS常用布局整理

    固定宽度布局 1-2-1布局(浮动) <html xmlns="http://www.w3.org/1999/xhtml"> <head> <titl ...

  3. 【EF 5】结合项目实战分析EF三大工作模式之—Database First

    导读:所谓的EF的Databasefirst工作模式,是目前我们(不涉及社会领域)用的最广的一种模式,也是本次ITOO开发所采用的工作模式.本篇博客,就分析在项目中通过Database First模式 ...

  4. dell 交换机 双链路冗余

    公司海外机房引入2G带宽,是由2个电口绑定实现的.因业务需要扩容到3G,在绑定端口扩展性不太好,因此直接上10G光纤模块. 机房技术人员建议,2g老线路不撤做备份,3g新线路在线使用.使用STP协议实 ...

  5. 【python】基础

    [字符串]前后引号必须要匹配,相关函数int(),float(),str(),repr(),format(),还有切片运算符 a = 'text'           单引号指定的字符串必须在一个逻辑 ...

  6. hdu2444

    #include <stdio.h> #include <string.h> #define black 1 #define white -1 ]; ]; ][]; int n ...

  7. input文本框实现宽度自适应代码实例,input文本框

    本章节介绍一下如何让一个文本框的宽度能够随着文本框中的内容的宽度增长而增长,也就是能够实现宽度自适应效果. 代码实例如下: <!DOCTYPE html> <html> < ...

  8. POJ C++程序设计 编程题#1 编程作业—STL1

    编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 下面的程序输出结 ...

  9. linux下vi的复制,黏贴,删除,撤销,跳转等命令

    前言     在嵌入式linux开发中,进行需要修改一下配置文件之类的,必须使用vi,因此,熟悉 vi 的一些基本操作,有助于提高工作效率. 一,模式vi编辑器有3种模式:命令模式.输入模式.末行模式 ...

  10. IOS绘图——简单三角形

    #import <UIKit/UIKit.h> @interface MyView : UIView @end #import "MyView.h" @implemen ...