nginx+keepalived

下载包 下载地址 https://www.keepalived.org/software/keepalived-2.0.20.tar.gz

解压缩 tar -zxvf keepalived-2.0.20.tar.gz

进入到解压完的目录 cd keepalived-2.0.20

准备环境

安装openssl-devel

yum -y install openssl-devel

安装gcc

yum -y install gcc

安装

./configure --prefix=/usr/local/keepalived

make && make install

安装完成后系统会在/usr/local/keepalived目录下生成 bin etc sbin share 这 4 个文件夹。 配置文件(keepalived.conf)在 /usr/local/keepalived/etc/keepalived 这个路径下

拷贝配置文件

mkdir -p /etc/keepalived/ *keepalived启动时默认去这个路径加载配置文件*

cp keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

复制后就可以操作/etc/keepalived/keepalived.conf文件了

配置文件

主配置文件

global_defs {

  router_id NodeA

  vrrp_skip_check_adv_addr

  vrrp_garp_interval 0

  vrrp_gna_interval 0

}

vrrp_script check_script {

        script "/etc/keepalived/check_nginx.sh 80"

        interval 10

}

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id 131

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.152.131

    }

}

从配置文件

global_defs {

  router_id NodeB

  vrrp_skip_check_adv_addr

  vrrp_garp_interval 0

  vrrp_gna_interval 0

}

vrrp_script check_script {

        script "/etc/keepalived/check_nginx.sh 80"

        interval 10

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 131

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.152.131

    }

}

按同样的方法配置节点B并修改配置文件,可将A节点的配置文件复制到B节点,并修改以下几项:

router_id NodeB

state BACKUP

priority 99

其它项不必修改。

启动keepalived

/usr/local/keepalived/sbin/keepalived -D

查看进程

ps aux | grep keepalived


Keepalived 正常运行时,共启动 3 个进程,其中一个进程是父进程,负责监控其子进程;一个是 vrrp 子进程;另外一个是 checkers 子进程

查看虚拟IP是否已经绑定到网卡上

ip a

常用命令

systemctl restart keepalived

配置nginx主从切换

将写好的脚本复制到/etc/keepalived/文件夹下*就是keepalived的配置文件内配置的 vrrp_script check_script 节点*

脚本内容

#!/bin/bash

#author:liudan

#description:check nginx service

port=$1

count=0

for (( k=0; k<2; k++ ))

do

    check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://127.0.0.1:$port -o /dev/null )

    if [ "$check_code" != "200" ]; then

        count=$(expr $count + 1)

        sleep 3

        continue

    else

        count=0

        break

    fi

done

if [ "$count" != "0" ]; then

    #/usr/local/nginx/sbin/nginx -s restart

    exit 1

else

    exit 0

fi

配置mysql主从切换

配置文件

主配置文件

! Configuration File for keepalived

global_defs {

    router_id HA_MySQL #标识,双主相同

}

vrrp_instance VI_1 {

    state MASTER

    interface ens33

    virtual_router_id 51 #分组,主备相同

    priority 100 #优先级,这个高一点则先把它作为master

    advert_int 1

    nopreempt #不主动抢占资源,设置非抢占模式

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.152.131

    }

}

virtual_server 192.168.152.131 3306 {

    delay_loop 2

    lb_algo wrr #带有权重的轮询

    lb_kind DR

    persistence_timeout 60 #同一IP的连接60秒内被分配到同一台真实服务器

    protocol TCP

    real_server 192.168.152.132 3306 {

        weight 3 #权重为3

        notify_down /data/keepalived_shutdown.sh #当mysq服down时,执行此脚本,杀死keepalived实现切换, 自杀脚本.

        TCP_CHECK {

            connect_timeout 10

            nb_get_retry 3

            delay_before_retry 3

            connect_port 3306

        }

    }

}

从配置文件

! Configuration File for keepalived

global_defs {

    router_id HA_MySQL

}

vrrp_instance VI_1 {

    state BACKUP

    interface ens33

    virtual_router_id 51

    priority 90 #优先级,这个低一点

    advert_int 1

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress { #虚拟IP (VIP)

        192.168.152.131

    }

}

virtual_server 192.168.152.131 3306 {

    delay_loop 2 #每2秒检查一次real_server存活

    lb_algo wrr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

    real_server 192.168.152.130 3306 {

        weight 3

        notify_down /data/keepalived_shutdown.sh

        TCP_CHECK {

            connect_timeout 10 #连接超时时间

            nb_get_retry 3 #重连次数

            delay_before_retry 3 #重连间隔时间

            connect_port 3306 #健康检查端口,配置自己mysql服务端口

        }

    }

}

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