您的位置:首页 > 其它

HA_keepalived基础配置篇(一)

2016-02-17 15:34 405 查看
集群有三种:

LB:负载均衡集群,load balancer

实现:传输层有ipvs,或者叫lvs;应用层有nginx

HA:高可用,high avilable

实现:keepalived

衡量高可用性公式: Avilability=平均无故障时间/(平均无故障时间+平均修复时间),不能保证无故障,但是可以减少平均修复时间来提高高可用性

HP:高性能

主要是一些科研机构,宇航局之类的高逼格的土豪单位使用的,通过横向扩展,增加服务器的数量,聚集众多性能好的服务器来计算达到解决一些复杂的问题

其它:分布式存储和分布式计算集群,

Preface

LB中的ipvs不具有健康监测的机制,而nginx却拥有健康监测机制,通过ngx_http_upstream_modules中的health_check功能实现,但是其只是针对后端的主机进行检查的,如果前端的反向代理的调度器,即nginx出现故障怎么破,即所谓的单点故障SPOF(single points of failure),于是keepalived就是解决这一问题的。。。keepalived是基于VRRP协议在linux上实现的,具体的VRRP协议的介绍可以参考华三的《VRRP技术白皮书》

Conditions

keepalived使用之前的需要注意的事项有:

各节点必须时间同步
/etc/hosts 和hostname最好能对应上,各主机之间基于密钥认证
iptables和selinux关闭

Install

keepalived从centos6.4开始被收录进base源中,因此,在centos6.4以上可以直接通过yum源直接安装,安装命令为

~]#yum install -y keepalived

Configuration

keepalived主要有两种配置模式:主备模式和主主模式

keepalived的组成主要有,在网上下载了一个图片:可以看出,由四个部分组成,分别是:核心组件、控制面板(配置文件分析器)、调度器(I/O复用器)、内存管理器



准备:

host1:
172.16.52.59
hostname: node2
host2: 172.16.52.60
hostname: node3

配置文件: /etc/keepalived/keepalived.conf

主备模式:

host1:

]# cat keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from ka@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node2
vrrp_mcast_group4 224.52.0.1

}

///global_defs 即为全局配置,notification_email为邮件接受者,notification_email_from为邮件发送者,smtp_server为邮件发送的服务器,router_id建议填写主机名,vrrp_mcast_group4 为指定一个组播地址,在这里可以省略,但是省略会造成全网广播,因此还是填上吧。。。

vrrp_instance VI_1 {

state MASTER

interface eno16777736

virtual_router_id 1

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 38b5e5cd

}

virtual_ipaddress {

172.16.52.10

}

}

///vrrp_instance 为指定一个虚拟实例,后面的VI_1为自定义的一个虚拟实例的名称,state指定首次的状态,可以为主MASTER,可以为备BACKUP,vitual_router_id 是指定虚拟的id号,用于区别不同的虚拟ip,因此每一组的虚拟实例的id号必须为不同的,priority是指定此主机的优先级的,和nice值不同的是,值越大,优先级越高,advert_int(advertise,int为interval)是设置通告的间隔时长的,即MASTER向其它虚拟主机的通过自己健康状态的间隔时长,默认为1秒。auth_type
可以有其它的选择,但是建议使用pass,即简单的字符认证,auth_pass最多只能有8个字符,可以使用openssl rand -hex 4命令随机生成一个,auth_pass在同一个虚拟实例的两个节点主机上面应当是一样的。virtual_ipaddr即为设置一个虚拟ip地址

host2:

]# cat keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from ka@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node3
vrrp_mcast_group4 224.52.0.1

}

vrrp_instance VI_1 {

state BACKUP

interface eno16777736

virtual_router_id 1

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 38b5e5cd

}

virtual_ipaddress {

172.16.52.10

}

}

测试:
1.先启动服务: systemctl start keepalived.service
2.查看详细信息: systecctl -l status keepalived.service
3.查看地址: ip addr list 这里最好不要用ifconfig查看,除非virtual_ipaddress指定了dev enoxxxx:n 即指定了网卡别名或许能看到
4.停掉主服务器MASTER,观察BACKUP的ip addr list ,这里默认的是抢占模式下的
5.然后再启动服务,继续观察

主主模式:

host1:

]# cat keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from ka@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node2

vrrp_mcast_group4 224.52.0.1

}

vrrp_instance VI_1 {

state MASTER

interface eno16777736

virtual_router_id 1

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 38b5e5cd

}

virtual_ipaddress {

172.16.52.10

}

}

vrrp_instance V_2 {

state BACKUP

interface eno16777736

virtual_router_id 2

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 0cad2f81

}

virtual_ipaddress {

172.16.52.11

}

}

host2:

]# cat keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

root@localhost

}

notification_email_from ka@localhost

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id node3

vrrp_mcast_group4 224.52.0.1

}

vrrp_instance VI_1 {

state BACKUP

interface eno16777736

virtual_router_id 1

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 38b5e5cd

}

virtual_ipaddress {

172.16.52.10

}

}

vrrp_instance V_2 {

state MASTER

interface eno16777736

virtual_router_id 2

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 0cad2f81

}

virtual_ipaddress {

172.16.52.11

}

}

测试方法和主备模式一样的

说明:组播地址的介绍:

组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。

224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;

224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;

224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;

239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: