Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63395
  • 博文数量: 24
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-14 04:58
文章分类
文章存档

2016年(24)

我的朋友

分类: LINUX

2016-11-03 21:41:06

一、Keepalived的安装过程
Keepalived的安装非常简单,下面通过源码编译的方式介绍下Keepalived的安装过程。首先打开Keepalived的官方网址,从中可以下载到各种版本的Keepalived,这里下载的是keepalived-1.2.12.tar.gz。以操作系统环境Centos6.3为例,Keepalived安装步骤如下:
[root@keepalived-master app]#tar zxvf keepalived-1.2.12.tar.gz
[root@keepalived-master app]#cd keepalived-1.2.12
[root@keepalived-master keepalived-1.2.12]#./configure   --sysconf=/etc \
> --with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64
[root@keepalived-master keepalived-1.2.12]#make
[root@keepalived-master keepalived-1.2.12]#make install
[root@keepalived-master keepalived-1.2.12]#ln -s /usr/local/sbin/keepalived  /sbin/
[root@keepalived-master keepalived-1.2.12]# chkconfig  --add keepalived
[root@keepalived-master keepalived-1.2.12]# chkconfig  --level 35 keepalived on
在编译选项中,“--sysconf”指定了Keepalived配置文件的安装路径,即路径为/etc/Keepalived/Keepalived.conf;“--with-kernel-dir”是个很重要的参数,但这个参数并不是要把Keepalived编译进内核,而是指定使用内核源码中的头文件,即include目录。只有在使用LVS时,才需要用到“--with-kernel-dir”参数,其他时候是不需要的。


在Keepalived输出的加载模块信息,其中:
? Use IPVS Framework表示使用IPVS框架,也就是负载均衡模块,后面的“Yes”表示启用IPVS功能。一般在搭建高可用负载均衡集群时会启用IPVS功能,如果只是使用Keepalived的高可用功能,则不需要启用IPVS模块,可以在编译Keepalived时通过“--disable-lvs”关闭IPVS功能。
? IPVS sync daemon support表示启用IPVS的同步功能,此模块一般和IPVS模块一起使用,如果需要关闭,可在编译Keepalived时通过“--disable-lvs-syncd”参数实现。
? IPVS use libnl表示使用新版的libnl。libnl是NETLINK的一个实现,如果要使用新版的libnl,需要在系统中安装libnl和libnl-devel软件包。
? Use VRRP Framework表示使用VRRP框架,这是实现Keepalived高可用功能必需的模块。
? Use VRRP VMAC表示使用基础VMAC接口的xmit VRRP包,这是Keepalived在1.2.10版本及以后新增的一个功能。
至此,Keepalived的安装介绍完毕。下面开始进入Keepalived配置的讲解。




二、 Keepalived的全局配置
在上节安装Keepalived的过程中,指定了Keepalived配置文件的路径为/etc/Keepalived/Keepalived.conf,Keepalived的所有配置均在这个配置文件中完成。由于Keepalived.conf文件中可配置的选项比较多,这里根据配置文件所实现的功能,将Keepalived配置分为三类,分别是:全局配置(Global Configuration)、VRRPD配置和LVS配置。下面将主要介绍下Keepalived配置文件中一些常用配置选项的含义和用法。
Keepalived的配置文件都是以块(block)的形式组织的,每个块的内容都包含在{}中,以“#”和“!”开头的行都是注释。全局配置就是对整个Keepalived都生效的配置,基本内容如下:
! Configuration File for keepalived
global_defs {
   notification_email {
     dba.gao@gmail.com
     ixdba@163.com
   }
   notification_email_from Keepalived@localhost
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL  
}
全局配置以“global_defs”作为标识,在“global_defs”区域内的都是全局配置选项,其中:
? notification_email用于设置报警邮件地址,可以设置多个,每行一个。注意,如果要开启邮件报警,需要开启本机的Sendmail服务。
? notification_email_from用于设置邮件的发送地址。
? smtp_server用于设置邮件的smtp server地址。
? smtp_connect_timeout用于设置连接smtp server的超时时间。
? router_id表示运行Keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息。


三、 Keepalived的VRRPD配置
VRRPD配置是Keepalived所有配置的核心,主要用来实现Keepalived的高可用功能。从结构上来看,VRRPD配置又可分为VRRP同步组配置和VRRP实例配置。
这里首先介绍同步组实现的主要功能。同步组是相对于多个VRRP实例而言的,在多个VRRP实例的环境中,每个VRRP实例所对应的网络环境会有所不同,假设一个实例处于网段A,另一个实例处于网段B,而如果VRRPD只配置了A网段的检测,那么当B网段主机出现故障时,VRRPD会认为自身仍处于正常状态,进而不会进行主备节点的切换,这样问题就出现了。同步组就是用来解决这个问题的,将所有VRRP实例都加入到同步组中,这样任何一个实例出现问题,都会导致Keepalived进行主备切换。
下面是两个同步组的配置样例:
vrrp_sync_group G1 {
  group {
    VI_1
    VI_2
    VI_5
  }
  notify_backup "/usr/local/bin/vrrp.back arg1 arg2"
  notify_master "/usr/local/bin/vrrp.mast arg1 arg2"
  notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"
}


vrrp_sync_group G2 {
  group {
    VI_3
    VI_4
  }
}
其中,G1同步组包含VI_1、VI_2、VI_5三个VRRP实例,G2同步组包含VI_3、VI_4两个VRRP实例。这五个实例将在vrrp_instance段进行定义。另外,在vrrp_sync_group段中还出现了notify_master、notify_backup、notify_fault和notify_stop四个选项,这是Keepalived配置中的一个通知机制,也是Keepalived包含的四种状态。下面介绍每个选项的含义。
? notify_master:指定当Keepalived进入Master状态时要执行的脚本,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。Keepalived允许脚本传入参数,因此灵活性很强。
? notify_backup:指定当Keepalived进入Backup状态时要执行的脚本,同理,这个脚本可以是一个状态报警脚本,也可以是一个服务管理脚本。
? notify_fault:指定当Keepalived进入Fault状态时要执行的脚本,脚本功能与前两个类似。
? notify_stop:指定当Keepalived程序终止时需要执行的脚本。
下面正式进入VRRP实例的配置,也就是配置Keepalived的高可用功能。VRRP实例段主要用来配置节点角色(主或从)、实例绑定的网络接口、节点间验证机制、集群服务IP等。下面是实例VI_1的一个配置样例。
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1  
    mcast_src_ip
    garp_master_delay  10 
 
 track_interface {
eth0 
eth1
}
    authentication {
        auth_type PASS
        auth_pass qwaszx
    }
    virtual_ipaddress {
     #/  brd    dev  scope  label
阅读(1086) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~