keepalived相关配置示例(一)

配置前提:

(1) 各节点时间必须同步

(2) 确保iptablesselinux不会成为阻碍

(3) 各节点之间可通过主机名互相通信(对KA并非必须)

        建议使用/etc/hosts文件实现

(4) 确保各节点的用于集群服务的接口支持MULTICAST通信

单主配置实例:  node1为主     node2为从

node1

[root@node1 ~]#ntpdate 172.16.0.1  各节点时间必须同步
[root@node1 ~]#vim /etc/chrony.conf

keepalived相关配置示例(一) 

[root@node1 ~]#systemctl restart chronyd.service
[root@node1 ~]#systemctl enable chronyd.service 开机启动chronyd.service
[root@node1 ~]#vim /etc/hosts   各节点之间可通过主机名互相通信

keepalived相关配置示例(一) 

[root@node1 ~]#ping node2
[root@node1 ~]#ip link set multicast on dev ens33    确保各节点的用于集群服务的接口支持MULTICAST通信
[root@node1 ~]#yum install keepalived -y
[root@node1 /etc/keepalived]#cp keepalived.conf{,.bak}
[root@node1 /etc/keepalived]#vim keepalived.conf

keepalived相关配置示例(一) 

global_defs {
   notification_email {
        root@localhost  #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
   }    
   notification_email_from keepalived@localhost #设置邮件的发送地址
   smtp_server 127.0.0.1    #设置SMTP Server地址
   smtp_connect_timeout 30  #设置SMTP Server的超时时间
   router_id node1   #表示运行Keepalived服务器的一个标识。发邮件时显示大邮件主题中的信息
   vrrp_mcast_group4 224.1.101.33
}  
 
vrrp_instance VI_1 {    #vrrp 实例定义部分
    state MASTER    #指定Keepalived的角色,MASTER表示些主机是主服务器。BACKUP表示此主机是备用服务器
    interface ens33 #指定HA监测网络的接口
    virtual_router_id 33 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下MASTER与BACKUP必须是一致的
    priority 100    #定义优先级,数字越大,优先级越高
    advert_int 1
    authentication {
        auth_type PASS  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass Nl9OliUQ  # openssl rand -base64 7  得出随机八位数
    }   
    virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        172.16.0.99/16 dev ens33 label ens33:0
    }
}   
[root@node1 /etc/keepalived]#scp keepalived.conf node2:/etc/keepalived/ 传到node2中
[root@node2 /etc/keepalived]#systemctl start keepalived.service 启动时,由于优先级高于node2,所以node2关闭
[root@node2 /etc/keepalived]#systemctl status keepalived.service 查看日志

node2
[root@node2 ~]#ntpdate 172.16.0.1   各节点时间必须同步
[root@node2 ~]#vim /etc/chrony.conf

keepalived相关配置示例(一) 

[root@node2 ~]#systemctl restart chronyd.service
[root@node2 ~]#systemctl enable chronyd.service 开机启动chronyd.service
[root@node2 ~]#vim /etc/hosts   各节点之间可通过主机名互相通信

keepalived相关配置示例(一) 

[root@node2 ~]#ping node1
[root@node2 ~]#ip link set multicast on dev ens33 确保各节点的用于集群服务的接口支持MULTICAST通信
[root@node2 ~]#yum install keepalived -y
[root@node2 /etc/keepalived]#vim keepalived.conf
global_defs {
   notification_email {
        root@localhost  #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
   }    
   notification_email_from keepalived@localhost #设置邮件的发送地址
   smtp_server 127.0.0.1    #设置SMTP Server地址
   smtp_connect_timeout 30  #设置SMTP Server的超时时间
   router_id node2   #表示运行Keepalived服务器的一个标识。发邮件时显示大邮件主题中的信息
   vrrp_mcast_group4 224.1.101.33
}  
 
vrrp_instance VI_1 {    #vrrp 实例定义部分
    state BACKUP    #指定Keepalived的角色,MASTER表示些主机是主服务器。BACKUP表示此主机是备用服务器
    interface ens33 #指定HA监测网络的接口
    virtual_router_id 33 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识,即同一个vrrp_instance下MASTER与BACKUP必须是一致的
    priority 80 #定义优先级,数字越大,优先级越高
    advert_int 1
    authentication {
        auth_type PASS  #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass Nl9OliUQ  # openssl rand -base64 7  得出随机八位数
    }   
    virtual_ipaddress { #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
        172.16.0.99/16 dev ens33 label ens33:0
    }
}   
测试:
[root@node2 /etc/keepalived]#systemctl start keepalived.service
[root@node2 /etc/keepalived]#systemctl status keepalived.service 查看日志
[root@node2 /etc/keepalived]#tcpdump -i ens33 -nn host 224.1.101.33 node1开启时
08:25:13.748659 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 100, authtype simple, intvl 1s, length 20
[root@node2 /etc/keepalived]#tcpdump -i ens33 -nn host 224.1.101.33 node1关闭时
08:26:20.811002 IP 172.16.252.245 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 80, authtype simple, intvl 1s, length 20

双主模型实例:

node1
[root@node1 /etc/keepalived]#vim keepalived.conf
vrrp_instance VI_1 {
    interface ens33
    authentication {
        auth_type PASS
        auth_pass NcxCHRPP
    }
    virtual_ipaddress {
        172.16.0.99/16 dev ens33
    }
}
 
vrrp_instance VI_2 {
    state BACKUP
    priority 90
    interface ens33
    virtual_router_id 34
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass AcxRHRQP
    }
    virtual_ipaddress {
        172.16.0.88/16 dev ens33
    }
}

