keepalived + nginx 实现高可用集群方案

准备工作

  1. 两台虚拟机如:
    • 10.211.55.8
    • 10.211.55.10
  2. 准备安装文件
    • nginx-1.13.1.tar.gz
    • pcre-8.36.zip
    • keepalived-1.2.22.tar.gz

安装nginx

  1. 参考安装Linux一文,在两台服务器安装nginx

    10.211.55.8 称为 nginx1

    10.211.55.10 称为 nginx2

安装keepalived

  1. 解压文件

     cd /opt/software
     tar -zxvf keepalived-1.2.22.tar.gz
     cd keepalived-1.2.22
    
  2. 安装

     ./configure --prefix=/opt/keepalived
     make && make install
    
  3. 处理配置文件和可执行文件

     cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
     cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
     mkdir /etc/keepalived
     cp /opt/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
     ln -s /opt/keepalived/sbin/keepalived /usr/sbin/
    
  4. 启动服务

     /etc/init.d/keepalived start
    
  5. 按照相同的步骤在另一台服务器安装keepalived

修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   # keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP,也可配置邮件发送
   router_id 10.211.55.8
}

vrrp_script chk_nginx {
    # 运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
    script "/opt/shell/nginx_check.sh"
    # 检测时间间隔
    interval 2
    # 如果条件成立的话,则权重 -20
    weight -20
}

# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
    # 来决定主从(从:BACKUP)
    state MASTER
    # 绑定虚拟 IP 的网络接口,根据自己的机器填写
    interface eth0
    # 虚拟路由的 ID 号, 两个节点设置必须一样
    virtual_router_id 121
    # 填写本机ip
    mcast_src_ip 10.211.55.10
    # 节点优先级,主节点比从节点优先级高
    priority 100
    # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
    nopreempt
    # 组播信息发送间隔,两个节点设置必须一样,默认 1s
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 1111
    }

    # 将 track_script 块加入 instance 配置块
    track_script {
        #执行 Nginx 监控的服务
        chk_nginx
    }

    virtual_ipaddress {
        # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        10.211.55.100
    }
}

以上配置为主节点配置,从节点类似,有区别的已经标明。下面是监控服务脚本内容

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

定义变量,此变量为检查nginx进程脚本,如果进程为0,则启动nginx服务,再次检查nginx服务,如果仍没启动 ,杀掉所有keepalived的进程。

测试高可用

  1. 打开浏览器,输入虚拟ip 10.211.55.100

  2. 显示的是nginx1的页面

  3. 此时可以停掉一台nginx服务器

     /opt/nginx/sbin/nginx -s stop
    
  4. 这时候,单独访问这台服务器,发现还是可以的,也就是说,keepalived监控到nginx服务down掉了,然后自动重启这台机器了。

  5. 这时再停掉一台keepalived服务器

     /etc/init.d/keepalived stop
    
  6. 刷新浏览器,显示的将是另外一台nginx

  7. 这时就可以证明已经实现高可用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容