需要特别注意的配置,如果没有这个配置就会发生keepalived不转发的的问题,而且是如果redis和keepalive是同一台机器,会转发,但是如果相互间独立,则realserver收不到转发包 配置master
vim /etc/sysctl.conf,添加内容如下
[plain] view plaincopy 1. net.ipv4.conf.lo.arp_ignore = 1 2. net.ipv4.conf.lo.arp_announce = 2 3. net.ipv4.conf.all.arp_ignore = 1 4. net.ipv4.conf.all.arp_announce = 2
执行命令 [plain] view plaincopy 1. sysctl -p
2. ip addr add 192.168.0.7/32 dev lo 3. ip add list
lo环上出现了指定的ip即可 配置slave1
vim /etc/sysctl.conf,添加内容如下
[plain] view plaincopy 1. net.ipv4.conf.lo.arp_ignore = 1 2. net.ipv4.conf.lo.arp_announce = 2 3. net.ipv4.conf.all.arp_ignore = 1 4. net.ipv4.conf.all.arp_announce = 2
执行命令 [plain] view plaincopy 1. sysctl -p
2. ip addr add 192.168.0.7/32 dev lo
3.
list
配置slave2
vim /etc/sysctl.conf,添加内容如下
[plain] view plaincopy 1. net.ipv4.conf.lo.arp_ignore = 1 2. net.ipv4.conf.lo.arp_announce = 2 3. net.ipv4.conf.all.arp_ignore = 1 4. net.ipv4.conf.all.arp_announce = 2
执行命令 [plain] view plaincopy 1. sysctl -p
2. ip addr add 192.168.0.8/32 dev lo 3. ip add list
设置sentinel
redis 的sentinel在配置文件中设定为2,所以route1和route2两台机器都需要配置 启动redis的sentinel
[plain] view plaincopy 1. /usr/local/bin/redis-server /etc/redis/sentinel.conf --sentinel 2.
==========================================================================================
Keepalived原理与实战精讲
gotop&FinalBSD
什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalive的一个协议就是VRRP协议,可以说这个协议就是keepalived实现的基础,那么首先我们来看看VRRP协议
注:搞运维的要有足够的耐心哦,不理解协议就很难透彻的掌握keepalived的了
一,VRRP协议
VRRP协议
学过网络的朋友都知道,网络在设计的时候必须考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单在路由器或三层交换机处实现冗余就显得尤为重要,在网络里面有个协议就是来做这事的,这个协议就是VRRPKeepalived就是巧用VRRP协议来实现高可用性(HA)的
VRRP协议有一篇文章写的非常好,大家可以直接看这里(记得认真看看哦,后面基本都已这个为基础的了) 帖子地址:http://bbs.ywlm.net/thread-790-1-1.html 只需要把服务器当作路由器即可!
在《VRRP协议》里讲到了虚拟路由器的ID也就是VRID在这里比较重要
keepalived完全遵守VRRP协议,包括竞选机制等等
二,Keepalived原理
Keepalived原理
keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件 core check vrrp libipfwc libipvs-2.4 libipvs-2.6
core:是keepalived的核心,复杂主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的 libipfwc:iptables(ipchains)库,配置LVS会用到 libipvs*:配置LVS会用到
注意,keepalived和LVS完全是两码事,只不过他们各负其责相互配合而已
keepalived启动后会有三个进程 父进程:内存管理,子进程管理等等 子进程:VRRP子进程
子进程:healthchecker子进程
有图可知,两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态
三,Keepalived配置文件详解
keepalived配置详解
keepalived有三类配置区域(姑且就叫区域吧),注意不是三种配置文件,是一个配置文件里面三种不同类别的
全局配置(Global Configuration) VRRPD配置 LVS配置
一,全局配置
全局配置又包括两个子配置: 全局定义(global definition)
静态路由配置(static ipaddress/routes)
1,全局定义(global definition)配置范例
1. global_defs 2. {
3. notification_email 4. {
5. admin@example.com 6. }
7. notification_email_from admin@example.com 8. smtp_server 127.0.0.1 9. stmp_connect_timeout 30 10. router_id node1 11. }
复制代码
全局配置解析
global_defs全局配置标识,表面这个区域{}是全局配置
1. notification_email 2. 3. { 4.
5. admin@example.com 6. admin@ywlm.net 7. 8. }
复制代码
表示keepalived在发生诸如切换操作时需要发送email通知,以及email发送给哪些邮件地址,邮件地址可以个
notification_email_from admin@example.com 表示发送通知邮件时邮件源地址是谁
smtp_server 127.0.0.1
表示发送email时使用的smtp服务器地址,这里可以用本地的sendmail来实现
smtp_connect_timeout 30 连接smtp连接超时时间