设为首页 收藏本站
查看: 2182|回复: 6

[经验分享] keepalived支持LVS高可用服务以及支持web服务的高可用

[复制链接]

尚未签到

发表于 2013-5-17 08:38:13 | 显示全部楼层 |阅读模式

准备:四台主机,其中两台为高可用节点,IP地址分别外172.16.86.4、172.16.86.5,两台为real server,IP地址分别为172.16.86.7、172.16.86.8

一、首先让两台高可用节点时间同步,然后下载安装包并安装。我们这里是老师准备好的,你们可以在网上自行下载。

节点1:

[iyunv@node1 ~]# service ntpd stop

[iyunv@node1 ~]# ntpdate 172.16.0.1

[iyunv@node1 ~]# date

Thu May 16 11:01:39 CST 2013

[iyunv@node1 ~]# lftp 172.16.0.1

lftp 172.16.0.1:~> cd pub/Sources/keepalived/

lftp 172.16.0.1:/pub/Sources/keepalived> get get keepalived-1.2.7-5.el5.i386.rpm

[iyunv@node1 ~]# yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm

[iyunv@node1 ~]# scp keepalived-1.2.7-5.el5.i386.rpm node2:/root/

节点2:

[iyunv@node2 ~]# service ntpd stop

[iyunv@node2 ~]# ntpdate 172.16.0.1

[iyunv@node2 ~]# date

Thu May 16 11:01:39 CST 2013

[iyunv@node2 ~]#yum -y --nogpgcheck localinstall keepalived-1.2.7-5.el5.i386.rpm

二、为两台real server提供web服务提供网页,并配置DR模型。

RS1:

[iyunv@localhost ~]# yum install httpd -y

[iyunv@localhost ~]#echo "RS1.magedu.com" > /var/www/html/index.html

[iyunv@localhost ~]#echo 2 > proc/sys/net/ipv4/conf/all/arp_announce