node2
[root@node2 /etc/keepalived]#vim keepalived.conf
vrrp_instance VI_1 {
    state BACKUP
    priority 80
    interface ens33
    virtual_router_id 33
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass NcxCHRPP
    }   
    virtual_ipaddress {
        172.16.0.99/16 dev ens33
    }   
}   
 
vrrp_instance VI_2 {
    state MASTER
    priority 100
    interface ens33
    virtual_router_id 34
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass AcxRHRQP
    }   
    virtual_ipaddress {
        172.16.0.88/16 dev ens33
    }   
}   
测试:
[root@node1 /etc/keepalived]#systemctl stop keepalived.service
[root@node1 /etc/keepalived]#systemctl stop keepalived.service
[root@node1 /etc/keepalived]#systemctl start keepalived.service
[root@node2 /etc/keepalived]#systemctl start keepalived.service
[root@node2 ~]#tcpdump -i ens33 -nn host 224.1.101.33
09:07:18.318146 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 100, authtype simple, intvl 1s, length 20
09:07:18.725960 IP 172.16.252.245 > 224.1.101.33: VRRPv2, Advertisement, vrid 34, prio 100, authtype simple, intvl 1s, length 20
09:07:19.319033 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 100, authtype simple, intvl 1s, length 20
[root@node1 /etc/keepalived]#systemctl stop keepalived.service
09:09:58.514319 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 100, authtype simple, intvl 1s, length 20
09:09:58.969318 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 34, prio 96, authtype simple, intvl 1s, length 20
09:09:59.515444 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 33, prio 100, authtype simple, intvl 1s, length 20
09:09:59.970398 IP 172.16.250.149 > 224.1.101.33: VRRPv2, Advertisement, vrid 34, prio 96, authtype simple, intvl 1s, length 20

通知脚本的使用方式:

[root@node1 /etc/keepalived]#vim notify.sh
#!/bin/bash
#
contact='root@localhost'
notify() {
local mailsubject="$(hostname) to be $1, vip floating"
local 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
[root@node1 /etc/keepalived]#chmod +x notify.sh
[root@node1 /etc/keepalived]#bash -n notify.sh
[root@node1 /etc/keepalived]#bash -x notify.sh master 脚本调用
[root@node1 /etc/keepalived]#bash -x notify.sh backup 脚本调用
[root@node1 /etc/keepalived]#bash -x notify.sh fault 脚本调用
[root@node1 /etc/keepalived]#scp -p notify.sh node2:/etc/keepalived/ 保留权限复制到node2
[root@node1 /etc/keepalived]#cp keepalived.conf{,.dual}
[root@node1 /etc/keepalived]#vim keepalived.conf 将双主模型删除
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 33
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass r6SYByVN
    }
    virtual_ipaddress {
    172.16.0.99/16 dev ens33 lable ens33:0
    }
 
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}   
[root@node2 /etc/keepalived]#cp keepalived.conf{,.dual}
[root@node2 /etc/keepalived]#vim keepalived.conf 做node1同样的操作

 

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

(0)
Linux.rookieLinux.rookie
上一篇 2017-06-26
下一篇 2017-06-26

相关推荐

  • 破解root口令

    这里主要介绍一下centos6和7root密码的破解方法 这里先说一下centos7的口令破解方法 破解CentOS7的root口令方法一 启动时任意键暂停启动  按e键进入编辑模式  将光标移动linux16开始的行,添加内核参数rd.break 按ctrl-x启动 这是进来之后的界面 然后查看用户的登录信息 echo $UID 显示结…

    2017-07-14
  • 文件查找工具之——find

        前言:Linux一切皆文件,在linux的系统中如果我们需要找到所需的文件,除了一步一步慢慢找,还有一种办法就是要使用Linux中查找文件工具命令,能让我们很快定位到我们所需的文件。所以我们必须要学好文件查找工具 一、首先我们先要了解文本搜索和文件查找的区别     文本…

    Linux干货 2015-07-06
  • find使用详解

    文件查找是根据文件的各种属性去找到相对应的文件。 文件查找分为实时查找和非实时查找。     非实时查找是根据索引来进行查找;虽然非实时查找查询速度快,但在构建索引时相当占用资源,只有在系统空闲时才能进行,这样有可能会造成索引内容与当前系统中文件的状态不一致的情况,所以查找结果有可能会不准确。   …

    Linux干货 2015-03-18
  • N26-第十三周

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)  1)共享名为shared,工作组为magedu;  2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;  3)添加samb…

    Linux干货 2017-06-01
  • 第一周作业

    1、描述计算机的组成及其功能。 计算机的基本功能:数据处理、数据存储、数据传输、控制; 计算机中的数据:包含计算机所能处理的给中对象,如数值、字符、图形、图像、声音、视频等。 计算机的所有功能都是通过指令实现的。 指令:是计算机硬件能直接识别并执行的命令,不同种类的计算机通常有着不同的指令编码,一台计算机的所有指令集合称之为指令系统。若干条指令组成的一个指令…

    Linux干货 2016-12-12
  • for,while,until简介

    Shell(以Bash为例)中的循环语句一般有for、while、until这几种,偶尔还有写错语法的时候,这里结合实例来自己总结一下。也为今后使用提供一个快捷的资料获取渠道。 一、for循环语句 实例1.1 最基本的for循环: (传统的形式,for var in …) 代码如下: #!/bin/bashfor x in one two three fou…

    Linux干货 2016-08-22