一、Keepalived简介

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

-----百科资料

二、规划

1
2
3
4
OS:CentOS7
Nginx_Master: 192.168.10.128   Nginx主机
Nginx_BackUp: 192.168.10.145   Nginx备机
Nginx_VIP1: 192.168.10.111     虚拟IP地址

说明:

虚拟IP是外网访问的IP地址,通过keepalived设置,以及VRRP将虚拟IP地址绑定到主机和备机上,通过权重实现控制。当主机挂掉后,keepalived 释放对主机的控制,备机接管虚拟IP地址。

三、下载相关软件包

1
2
3
# yum install -y gcc openssl openssl-devel
# wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz    ##下载Keeplived
# wget http://nginx.org/download/nginx-1.9.4.tar.gz

四、编译Nginx

①编译

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
# groupadd -r nginx
# useradd -r -g nginx nginx
# tar -zxvf nginx-1.9.4.tar.gz
# cd nginx-1.9.4/
#  ./configure \
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  --http-scgi-temp-path=/var/tmp/nginx/scgi \
  --with-pcre
# make
# make install
# /usr/sbin/nginx       ##开启nginx

②简单配置nginx

1
2
3
4
# vi /etc/nginx/nginx.conf 
server {
        listen       80;
        server_name  www.zhi.com;

Master:

1
2
3
# vi /usr/html/index.html
<h1>Success!</h1>
<p>Welcome to LINUX Keepalived System 1!</p>

BackUp:

1
2
3
# vi /usr/html/index.html
<h1>Success!</h1>
<p>Welcome to LINUX Keepalived System 2!</p>

五、编译Keeplived

1
2
3
# tar -zxvf keepalived-1.2.19.tar.gz 
# cd keepalived-1.2.19
# ./configure --sysconf=/etc --prefix=/usr/local/keepalived

1
2
# make
# make install

六、配置Keeplived

①设置开机自启动并配置服务脚本

1
2
3
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# /etc/init.d/keepalived start
# systemctl start keepalived         ##以上皆可启动keepalived
1
2
# chkconfig --add keepalived
# chkconfig keepalived on
1
2
3
4
5
6
7
8
9
10
11
12
# vi /etc/keepalived/check_nginx.sh      ##配置nginx服务监控脚本
!/bin/bash
if [ $(ps -C nginx --no-header |wc -l) -eq 0 ]
then
    /usr/sbin/nginx
fi
sleep 2
if [ $(ps -C nginx --no-header |wc -l) -eq 0 ]
then
    /etc/init.d/keepalived stop
fi
# chmod u+x /etc/keepalived/check_nginx.sh

注:该脚本检测nginx服务正常开启与否,使自动切换keepalived虚拟IP地址。如无该脚本,必须手动执行关闭keepalived方可切换。

②MASTER配置

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
         root@localhost               ##设置报警邮件地址,可以设置多个
}
   notification_email_from zhi@zhi.com      ##设置邮件发送地址
   smtp_server 127.0.0.1                 ##设置SMTP-Server地址
   smtp_connect_timeout 30                 ##设置连接超时时间
   router_id LVS_DEVEL             ##运行keepalived服务的标识,显示在邮件主题的信息
}
 
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"    ##Nginx服务监控脚本
interval 2                               ##脚本执行间隔
weight 2                              ##脚本执行结果导致的优先级变更
}
 
vrrp_instance VI_1 {
    state MASTER                      ##指定keepalived角色为主服务器
    interface eno16777736            ##指定HA监测网络的接口
    virtual_router_id 51              ##虚拟路由标识,同一个vrrp实例使用唯一的标识
    priority 101                   ##定义优先级,数字越大,优先级越高      
    advert_int 1               ##设定MASTER与BACKUP负载均衡器间同步检查的时间间隔,单位秒
    authentication {                     ##设置验证类型和密码
        auth_type PASS                  ##设置验证类型,主要有PASS和AH两种
        auth_pass 1111             ##设置验证密码,同一vrrp_instance密码必须相同
    }
     
track_script {
    check_nginx                  ##检测执行脚本
}
 
virtual_ipaddress {
        192.168.10.111/24       #设置虚拟IP地址,可设置多个虚拟IP地址
    }
}
 
