keepalived

3台机器
10.0.0.20 dr1 负载均衡器
10.0.0.23 dr2 负载均衡器
10.0.0.21 rs1 web1
10.0.0.22 rs2 web2


网站的可用性:
5个9
提供正常服务的时间/全年时间 = 99.9

1 2
master backup

网站可用性和高可用 不能混

脑裂
stonith 爆头
shoot the other node in the head
栅设备 fance

其他高可用方案:pacemaker piranha heartbeat rhcs
其他负载均衡方案:lvs nginx haproxy(7层负载均衡)

keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

面试(keepalived的工作原理)
将N台提供相同功能的服务器组成一个服务器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该服务器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。

stonith 爆头
shoot the other node in the head

fence 栅设备

heartbeat

拓扑

单播
组播(多播)
广播 255

arp
address resolv protocal ip mac
192.168.1.8


++++++++++++
+---------------------------> + Client + 192.168.122.1/24 (真实机做客户端)
| ++++++++++++
| ________________|_______________ VIP eth0:1 192.168.122.254/24
| | |
| +++++++++++++ +++++++++++++
| + Director master + + Director backup +
| +++++++++++++ +++++++++++++
| DIP eth0 192.168.122.10/24 DIP eth0 192.168.122.20/24
| |______________________________|
|_____________________________________|____________________
| |
| |
++++++++++++ ++++++++++++
+ Real Server A + + Real Server B +
++++++++++++ ++++++++++++
eth0 192.168.122.30/24 eth0 192.168.122.40/24

分别在Director master、Director backup 上部署浮动资源(VIP IPVS策略)
测试2个Director在DR模式下都工作正常。测试完成后都撤掉浮动资源。



1.在master上安装配置Keepalived(源码安装):

[root@localhost ~]# tar xf keepalived-1.2.1.tar.gz
[root@localhost ~]# cd keepalived-1.2.1

[root@localhost keepalived-1.2.1]# ./configure --prefix=/ --mandir=/usr/local/share/man/

注意:如果没有/usr/src/kernels/2.6.18-194.el5xen-i686,需要安装对应当前kernel版本的kernel-devel软件包
例:[root@localhost ~]# uname -r
2.6.18-308.el5xen
[root@localhost ~]# yum install kernel-xen-devel

Keepalived configuration
------------------------
Keepalived version : 1.2.1
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use Debug flags : No


[root@localhost keepalived-1.2.1]# make
[root@localhost keepalived-1.2.1]# make install

或者采用yum安装两者任选一种
# yum install keepalived -y

2.修改配置文件(清空原有配置文件)
[root@localhost keepalived-1.2.1]# cd /etc/keepalived/
[root@localhost keepalived]# vim keepalived.conf
! 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 Director1 //两边是一样的
}

vrrp_instance VI_1 {
state MASTER //另外一台机器是BACKUP
interface eth0 //心跳网卡 DIP那一块网卡
virtual_router_id 51
priority 50 //优先级
advert_int 1 //检查间隔,单位秒
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.122.254/24 dev eth0 //VIP随便自己定义 只要是同一个网段就可以
}
}

virtual_server 192.168.122.254 80 { //LVS 配置,VIP
delay_loop 3 //服务论询的时间间隔
lb_algo rr //LVS 调度算法
lb_kind DR // LVS 集群模式
protocol TCP
real_server 192.168.122.30 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.122.40 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}

3.在backup上安装keepalived:
# yum install keepalived -y

4.拷贝master上的keepalived.conf到backup上:
# scp keepalived.conf 192.168.122.20:/etc/keepalived/

5.拷贝后,修改配置文件
state BACKUP
priority 100

6.两个Director上启动服务:
rhel6:
# service keepalived start
rhel7:
# systemctl start keepalived


7.测试:
1)观察lvs路由条目
2)观察vip地址在哪台机器上
3)客户端浏览器访问vip
4)关闭master上的keepalived服务,再次访问vip

posted @ 2018-09-03 09:02  春江花月叶  阅读(170)  评论(0编辑  收藏  举报