ldirectord与keepalived健康检查-高可用
2018-02-22 00:21
375 查看
一. ldirectord健康检查
原理:(在后端的一台rs挂掉以后,自动删掉它的策略去找其它的rs不至于在调度到它时出错)
注意:ldirectord是自动创建ipvs规则表,所以在开启它时,要先关掉ipvsadm服务.
1.安装:(需要解决很多依赖性,根据安装时的报错一次解决依赖包)
2.rpm -ql ldirectord ##查看安装路径
cd /etc/ha.d
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf . ##拷贝配置文件
vim ldirectord.cf
virtual=172.25.31.100:80
real=172.25.31.3:80 gate
real=172.25.31.4:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
#receive="Test Page"
#virtualhost=www.x.y.z
/etc/init.d/ipvsadm stop ##关闭ipvsadm
/etc/init.d/ldirectord start
ipvsadm -L
3.测试:在客户端 curl 172.25.90.100 查看到了两台rs上的发布页面,若停掉一台rs的apache,则对于用户来说是没有影响的,用ipvsadm -L查看策略可知,ldirectord已经将停掉的那台服务器的策略自动删除,这一切对用户来说是透明的.
二. keepalived:检测服务器状态(健康检查和高可用)
1.源码安装:
1. tar zxf keepalived-1.2.20.tar.gz
2. yum install libnfnetlink-devel-1.0.0-1.el6.X86_64.rpm
yum install openssl-devel libnl-devel iptables-devel
./configure --prefix=/usr/local/keepalived && make && make install
3. cd /usr/local/
4. cd keepalived/
5. ln -s /usr/local/keepalived/etc/keepalived/ /etc/
6. ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
7. ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
8. ln -s /usr/local/keepalived/sbin/keepalived /sbin/
9. chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
10. cd /etc/keepalived/
2.健康检查:
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30 OpenSSL
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict 注释掉火墙策略
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #vrrp实例定义部分
state MASTER 调度器的状态为MASTER
interface eth0 工作网卡是eth0#设置对外服务的接口
virtual_router_id 51 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
priority 100 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码
auth_type PASS #主要有PASS和AH两种
auth_pass 1111 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
}
virtual_ipaddress { VIP #设置虚拟ip地址,可以设置多个,每行一个
172.25.31.100
}
}
virtual_server 172.25.31.100 80 { #设置虚拟服务器,需要指定虚拟ip和服务端口
delay_loop 6 #健康检查时间间隔
lb_algo rr #负载均衡调度算法
lb_kind DR #负载均衡转发规则
#persistence_timeout 50 #设置会话保持时间,对动态网页非常有用
protocol TCP #指定转发协议类型,有TCP和UDP两种
real_server 172.25.31.3 80 { #配置服务器节点1,需要指定real server的真实IP地址和端口
weight 1 #设置权重,数字越大权重越高
TCP_CHECK { #realserver的状态监测设置部分单位秒
connect_port 80 #监测端口
connect_timeout 3 #超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 172.25.31.4 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 172.25.31.100 21 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.25.31.3 21 {
weight 1
TCP_CHECK {
connect_port 21
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.31.4 21 {
weight 1
TCP_CHECK {
connect_port 21
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
注意有坑:TCP_CHECK 和 ‘{' 之间有一个空格,要不然会导致某一个RS用ipvsadm查看不到,实现不了负载均衡。
作用:监听了80和21端口,若一个后台服务器挂掉,客户端看不到错误反馈,因为健康检测的性质使访问跳转到正常的后台服务器上.
3.高可用性(一个调度器挂掉以后,可以让另外一个优先级比它低的调度器代替从而使客户端能正常访问且感受不到这种跳转)
vim keepalived.conf(在配置文件中做以下修改)
vrrp_instance VI_1 {
state BACKUP 调度器的状态为BACKUP
interface eth0
virtual_router_id 88
priority 50 优先级改为比MASTER低的50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.31.100
}
注意:关闭调度器的防火墙和selinux可以减少一些不必要的错误.
排错思想:在vs端用命令ipvsadm -Ln查看策略,并看是否有客户端的更新记录,若有则证明vs服务器是没有问题的,检查rs服务器的http是否开启,iptables是否关闭,VIP是否加入到设备上还有arpabled策略是否配置好,确保以VIP进来的数据包要被丢弃(使调度器发挥作用),以VIP出去的数据包要伪装成rs真正的ip.
在客户端用命令:arp -an | grep 100 查看rs的MAC地址,看是哪个rs在工作.
arp -d vip 删除arp的缓存
补充:chkconfig --list ldirectord ##查看开机启动项,在测试keepalived时关掉ldirectord
chkconfig ldirectord on ##开机自动启动
可以把添加ip和mount的命令写在/etc/rc.local脚本中,会永久写入
ldirectord和keepalived的比较:ldirectord用于健康检查,检查的只有rs后端服务器,而keepalived除了可以检查后端服务器,还可 以检查vs服务器的状态,正是由于这个特点keepalived才可以用于高可用.
原理:(在后端的一台rs挂掉以后,自动删掉它的策略去找其它的rs不至于在调度到它时出错)
注意:ldirectord是自动创建ipvs规则表,所以在开启它时,要先关掉ipvsadm服务.
1.安装:(需要解决很多依赖性,根据安装时的报错一次解决依赖包)
2.rpm -ql ldirectord ##查看安装路径
cd /etc/ha.d
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf . ##拷贝配置文件
vim ldirectord.cf
virtual=172.25.31.100:80
real=172.25.31.3:80 gate
real=172.25.31.4:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
#receive="Test Page"
#virtualhost=www.x.y.z
/etc/init.d/ipvsadm stop ##关闭ipvsadm
/etc/init.d/ldirectord start
ipvsadm -L
3.测试:在客户端 curl 172.25.90.100 查看到了两台rs上的发布页面,若停掉一台rs的apache,则对于用户来说是没有影响的,用ipvsadm -L查看策略可知,ldirectord已经将停掉的那台服务器的策略自动删除,这一切对用户来说是透明的.
二. keepalived:检测服务器状态(健康检查和高可用)
1.源码安装:
1. tar zxf keepalived-1.2.20.tar.gz
2. yum install libnfnetlink-devel-1.0.0-1.el6.X86_64.rpm
yum install openssl-devel libnl-devel iptables-devel
./configure --prefix=/usr/local/keepalived && make && make install
3. cd /usr/local/
4. cd keepalived/
5. ln -s /usr/local/keepalived/etc/keepalived/ /etc/
6. ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
7. ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
8. ln -s /usr/local/keepalived/sbin/keepalived /sbin/
9. chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
10. cd /etc/keepalived/
2.健康检查:
vim keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30 OpenSSL
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict 注释掉火墙策略
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #vrrp实例定义部分
state MASTER 调度器的状态为MASTER
interface eth0 工作网卡是eth0#设置对外服务的接口
virtual_router_id 51 #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
priority 100 #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
advert_int 1 #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码
auth_type PASS #主要有PASS和AH两种
auth_pass 1111 #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
}
virtual_ipaddress { VIP #设置虚拟ip地址,可以设置多个,每行一个
172.25.31.100
}
}
virtual_server 172.25.31.100 80 { #设置虚拟服务器,需要指定虚拟ip和服务端口
delay_loop 6 #健康检查时间间隔
lb_algo rr #负载均衡调度算法
lb_kind DR #负载均衡转发规则
#persistence_timeout 50 #设置会话保持时间,对动态网页非常有用
protocol TCP #指定转发协议类型,有TCP和UDP两种
real_server 172.25.31.3 80 { #配置服务器节点1,需要指定real server的真实IP地址和端口
weight 1 #设置权重,数字越大权重越高
TCP_CHECK { #realserver的状态监测设置部分单位秒
connect_port 80 #监测端口
connect_timeout 3 #超时时间
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 172.25.31.4 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 172.25.31.100 21 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.25.31.3 21 {
weight 1
TCP_CHECK {
connect_port 21
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.31.4 21 {
weight 1
TCP_CHECK {
connect_port 21
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
注意有坑:TCP_CHECK 和 ‘{' 之间有一个空格,要不然会导致某一个RS用ipvsadm查看不到,实现不了负载均衡。
作用:监听了80和21端口,若一个后台服务器挂掉,客户端看不到错误反馈,因为健康检测的性质使访问跳转到正常的后台服务器上.
3.高可用性(一个调度器挂掉以后,可以让另外一个优先级比它低的调度器代替从而使客户端能正常访问且感受不到这种跳转)
vim keepalived.conf(在配置文件中做以下修改)
vrrp_instance VI_1 {
state BACKUP 调度器的状态为BACKUP
interface eth0
virtual_router_id 88
priority 50 优先级改为比MASTER低的50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.31.100
}
注意:关闭调度器的防火墙和selinux可以减少一些不必要的错误.
排错思想:在vs端用命令ipvsadm -Ln查看策略,并看是否有客户端的更新记录,若有则证明vs服务器是没有问题的,检查rs服务器的http是否开启,iptables是否关闭,VIP是否加入到设备上还有arpabled策略是否配置好,确保以VIP进来的数据包要被丢弃(使调度器发挥作用),以VIP出去的数据包要伪装成rs真正的ip.
在客户端用命令:arp -an | grep 100 查看rs的MAC地址,看是哪个rs在工作.
arp -d vip 删除arp的缓存
补充:chkconfig --list ldirectord ##查看开机启动项,在测试keepalived时关掉ldirectord
chkconfig ldirectord on ##开机自动启动
可以把添加ip和mount的命令写在/etc/rc.local脚本中,会永久写入
ldirectord和keepalived的比较:ldirectord用于健康检查,检查的只有rs后端服务器,而keepalived除了可以检查后端服务器,还可 以检查vs服务器的状态,正是由于这个特点keepalived才可以用于高可用.
相关文章推荐
- KeepAlived+Redis | 高可用 | 主从复制 | 健康检查 | 故障自动切换
- 最近在学习LVS(Linux virtual Server)高可用,Keepalived用于健康检查
- keepalived健康检查 HTTP_GET
- CentOS7 Keepalived+LVS 负载均衡 后台节点健康检查
- keepalived HTTP_GET健康检查配置
- 运维笔记30 (lvs负载均衡的(nat,tun,dr三种模式,ldirectord健康检测,ldirectord结合heartbeat)keepalived+lvs介绍)
- 利用ldirectord实现lvs后端realserver健康状态检查
- Keepalived健康检查RST ACK疑问
- keepalived http的自定义健康检查
- keepalived健康检查方式
- lvs+keepalived健康检查
- keepalived健康检查 HTTP_GET .
- keepalived健康检查 HTTP_GET
- 利用heartbeat+drbd实现HA,ldirectord健康检查后端realserver。
- Keepalived健康检查方式配置
- lvs+keepalived自定义健康检查脚本(MISC_CHECK用法)
- keepalived健康检查方式配置笔记
- keepalived健康检查方式
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
- 利用NetScaler和自行编写的健康检查脚本,完美解决多台MySQL Slave数据库的负载均衡