keepalived配置

前两个配置做完实验没截图,后面的实验有图片。

keepalived的的单独设置

1.确保时间同步 ntpdate 10.1.0.1

2.保证/etc/hosts文件可以解析到

3.本机配置ssh-keygen -t rsa -P ''  ,然后ssh-copy-id -i .ssh/id_rsa.pub root@10.1.44.4

4.此时 登入10.1.44.4就不需要密码了

5.yum -y install keepalived,分别进行配置两台主机的地址分别是10.1.44.4(backup) 和10.1.44.3(master)

备机的配置

global_defs {

notification_email {

root@localhost

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node61

vrrp_mcast_group4 224.0.100.29

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 16

priority 98

advert_int 1

authentication {

auth_type PASS

auth_pass 01c5c1c8

}

virtual_ipaddress {

10.1.44.99/16 dev eth0

}

}

主机的配置

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node61

vrrp_mcast_group4 224.0.100.29

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 16

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 01c5c1c8

}

virtual_ipaddress {

10.1.44.99/16 dev eth0

}

}

配置邮件通知机制

邮件脚本:/etc/keepalived/notify.sh

#!/bin/bash

#

contact="root@localhost"

notify() {

mailsubject="$(hostname) to be $1 ,vip floating"

mailbody="$(date +'%F %T'):vrrp transition,$(hostname) changed to be $1"

echo "$mailbody" | mail -s "$mailsubject" $contact

}

case $1 in

master)

notify master

;;

backup)

notify backup

;;

fault)

notify fault

;;

*)

echo "Usage: $(basename $0) {master|backup|fault}"

exit 1

;;

esac

在keepalived.conf中的配置

virtual_ipaddress {

10.1.44.99/16 dev eth0

}

notify_master "/etc/keepalived/notify.sh mater"

notify_backup "/etc/keepalived/notify.sh backup"

notify_fault "/etc/keepalived/notify.sh fault"

}

keepalived与HTTP结合的配置

第一步:在主机和备机进行测试

先开启service keepalived start

ipvsadm -A -t 10.1.44.99:80 -s rr

ipvsadm -a  -t 10.1.44.99:80 -r 10.1.44.2 -g -w 1

ipvsadm -a  -t 10.1.44.99:80 -r 10.1.44.6 -g -w 1

在另一台设备上使用curl 10.1.44.99

第二步:keepalived配置文件中添加配置

如下为备机配置,主机类似

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node1

vrrp mcast_group4 224.0.100.19

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 15

priority 97

advert_int 1

authentication {

auth_type PASS

auth_pass RrpIoZU8

}

virtual_ipaddress {

10.1.44.99

}

}

virtual_server 10.1.44.99 80 {

delay_loop 3

lb_algo rr

lb_kind DR

protocol TCP

real_server 10.1.44.2 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 1

nb_get_retry 3

delay_before_retry 1

}

}

real_server 10.1.44.6 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 1

nb_get_retry 3

delay_before_retry 1

}

}

}

第三步:测试

配置好文件后,生成了如下的规则

keepalived配置1.jpg

(1)正常情况下会轮替

keepalived配置2.jpg

(2)关闭一台真机

keepalived配置3.jpg

(3)keepalived的主机宕机

此时的ipvsadm的规则已经转移到备机上,用户的访问页面亦然正常

keepalived配置4.jpg

sorry服务器

sorry_server应该配置在keepalived服务器上,以便于在主备真机全部宕机后,能够提供错误页显示服务。

(1)配置文件:

keepalived配置5.jpg

(2)测试

将真机的http服务全部关闭,将调度机的备机启动,

keepalived配置6.jpg

keepalived配置7.jpg

启动调度机的主机启动

keepalived配置8.jpg

keepalived状态检测

keepalived调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整。可以使用该方法去检测nginx服务是否正常;

分两步:(1)先定义一个脚本;(2)调用此脚本;

实例:

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from keepalived@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node1

vrrp mcast_group4 224.0.100.19

}

vrrp_script chk_down {

       script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

       interval 1

       weight -5

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 15

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass RrpIoZU8

}

virtual_ipaddress {

10.1.44.99

}

  track_script {

       chk_down

   }

}

当创建了down文件后主节点自动调低优先级。

原创文章,作者:178babyhanggege,如若转载,请注明出处:http://www.178linux.com/57259

(0)
178babyhanggege178babyhanggege
上一篇 2016-11-11
下一篇 2016-11-11

相关推荐

  • DNS搭建实例

      环境介绍 系统版本:CentOS 7.2 程序包:bind(提供的dns server程序、已经几个常用的测试程序)、bind-utils(bind客户端程序集,例如dig,host,nslookup等) 缓存名称服务器的配置: 1、安装程序包     ~]# yum install&…

    Linux干货 2017-02-15
  • grep与基本正则表达式基本用法

    正则表达式:Regual Expression  REGEXP      由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字母意义,而是用于表示控制或通配的功能;       分两类:             &nbsp…

    Linux干货 2016-11-03
  • shell中的引号用法

        SHELL引号  在shell里可以通过使用单引号,双引号,反引号(TAB键上方的按键),反斜线来转换某些shell元字符的含义。比如说,我们希望echo命令显示出$本身字符的意义,而不是变量,我们需要使用某些功能来屏蔽$符号本身赋予的特殊含义,使其还原本身字面的意思。 主要讲述四个比较特殊常用的符号。 1.反…

    2017-06-11
  • find详解(Blog 2)

    find与locate特性、find命令

    Linux干货 2017-11-08
  • GRUB——防止root密码被破解

    GRUB(Boot Loader): ·grub:GRand Unified Bootloader          grub 0.x:grub leagacy          grub 1.x:g…

    Linux干货 2016-09-11
  • HDFS写入和读取流程

    一、HDFS HDFS全称是Hadoop Distributed System。HDFS是为以流的方式存取大文件而设计的。适用于几百MB,GB以及TB,并写一次读多次的场合。而对于低延时数据访问、大量小文件、同时写和任意的文件修改,则并不是十分适合。 目前HDFS支持的使用接口除了Java的还有,Thrift、C、FUSE、WebDAV、HTTP等。HDFS…

    Linux干货 2015-05-12