virtual_server 192.168.10.111 80 {     ##设置虚拟服务器,指定虚拟IP地址和服务端口
    delay_loop 6                        ##设置运行情况检查时间,单位秒
    lb_algo rr                       ##设置负载调度算法,rr即轮询算法
    lb_kind NAT                  ##设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
    nat_mask 255.255.255.0  
    persistence_timeout 50            ##会话保持时间,单位秒
    protocol TCP                         ##指定转发协议类型,有TCP和UDP两种
     
    sorry_server 127.0.0.1 80
     
    real_server 192.168.10.128 80 {   ##配置服务节点1,指定real server的真实IP和端口
        weight 1                       ##配置服务节点的权值,数字越大,权值越高
        HTTP_GET {
            url {
              path /
            status_code 200        ##200状态码,表示服务器已成功处理请求
            }
            connect_timeout 3            ##响应超时时间
            nb_get_retry 3                   ##重试次数
            delay_before_retry 3               ##重试间隔
        }
    }
   real_server 192.168.10.145 80 {
        weight 1
        HTTP_GET {
            url {
              path /
            status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

③BACKUP配置

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from zhi@zhi.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
 
vrrp_script check_nginx {
      script "/etc/keepalived/check_nginx.sh"        ##Nginx服务监控脚本
      interval 2
      weight 2
}
 
vrrp_instance VI_1 {
    state BACKUP
    interface eno16777736
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
     
track_script {
     check_nginx                  ##检测脚本
}
 
 virtual_ipaddress {
        192.168.10.111/24
    }
}
virtual_server 192.168.10.111 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50
    protocol TCP
     
    sorry_server 127.0.0.1 80
     
    real_server 192.168.10.128 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
             }
 connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.10.145 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
             }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

④查看系统日志

1
# tail /var/log/messages

注:这是192.168.10.145的日志(没有同步时间),由于更改配置后没有重启Master,所以BACKUP进行了抢占

Master:

1
2
# systemctl restart keepalived.service
# tail /var/log/messages

1
# ip addr

七、测试

浏览器输入www.zhi.com测试

Master:

1
# nginx -s stop

BackUp:

1
# ip addr

虚拟IP地址已切换至备机了

刷新www.zhi.com,可能反应较慢

另:可配置nginx+keepalived主主模式,并在后端配置反向代理和负载均衡实现高可用

Nginx+Keepalived实现 转载的更多相关文章

  1. Centos7+nginx+keepalived集群及双主架构案例

    目录简介 一.简介 二.部署nginx+keepalived 集群 三.部署nginx+keepalived双主架构 四.高可用之调用辅助脚本进行资源监控,并根据监控的结果状态实现动态调整 一.简介 ...

  2. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  3. Nginx+keepalived构建双主负载均衡代理服务器

    引言 Nginx是一个高性能的代理服务器,单台Nginx容易出现单点故障,使用keepalived可以实现Nginx的故障转移,保证了网站的高可用性 一.使用Nginx+keepalived的两种方案 ...

  4. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  5. Nginx+keepalived双机热备(主从模式)

    负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行.关于负载均衡介绍,可以参考:linux负载 ...

  6. Nginx+Keepalived主主负载均衡服务器

    Nginx+keepalived主主负载均衡服务器测试实验环境: 主Nginx之一:192.168.11.27主Nginx之二:192.168.11.28Web服务器一:192.168.11.37We ...

  7. 架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层

    1.概述 前两遍文章中,我们一直在说后文要介绍Nginx + Keepalived的搭建方式.这篇文章开始,我们就来兑现前文的承诺,后续的两篇文章我们将介绍Nginx + Keepalived和 LV ...

  8. Nginx +keepalived

    Nginx +keepalived   配置高可用的Nginx 准备环境: 节点node17,node18   lftp 172.16.0.1:/pub/Sources/6.x86_64/nginx ...

  9. nginx+keepalived双主高可用负载均衡

    实验环境及软件版本:CentOS版本: 6.6(2.6.32.-504.el6.x86_64)nginx版本: nginx-1.6.3keepalived版本:keepalived-1.2.7 主LB ...

随机推荐

  1. Tomcat Context配置(转)

    <Context>元素的属性:path:指定访问该Web应用的URL入口.docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBas ...

  2. ThreadLocal 多线程并发,数据隔离

    ThreadLocal:  创建一个线程本地变量. 本质:在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本. 优点:既实现多线程并发,游兼顾数据的安全性. 区别:Synchro ...

  3. shell各种执行方式区别

    shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别 原文出处:http://blog.csdn.net/dance_rise/article/deta ...

  4. ADB 在 Android SDK 的中的路径

    以前 adb.exe 是在 sdk/tools 目录下 现在 安装 sdk 之后, 需要打开 SDK Manager 下载 `Android SDK Platform-tools` 然后, 在 sdk ...

  5. Virtual Box 增加虚拟硬盘容量

    情景: 我现在用 Win10, 因为项目原因要在虚拟机装一个 Win7. 预先估计不足. Win7 C盘容量不够. 方法1: 增加虚拟硬盘文件. 首先把虚拟机 Win7 删掉 (但不要删虚拟硬盘文件, ...

  6. iOS - (利用/调用系统定位获取当前经纬度与地理信息)

    这些天做iOS项目的时候,需要通过定位来拿到当期城市的名称.百度地图SDK有这个功能,但为了不依赖第三方,这里使用iOS自带框架CoreLocation来实现这个需求.iOS8出来之后,针对定位需要多 ...

  7. JavaScript解决命名冲突的一种方法

    过程化编码 过程化编码, 表现为 定义若干函数,然后调用定义函数, 随着页面交互逻辑变化, 从简单到复杂, 定义的所有函数.和变量 都挂在 window对象上, window对象 编程者子自定义变量名 ...

  8. 一次数据库hang住的分析过程

    现象: 普通用户和sysdba都无法登陆,业务中断 分析过程: 1.先做hanganalyze和systemstate dump $sqlplus -prelim "/as sysdba&q ...

  9. iOS 事件穿透

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  10. css less

    LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. LESSCSS可以在多种语 ...