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

[经验分享] 通过keepalived为ipvs和web实现高可用能力

[复制链接]

尚未签到

发表于 2018-12-30 09:43:45 | 显示全部楼层 |阅读模式
  

提到Keepalived必要先来说说VRRP

VRRPVirtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议。主要实现在路由与交换处提供冗余能力。而keepalived就是利用VRRP协议来实现高可用能力的。



H3C有一篇介绍VRRP的文档,写的很详细,想了解的可以看一下:

地址:

http://www.h3c.com.cn/products___technology/technology/dependability/other_technology/technology_recommend/200904/631528_30003_0.htm




Keepalived完全遵守VRRP协议。

Keepalived是采用模块化的设计,不同的模块实现不同的功能。结合VRRP协议,keepalived可以实现IP地址的转移和ipvs规则的转移。在Director遇到故障时我们可以通过将其地址和规则转移到一个闲置的Director上,也就是通过转移来实现Director高可用。

Web的高可用就是在我们的所有的realserver都不能正常工作时,也要能给用户反馈信息,告诉用户此网站并没有关闭,只是遇到故障处于修复当中。



下面我们看一下完整的配置过程:




配置两台realserver



首先同步时间,配置IP(这里不再给出步骤)

修改内核参数

# sysctl -w net.ipv4.conf.eth0.arp_announce=2

# sysctl -w net.ipv4.conf.all.arp_announce=2

# sysctl -w net.ipv4.conf.eth0.arp_ignore=1

# sysctl -w net.ipv4.conf.all.arp_ignore=1




realserver添加VIP地址,利用别名来完成

# ifconfig eth0:0 172.16.22.222 netmask 255.255.255.255 broadcast 172.16.22.222




添加一条路由,使来自172.16.22.222主机的请求通过eth0:0来响应

# route add -host 172.16.22.222 dev eth0:0




提供web服务:

# yum -y install httpd

(两台realserver步骤相同)



给两台realserver提供不同的页面,以便测试使用

Realserver1

# vim /var/www/html/index.html

node110




Realserver2

# vim /var/www/html/index.html

node120

(这里的页面与Director无关,只是为了简便)

启动服务:

# service httpd start




配置两台Director(一主一从)



同步时间,最好提供任务计划每几分钟同步一次()

配置主机名,并给两个Director配置互信功能:



Master Director

配置主机名:

# hostname node110.dilve.com




修改配置文件,使其主机名在重启主机后依然有效:

# vim /etc/sysconfig/network

    HOSTNAME=node110.dilve.com




使配置的主机名可以被主机使用IP地址解析到:

# vim /etc/hosts

# IP地址主机名

172.16.22.210node110.dilve.com node110

172.16.161.20node120.dilve.com node120




给其与node120配置互信功能:

# ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ''

# ssh-copy-id -i .ssh/id_rsa.pub root@node120.dilve.com




Slave Director

# hostname node120.dilve.com

# vim /etc/sysconfig/network

    HOSTNAME=node120.dilve.com



# vim /etc/hosts

# IP地址主机名

172.16.22.210node110.dilve.com node110

172.16.161.20node120.dilve.com node120



# ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ''

# ssh-copy-id -i .ssh/id_rsa.pub root@node110.dilve.com




Director提供keepalived服务:

Redhat 6.4之前的版本没有提供此项服务,需要编译安装,这里准备好了rpm软件包,直接在ftp上下载安装(内部网络)

# wget ftp://172.16.0.1/pub/Sources/keepalived/keepalived-1.2.7-5.el5.i386.rpm




安装keepalived的服务并解决依赖关系:

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




将下载的软件包复制到Slave Director上一份,然后切换到Slave Director的主机上为其执行安装命令(上一条命令)

[root@node110 ~]# scp keepalived-1.2.7-5.el5.i386.rpm node120:/root/




Director提供ipvs服务和:

[root@node110 ~]# yum -y install ipvsadm




Director提供httpd服务(实现web的高可用)

[root@node110 ~]# yum -y install httpd

并提供页面:

# vim /var/www/html/index.html

维护当中……

(不要忘了给Slave Director提供这两项服务)




修改keepalived的配置文件,使其适合我们使用(这里给出的是已修改的Master Director的配置文件)

[root@node110 ~]# cd /etc/keepalived

[root@node110 ~]# vim keepalived.conf


! Configuration File for keepalived


global_defs {

   notification_email {

        root@localhost

   }

   notification_email_from keepavlied@localhost

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}


vrrp_script chk_schedown {            #模式实现keepalived故障情况

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

  interval 1

  weight -5

  fall 2

  rise 1

}


vrrp_instance VI_1 {            #定义备份组

    state MASTER                #定义备份组为Master还是Slave

    interface eth0              #定义接口

    virtual_router_id 55        #其备份组为Master

    priority 101                #定义优先级Slave的优先级一定要小于Master的值

    advert_int 1

    authentication {            #认证方式

        auth_type PASS          #基于简单字符认证

        auth_pass keepalivedpass

    }

    virtual_ipaddress {          #定义VIP的地址

        172.16.22.222/16 dev eth0 label eth0:0

    }

}


virtual_server 172.16.22.222 80 {    #设置一个VIP

    delay_loop 6                     #服务轮询的时间间隔

    lb_algo rr                       #定义调度算法

    lb_kind DR                       #定义lvs集群的模型

    nat_mask 255.255.0.0

  #  persistence_timeout 50          #会话保持的时间(单位为秒)

    protocol TCP


sorry_server 127.0.0.1 80            #定义realserver服务器都不在线时给用户的提示内容


    real_server 172.16.22.111 80 {   #定义realserver服务器,RS1

        weight 1                     #定义给每台realserver的权重

        HTTP_GET {                   #通过HTTP_GET实现健康状况检查

            url {                    #要坚持的URL

              path /                 #具体路径

              status_code 200        #网页成功响应号为200

            }

            connect_timeout 2        #探测连接时的超市时长

            nb_get_retry 3           #探测次数

            delay_before_retry 1     #延迟时长

        }

    }

    real_server 172.16.22.112 80 {         #定义第二台realserverRS2

        weight 1

        HTTP_GET {

            url {

              path /

              status_code 200

            }

            connect_timeout 2

            nb_get_retry 3

            delay_before_retry 1

        }

    }

}


(此代码为实例的完整代码)




配置完成可以直接将此配置文件复制到node120上去,只需做稍微修改即可:

[root@node120 keepalived]# scp keepalived.conf node120:/etc/keepalived/

只需将对应部分改为如下内容:

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 55

    priority 100

    advert_int 1



做完这些就可以启动服务测试了(别忘了给两台都要启动)

# service keepalived start

# service httpd start

# service ipvsadm start




先来测试Web服务:

将两台RealserverWeb服务关闭,试试会不会显示我们提供的页面:



然后启动Realserver的服务,将主机模拟故障,看IPipvs规则是否转移到了Slave Director的上去。


  





运维网声明 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-657467-1-1.html 上篇帖子: LVS+keepalived(双主模型) 下篇帖子: keepalived实现nginx的高可用(双主模型)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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