[iyunv@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

[iyunv@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[iyunv@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

[iyunv@localhost ~]# ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up

[iyunv@localhost ~]# route add -host 172.16.86.1 dev lo:0

[iyunv@localhost ~]# ifconfig

212107145.jpg

RS2:

[iyunv@localhost ~]# yum install httpd -y

[iyunv@localhost ~]#echo "RS2.magedu.com" > /var/www/html/index.html

[iyunv@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[iyunv@localhost ~]#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

[iyunv@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[iyunv@localhost ~]#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore

[iyunv@localhost ~]# ifconfig lo:0 172.16.86.1 broadcast 172.16.86.1 netmask 255.255.255.255 up

[iyunv@localhost ~]# route add -host 172.16.86.1 dev lo:0

[iyunv@localhost ~]# ifconfig

212130249.jpg

三、编辑两台高可用节点上keepalived的配置文件

节点1:

[iyunv@node1 ~]# cd /etc/keepalived/

[iyunv@node1 keepalived]# ls

keepalived.conf  keepalived.conf.haproxy_example  notify.sh

[iyunv@node1 keepalived]# vim keepalived.conf

! Configuration File for keepalived

global_defs {

  notification_email {

    root@localhost

  }

  notification_email_from root@localhost

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

vrrp_instance VI_1 {

   state MASTER

   interface eth0

   virtual_router_id 51

   priority 101

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass password

   }

   virtual_ipaddress {

       172.16.86.1/16 dev eth0 label eth0:0

   }

}

  virtual_server 172.16.86.1 80 {

   delay_loop 6

   lb_algo rr

   lb_kind DR

   nat_mask 255.255.0.0

   protocol TCP

   real_server 172.16.86.7 80 {

       weight 1

       HTTP_GET {

           url {

             path /

               status_code 200

           }

           connect_timeout 2

           nb_get_retry 3

           delay_before_retry 1

       }

   }

real_server 172.16.86.8 80 {

weight 1

       HTTP_GET {

           url {

             path /

               status_code 200

           }

           connect_timeout 2

           nb_get_retry 3

           delay_before_retry 1

       }

   }

}

[iyunv@node1 keepalived]# scp keepalived.conf node2:/etc/keepalived/

节点2:

[iyunv@node1 keepalived]# vim keepalived.conf

! Configuration File for keepalived

global_defs {

  notification_email {

    root@localhost

  }

  notification_email_from root@localhost

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

vrrp_instance VI_1 {

   state BACKUP

   interface eth0

   virtual_router_id 51

   priority 100

   advert_int 1

   authentication {

       auth_type PASS

       auth_pass password

   }

   virtual_ipaddress {

       172.16.86.1/16 dev eth0 label eth0:0

   }

}

  virtual_server 172.16.86.1 80 {

   delay_loop 6

   lb_algo rr

   lb_kind DR

   nat_mask 255.255.0.0

   protocol TCP

   real_server 172.16.86.7 80 {

       weight 1

       HTTP_GET {

           url {

             path /

               status_code 200

           }

           connect_timeout 2

           nb_get_retry 3

           delay_before_retry 1

       }

   }

real_server 172.16.86.8 80 {

weight 1

       HTTP_GET {

           url {

             path /

               status_code 200

           }

           connect_timeout 2

           nb_get_retry 3

           delay_before_retry 1

       }

   }

}

四、在两台高可用节点上启动keepalived服务,并安装ipvsadm工具

[iyunv@node1 ~]# service keepalived start

[iyunv@node2 ~]# service keepalived start

如果节点1成为主的,那么节点1就会有IP地址

212154467.jpg

[iyunv@node1 ~]# yum install ipvsadm -y

[iyunv@node2 ~]# yum install ipvsadm -y

查看生成的规则:

212209379.jpg

网页测试:

212225921.jpg

刷新网页:

212245258.jpg

测试:如果把RS2的web服务关掉

[iyunv@station51 ~]# service httpd stop

Stopping httpd:                                            [  OK  ]

结果:

212301431.jpg

如果real server都出现故障,此时应该提供一个提示网页,所以要在这两台高可用节点上也安装web服务用来提供一个提示网页。

节点1:

[iyunv@node1 ~]# yum  -y install httpd

[iyunv@node1 ~]#echo "Wronging now" > /var/www/html/index.html

[iyunv@node1 ~]# service httpd start

节点2:

[iyunv@node2 ~]# yum  -y install httpd

[iyunv@node2 ~]#echo "Wronging now" > /var/www/html/index.html

[iyunv@node2 ~]# service httpd start

配置节点1和节点2的keepalived的配置文件

[iyunv@node1 keepalived]# vim keepalived.conf

212323826.jpg

测试:所有real server都出现故障时登陆网页的状况,先把real server 上的web服务全部关掉。

[iyunv@localhost ~]# service httpd stop     ##关闭RS1的web服务

Stopping httpd:                                            [  OK  ]

[iyunv@localhost ~]# service httpd stop ##关闭RS2的web服务

Stopping httpd:                                            [  OK  ]

登录网页:

212341891.jpg

此时如果real service上的web服务又重新启动了,那么此时再访问就会去访问real server 上的web服务器提供的网页

模拟高可用节点坏掉的情境,编辑配置文件使其能够手动关闭其中任意一个高可用节点。[iyunv@node1 keepalived]# vim keepalived.conf

212400624.jpg

节点2的配置内容和节点1一样,然后从新启动服务

[iyunv@node1 keepalived]# service keepalived restart

[iyunv@node2 keepalived]# service keepalived restart

节点1:此时地址在节点1

212413839.jpg

在/etc/keepalived目录下创建一个名为down的文件

[iyunv@node1 keepalived]# touch down

节点1:

212425299.jpg

节点2:此时地址已经转移到节点2了

212458382.jpg

Keepalived支持web服务高可用功能

一、这里就用不到real server,分别在两个节点安装web服务,并提供网页。

[iyunv@node1 ~]# service keepalived stop

[iyunv@node1 ~]# yum -y  install httpd

[iyunv@node1 ~]# echo "<h1>node1</h1>" > /var/www/html/index.html

[iyunv@node1 ~]# service httpd start

测试网页:

212512161.jpg

[iyunv@node2 ~]# service keepalived stop

[iyunv@node2 ~]# yum -y  install httpd

[iyunv@node2 ~]# echo "<h1>node2</h1>" > /var/www/html/index.html

[iyunv@node1 ~]# service httpd start

测试网页:

212524749.jpg

二、编辑节点1的keepalived的配置文件并提供脚本,编辑好后并复制给节点2一份。

[iyunv@node1 keepalived]# vim keepalived.conf

! Configuration File for keepalived

global_defs {

  notification_email {

        linuxedu@foxmail.com

        mageedu@126.com

  }

  notification_email_from kanotify@magedu.com

  smtp_connect_timeout 3

  smtp_server 127.0.0.1

  router_id LVS_DEVEL

}

vrrp_script chk_httpd {

   script "killall -0 httpd"

   interval 2

   weight -2

   fall 2

   rise 1

}

vrrp_script chk_schedown {

  script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

  interval 2

  weight -2

}

vrrp_instance VI_1 {

   interface eth0

   state MASTER

   priority 101

virtual_router_id 51  

   garp_master_delay 1

   authentication {

       auth_type PASS

       auth_pass password

   }

   track_interface {

      eth0

   }

   virtual_ipaddress {

       172.16.86.1/16 dev eth0 label eth0:0

   }

track_script {

       chk_httpd

       chk_schedown

   }

   notify_master "/etc/keepalived/notify.sh master"

   notify_backup "/etc/keepalived/notify.sh backup"

   notify_fault "/etc/keepalived/notify.sh fault"

}

脚本:在/etc/keepalived目录下提供一个名为notify.sh脚本

[iyunv@node1 keepalived]# vim notify.sh

#!/bin/bash

# Author: MageEdu <linuxedu@foxmail.com>

# description: An example of notify script

ifalias=${2:-eth0:0}

interface=$(echo $ifalias | awk -F: '{print $1}')

vip=$(ip addr show $interface | grep $ifalias | awk '{print $2}')

#contact='linuxedu@foxmail.com'

contact='root@localhost'

workspace=$(dirname $0)

notify() {

   subject="$ip change to $1"

   body="$ip change to $1 $(date '+%F %H:%M:%S')"

   echo $body | mail -s "$1 transition" $contact

}

case "$1" in

   master)

       notify master

       exit 0;;

   backup)

       notify backup

       /etc/rc.d/init.d/httpd restart

       exit 0;;

   fault)

       notify fault

       exit 0;;

   *)

       echo 'Usage: $(basename $0) {master|backup|fault}'

       exit 1;;

esac

[iyunv@node1 keepalived]# scp keepalived.conf notify.sh node2:/etc/keepalived/

在节点2修改复制过来的配置文件只需做如下改动。

212537678.jpg

[iyunv@node1 keepalived]# service keepalived restart

[iyunv@node2 keepalived]# service keepalived restart

212550259.jpg

登录网页:

212613353.jpg

手动切换主节点到另外一个节点上。

[iyunv@node1 keepalived]# touch down

212624483.jpg

刷新网页:

212636862.jpg

只要删除/etc/keepalived目录下的down文件主节点还是会切换到节点以1,到此一个结合脚本来提供web服务的高可用功能的服务就完成了



运维网声明 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-5966-1-1.html 上篇帖子: Lvs+keepalived 实现负载均衡、故障剔除(DR模式) 下篇帖子: keepalived实现LVS的高可用以及实现web服务的高可用(主从模型、双主模型) 服务

尚未签到

发表于 2013-5-17 21:09:01 | 显示全部楼层
不要在一棵树上吊死,在附近几棵树上多试试死几次~

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

尚未签到

发表于 2013-5-18 15:40:20 | 显示全部楼层
路过,支持一下啦

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

累计签到:1 天
连续签到:1 天
发表于 2013-5-19 06:06:50 | 显示全部楼层
生我之前谁是我,生我之后我是谁?

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

尚未签到

发表于 2013-5-19 07:34:42 | 显示全部楼层
看尽天下A片,心中自然无码~

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

尚未签到

发表于 2013-5-19 08:44:46 | 显示全部楼层
锻炼肌肉,防止挨揍!

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

尚未签到

发表于 2013-5-19 10:20:04 | 显示全部楼层
生活***好玩,因为生活老***玩我!

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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