标签:keepalived
下面说的是lvs高可用集群
一、高可用集群
1、负载均衡
负载均衡的三种会话保持:session sticky、session replication、session server。
三种共享存储:NAS、SAN、DS。
在lvs-nat中,调度器放在路由和核心层之间;
在lvs-dr中,调度器连接分布层、接入层。
隔离(fence)设备:电源交换机
2、VRRP协议 -----------实现高可用集群,实现浮动路由,故障倒换
keepalived --------------高可用lvs集群的实现方式,可用于后端服务器检查
corosync + pacemaker --------实现高可用集群
master选择:优先级相同,比较IP地址,IP地址大的为master。
(1)、vrrp协议基础
虚拟路由器:虚拟路由器接口
VRID:虚拟路由器标识符。功能:描述路由器的分组情况、确定该分组的MAC地址。
master:虚拟IP的拥有者,能够完成数据转发的路由器
backup:检测master路由器状态
VIP:虚拟路由器的IP地址,拥有VIP的就是master
VMAC:虚拟MAC地址
优先级:选举master的参数,范围:0-255,越大优先级越高。
优先级 0:放弃选举master
优先级 255:虚拟IP地址的拥有者的优先级
抢占式:设备恢复后,要抢占原来的master主动权。
非抢占式:设备恢复后,不抢占master主动权,选择做备份。
(2)、vrrp协议工作模式、认证方式
VRRP的工作模式:单实例、多实例。
单实例:master/backup
多实例:一个实例上是master,在另一个实例上是backup。--------------负载分担
VRRP的认证方式:无认证、简单字符认证、md5认证。
二、keepalived
1、keepalived基础:
keepalived:----------------VRRP协议在Linux中的软件实现
keepalived目的是,实现高可用的ipvs服务,简称ka。
keepalived功能:
1).可为VIP地址的节点,自动生成ipvs规则;
2).可为RS进行健康状态检查;
3).可以调用脚本;
keepalived的组件:控制板、内存管理、I/O复用器、核心组件。
核心组件:
checker:第二核心
VRRP stack:第一核心
smtp:状态转换信息发送到邮箱
watch dog:看门狗,匹配checker和VRRP stack
ipvs wrapper:内核与用户空间交互
netlink reflactor:内核与用户空间交互
高可用前提:
1).节点间,时间同步
2).节点间,通过主机名互相通信
3).节点间,关闭防火墙、设置规则
4).各节点间,root用户基于ssh的秘钥认证互相通信
2、keepalived配置文件
instance:实例
# ntpdate IP -------------对主机进行系统时间与网络同步
# vi /ect/ntp.conf
(1)、keepalived的程序环境:
主配置文件:/etc/keepalived/keepalived.conf
主程序文件:/usr/sbin/keepalived
Unit File:keepalived.server
(2)、主配置文件:/etc/keepalived/keepalived.conf
包括以下两段:
GLOBAL CONFIGURATION
VRRPD CONFIGURATION
LVS CONFIGURATION
1)------------------GLOBAL CONFIGURATION--------------------------
Global definitions
global_defs
{
notification_email
{
root@localhost ---------接收方邮件地址
}
notification_email_from keepalived@localhost -----------发送方邮件地址
smtp_server 127.0.0.1 -------邮件服务器地址
router_id drct1 ---------设置路由器ID,区分不同组
vrrp_mcast_group4 224.100.100.18 -------------IPv4组播地址
}
2)------------------------VRRPD CONFIGURATION---------------------------------
VRRP synchronization group(s)
VRRP instance(s)
vrrp_instance inside_network { ----------定义实例
state MASTER ------------指定vrrp状态
interface eno16777736 --------------与vrrp协议绑定的端口
virtual_router_id 51 ----------------虚拟路由IP,确定组
priority 100 ---------------节点优先级
advert_int 1 ------------vrrp通告的时间间隔
authentication {
auth_type PASS ----------密码验证方式
auth_pass Hudlnej7 ----------设置密码
}
virtual_ipaddress {
172.16.72.101/32 brd 172.16.72.101 dev eno16777736 label eno16777736:0 -------虚拟IP地址
}
nopreempt ----------非抢占模式
preempt_delay 300 -------------抢占开始前时间
notify_master <STRING>|<QUOTED-STRING> ------------状态改变时的触发参数
notify_backup <STRING>|<QUOTED-STRING>
notify_fault <STRING>|<QUOTED-STRING>
}
3)--------------------------LVS CONFIGURATION--------------------------------
Virtual server group(s)
Virtual server(s)
Virtual server vip vport|fwmark <INT> {
delay_loop <INT> --------------服务轮询间隔
lb_algo rr|wrr|lc|wlc|lblc|sh|dh -------------lvs调度算法
lb_kind NAT|DR|TUN ------------lvs服务类型
persistence_timeout <INT> ------------------持久连接超时时间
protocol TCP ------------服务协议
sorry_server <IPADDR> <PORT> -----------所有RS不可用时,的错误提示
real_server <IPADDR> <PORT> { -------------添加RS
weight <INT> -------------RS权重
notify_up <STRING>|<QUOTED-STRING> -------------RS状态
notify_down <STRING>|<QUOTED-STRING>
HTTP_GET|SSL_GET {
url {
path <STRING> ------------后端健康检查的URL
digest <STRING> ------------检测md5是否发生变化
status_code <INT> ------------据状态码校验RS可靠性
}
nb_get_retry <INT> ------------重试次数
delay_before_retry <INT> -------------重试前的延时
connect_ip <IP ADDRESS> ----------检测RS的哪一个IP地址
connect_port <PORT> ---------------检测的第二个端口
bindto <IP ADDRESS> -------------健康检测源IP地址
bind_port <PORT> ------------健康检测源端口
connect_timeout <INTEGER> ------------超时时长
}
TCP_CHECK {
connect_ip <IP ADDRESS> //向当前的RS的哪个IP地址发起健康状态检测请求;
connect_port <PORT> //向当前的RS的那二个PORT发起健康状态检测请求;
bindto <IP ADDRESS> //发出健康检测时的源IP地址;
bind_port <PORT> //发出健康检测时的源端口;
connect_timeout <INTEGER> //连接超时时长;
}
}
3、keepalived调用外部辅助脚本(2步)
(1)、vrrp_instance【之前】
vrrp_script SCRIPT_NAME {
script ""
interval <INT> -----------间隔
weight -<INT>
}
(2)、vrrp_instance【之中】
track_script {
SCRIPT_NAME
}
标签:keepalived
原文地址:http://12496428.blog.51cto.com/12486428/1977302