设为首页 收藏本站
查看: 1617|回复: 0

[经验分享] keepalived高可用web

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-26 16:16:45 | 显示全部楼层 |阅读模式
----------------------------------
一、前言
二、环境
三、Keepalived体系架构
四、安装Keepalived
五、案例配置
----------------------------------

一、前言
   keepalived是一个类似于layer3,4&5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
二、环境
系统:CentOS6.4 32位
软件包:keepalived-1.2.1.tar.gz
Keepalived官网:http://www.keepalived.org/
三、Keepalived体系架构
wKioL1OBlWCgcZpRAACUn7rdsas187.jpg
1)WatchDog 负责监控checkers和VRRP进程的状况。
2)Checkers 负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换句话说—可以没有VRRP Stack,但健康检查healthchecking是一定要有的。
3)VRRP Stack负责负载均衡器之间失败切换FailOver。如果只用一个负载均衡器,则VRRP不是必须的。
4) IPVS wrapper 用来发送设定的规则到内核ipvs代码。
5) Netlink Reflector 用来设定 vrrp 的vip地址等。  

四、安装Keepalived
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# yum groupinstall "Additional Development"         //安装开发工具
# yum groupinstall "Development tools"
# tar -zxvf keepalived-1.2.1.tar.gz -C /usr/local/src/
# cd /usr/local/src/keepalived-1.2.1
# ./cnfigure
Keepalived configuration
------------------------
Keepalived version       : 1.2.1
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -lpopt -lssl -lcrypto
Use IPVS Framework       : No    //配置出现错误
IPVS sync daemon support : No
Use VRRP Framework       : Yes
Use Debug flags          : No
解决方法:
# yum install kernel-devel ipvsadm
# ln -s /usr/src/kernels/2.6.32-358.el6.i686/ /usr/src/linux

# ./cnfigure                    //再次配置环境
# make                          //编译
# make install                  //安装

# cd /usr/local/etc             //keepalived默认安装路径
# ll
drwxr-xr-x. 3 root root 4096 May 24 00:37 keepalived
drwxr-xr-x. 3 root root 4096 May 24 00:29 rc.d
drwxr-xr-x. 2 root root 4096 May 24 00:29 sysconfig
  

配置以系统方式service启动
# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
# cp /usr/local/etc/sysconfig/keepalived  /etc/sysconfig/
# mkdir /etc/keepalived
# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
# cp /usr/local/sbin/keepalived /usr/sbin/

# service keepalived start
Starting keepalived:                                       [  OK  ]
# ps aux |grep keepalived
root      4809  0.0  0.0   6480   764 ?        Ss   00:51   0:00 keepalived -D
root      4811  0.2  0.1   6536  1788 ?        S    00:51   0:00 keepalived -D
root      4812  0.1  0.1   6536  1192 ?        S    00:51   0:00 keepalived -D
root      4819  0.0  0.0   4356   756 pts/0    S+   00:52   0:00 grep keepalived




五、案例配置
案例简介:
两台服务器实现高可用web,每台服务器均一张网卡。
(1)前端:当任一服务器的网卡宕掉后,web服务切换到另一web服务器。
(2)后端:当任一服务器的web服务宕掉后,web服务切换到另一web服务器。
1.拓扑图:

wKiom1OBmNuht35tAACVrWZglXo948.jpg
IP规划:
MASTER:
eth0:192.168.2.20/24
BACKUP:
eth0:192.168.2.30/24
VIP:192.168.2.10/24
2.MASTER配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# cat /etc/keepalived/keepalived.conf  //keepalived主配置文档

#guration File for keepalived
#global define
global_defs {
        router_id Haweb_1
        }
vrrp_sync_group VGM {
        group {
        VI_HA
        }
}
vrrp_script chk_http_port {
    script "killall -0 httpd"
       #script "/tcp/127.0.0.1/80"
interval 1
}
# vvrp_instance define #
vrrp_instance VI_HA {
        state MASTER
        interface eth1
        lvs_sync_daemon_inteface eth1
        virtual_router_id 51
        priority 100
        advert_int 5
        authentication {
            auth_type PASS
            auth_pass 123456
        }
    track_script {
        chk_http_port
}
    virtual_ipaddress {
            192.168.2.10/24 dev eth1
        }
}

安装web服务器:
# yum install httpd
# service httpd start
# cd /var/www/html/
# echo "This is Master web.">index.html
# service keepalived start                //启动keepalived
# tail -f /var/log/messages              //查看日志状态
May 24 23:32:25 localhost Keepalived_vrrp: VRRP_Group(VGM) Syncing instances to MASTER state



3.BACKUP配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# cat /etc/keepalived/keepalived.conf
#guration File for keepalived
#global define
global_defs {
        router_id Haweb_1
        }
vrrp_sync_group VGM {
        group {
        VI_HA
        }
}
vrrp_script chk_http_port {
    script "killall -0 httpd"
#       script "/tcp/127.0.0.1/80"
interval 1
}
# vvrp_instance define #
vrrp_instance VI_HA {
        state BACKUP
        interface eth2
        lvs_sync_daemon_inteface eth2
        virtual_router_id 51
        priority 90
        advert_int 5
        authentication {
            auth_type PASS
            auth_pass 123456
        }
    track_script {
        chk_http_port
}
    virtual_ipaddress {
            192.168.2.10/24 dev eth2
        }
}

安装web服务器:
# yum install httpd
# service httpd start
# cd /var/www/html/
# echo "This is Backup web.">index.html
# service keepalived start
# tail -f /var/log/messages
May 24 23:40:33 localhost Keepalived_vrrp: VRRP_Instance(VI_HA) Entering BACKUP STATE



4.测试
(1)前端master服务器的网卡宕掉
1
2
3
4
5
6
7
# ip addr                //master端,查看IP绑定。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:08:52:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.20/24 brd 192.168.2.255 scope global eth0
    inet 192.168.2.10/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe08:523f/64 scope link
       valid_lft forever preferred_lft forever



浏览器访问VIP  http://192.168.2.10
wKiom1OBnBbjHO78AADKItOcIt4603.jpg
1
2
3
4
5
6
7
8
# ifconfig eth1 down        //模拟master端网卡宕掉(模拟后请再次打开)
# ip addr                   //backup端,查看IP绑定。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:6c:f9:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.30/24 brd 192.168.2.255 scope global eth0
    inet 192.168.2.10/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe6c:f945/64 scope link
       valid_lft forever preferred_lft forever



刷新页面:
wKioL1OBm-qzDFPlAADGlRkjyj0734.jpg
(2)后端web服务宕掉
1
2
3
4
5
6
7
# ip addr                   //master端,查看IP绑定。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:08:52:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.20/24 brd 192.168.2.255 scope global eth0
    inet 192.168.2.10/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe08:523f/64 scope link
       valid_lft forever preferred_lft forever



浏览器访问VIP  http://192.168.2.10
wKiom1OBnBbjHO78AADKItOcIt4603.jpg
1
2
3
4
5
6
7
8
9
# service httpd stop         //模拟master端web服务宕掉
Stopping httpd:                            [  OK  ]      
# ip addr                   //backup端,查看IP绑定。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:6c:f9:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.30/24 brd 192.168.2.255 scope global eth0
    inet 192.168.2.10/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe6c:f945/64 scope link
       valid_lft forever preferred_lft forever



刷新页面:
wKioL1OBm-qzDFPlAADGlRkjyj0734.jpg
案例总结:
1) 当停止MASTER的网卡或web服务时,由BACKUP接管VIP,提供WEB服务。
2) 当停止BACKUP的网卡或web服务时,由MASTER接管VIP,提供WEB服务。
3)从上可以看出故障切换是由keepalived进程的存活而产生的IP飘移。

ps:关于Keepalived抢占问题如何优化?
两台服务器组成高可用集群,分别处于Master与Backup状态,当Master出现故障时由Backup来接管
所有任务,那么当Master恢复时,Master会抢回所有权。虽然是高可用,但是对客户来说,来回的切换是比较烦恼的事。 如何让master状态的主机挂掉后不抢占的办法:可将两服务器均设成backup状态是因为nopreempt(不抢占)只支持backup模式,而让哪一台backup成为master,这个由优先级priority为决定。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19656-1-1.html 上篇帖子: keepalived+nginx+nginx web script实现双主模型 下篇帖子: ipvsadm+keepalived+inotify-tools自动安装脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表