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

[经验分享] keepalived+lvs实现lvs的高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-23 10:03:43 | 显示全部楼层 |阅读模式

keepalived+lvs实现lvs的高可用

keepalived的介绍:

keepalived是借用VRRP协议来实现高可用性的,VRRP协议是解决单点故障,使路由器和层三交换机实现冗余功能。

wKiom1QgCO2iQb0XAAaUjNv3LMc633.bmp

keepalived启动后会有三个进程

父进程:内存管理,子进程管理等等

子进程:VRRP子进程

子进程:healthchecker子进程

从图上可以看出,两个子进程都被系统WatchDog看管,两个子进程各自操作自己的事,healthchecker子进程负责检查各自服务器的健康程度,例如HTTPLVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态

为什么要用keepalived+lvs

lvs是一个在四层上实现后端realserver的负载均衡的集群,lvs遗留下两个问题,一个是lvs的单点故障; 第二个是lvs不能检测后端realserver的健康状态检查。

解决lvs的单点故障就用到了高可用集群:

①、可以是heartbeat+ldirectord这种重量级的;

②、可以是keepalived+lvs这种轻量级的解决方案。(本博客主要写keepalived+lvs轻量级的解决方案),

解决lvs不能检测后端realserver的健康状态也后很多种方法:

①、可以在lvs上写脚本ping后端realserver的ip地址,ping几次发现ip地址ping不通则在ipvs规则里面删除,当 后端服务器可以ping了,则把后端realserver添加到ipvs规则里面。

②、可以在lvs上写脚本请求后端realserver的测试几次网页文件,查看状态码是否为200,不是则在ipvs规则 里面清楚,当测试网页返回的状态吗是200之后,则把后端realserver添加到ipvs规则里面

③、以上两种方法都是依赖于脚本,keepalived的出现解决了不依赖于脚本,也可以对后端realserver的健康状态 检查,keepalived的配置文件里面可以自行生成ipvs的规则,并且自行检测后端realserver的状态,当后端realserver 不能提供服务了,keepalived会自行将其在ipvs规则里面删除,当后端realserver可以提供服务了,又自行的在ipvs 规则里面添加。

实验环境:

OSCentos 6.5

yum:

[centos]

name=sohu-centos

baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch

gpgcheck=1

enable=0

gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-6

[epel]

name=sohu-epel

baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/

enable=1

gpgcheck=0

实验拓扑图:

wKioL1QgCUTAapGrAAraRIHj118679.bmp

拓扑图的规划:


IP 地址
软件
Master
172.16.22.1(VIP: 172.16.22.100)
keepalived+ipvsadm
Backup
172.16.22.2(VIP: 172.16.22.100)
keepalived+ipvsadm
apache1
172.16.22.3(VIP: 172.16.22.100)
httpd
apache2
172.16.22.4(VIP: 172.16.22.100)
httpd

注:MasterBackup上面安装ipvsadm主要是为了查看ipvs的规则

一、安装配置操作

Master

1、安装(博主这里用rpm包安装,各位朋友可以用源码编译安装keepalived)

[iyunv@localhost ~]# yum -y installkeepalived ipvsadm

2、修改配置文件

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

[iyunv@localhost keepalived]# vimkeepalived.conf

! Configuration File for keepalived

global_defs {

  notification_email {

     root@localhost  #设置报警邮件地址,即收件人地址

   }

  notification_email_from admin@hyd  #设置邮件的发送地址

   smtp_server 127.0.0.1  #设置smtp serverip地址

  smtp_connect_timeout 30#设置连接smtp server的超时时间

   router_idLTT   #表示运行keepalived服务器的一个标识,名字可以随便取,名字会显示在发邮件时邮件的主题信息

}

vrrp_instance IN_1 {

    state MASTER  #指定keepalived的角色,此服务为master

    interface eth0  #指定监测网络的接口

    virtual_router_id22#虚拟路由的标识

    priority 100  #定义优先级,数字越大优先级越高,1-255之间

    advert_int 1  #设置同步检查的时间间隔,单位是秒

    authentication{ #设置验证类型

        auth_typePASS  #验证类型为PASS

        auth_passaaaa  #验证的密码

    }

   virtual_ipaddress {

        172.16.22.100   #设置虚拟IP

    }

}

virtual_server 172.16.22.10080 {  #定义虚拟服务器,需指定虚拟ip和端口

    delay_loop 6   #设置健康检查时间,单位为秒

    lb_algowrr     #设置负载调度算法,此处为加权轮叫算法

    lb_kind DR      #设置LVS实现负载均衡的模式

    nat_mask 255.255.0.0#设置子网掩码

    protocolTCP      #设置转发协议的类型

    real_server 172.16.22.180 { #定义realserver,需指定ip和端口

        weight 1    #指定权重

        HTTP_GET{  #设置检测后端realserver的方式为获取http协议报文

            url {

              path/

             status_code 200  #状态码为200则证明后端服务器是在线的

           }

            connect_timeout3  #设置超时时间

           nb_get_retry 3    #设置超时时候重试几次

           delay_before_retry 3#在重试的时候的时间间隔

        }

    }

    real_server 172.16.22.280 {

        weight 1

        HTTP_GET {

            url {

              path/

                status_code200

           }

           connect_timeout 3

           nb_get_retry 3

           delay_before_retry 3

        }

    }

}

[iyunv@localhost keepalived]# scpkeepalived.conf 172.16.22.2:/etc/keepalived/

  #把配置文件copybackup服务器上

3、开启服务

[iyunv@localhost keepalived]# servicekeepalived start

Startingkeepalived:                                       [  OK  ]

[iyunv@localhost keepalived]# chkconfig--add keepalived

[iyunv@localhost keepalived]# chkconfigkeepalived on

Backup

1、安装

[iyunv@hyd ~]# yum -y install keepalived ipvsadm

2、修改配置文件

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

[iyunv@hyd keepalived]# vim keepalived.conf   #此配置文件是从Master服务器上copy过来,只需小小改动

    state BACKUP #把这里原先的MASTER改成BACKUP

    priority 99  #把这里原先的100改成99

3、开启服务

[iyunv@hyd keepalived]# service keepalived start

Startingkeepalived:                                       [  OK  ]

[iyunv@hyd keepalived]# chkconfig --add keepalived

[iyunv@hyd keepalived]# chkconfig keepalived on

apache1

1、安装(博主这里用rpm包安装,各位朋友可以用源码编译安装)

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

2、建立测试网页文件

[iyunv@hyd1 ~]# cd /var/www/html/

[iyunv@hyd1 html]# cat index.html #建一个测试网页

this is apache1

3、开启服务

[iyunv@hyd1 html]# service httpd start

Startinghttpd:                 [  OK  ]

[iyunv@hyd1 html]# chkconfig --add httpd

[iyunv@hyd1 html]# chkconfig httpd on

4、修改内核参数和配置vip

[iyunv@hyd1 html]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

[iyunv@hyd1 html]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce

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

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

[iyunv@hyd1 html]# ifconfig lo:1 172.16.22.100 broadcast172.16.22.100 netmask 255.255.255.255 up

[iyunv@hyd1 html]# route add -host 172.16.22.100 dev lo:1

apache2

1、安装(博主这里用rpm包安装,各位朋友可以用源码编译安装)

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

2、建立测试网页文件

[iyunv@hyd2 ~]# cd /var/www/html/

[iyunv@hyd2 html]# cat index.html #建一个测试网页

this is apache2

3、开启服务

[iyunv@hyd2 html]# service httpd start

Startinghttpd:                 [  OK  ]

[iyunv@hyd2 html]# chkconfig --add httpd

[iyunv@hyd2 html]# chkconfig httpd on

4、修改内核参数和配置vip

[iyunv@hyd2 html]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore

[iyunv@hyd2 html]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

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

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

[iyunv@hyd2 html]# ifconfig lo:1 172.16.22.100 broadcast172.16.22.100 netmask 255.255.255.255 up

[iyunv@hyd2 html]# route add -host 172.16.22.100 dev lo:1

此致所有安装已经完成。

二、相关的测试:

查看相关的vip和ipvs规则

wKiom1QgCWygRwFgAAhbjDjt2yQ618.bmp

测试后端realserver是否可以访问:

apache1可以访问

wKioL1QgCa3RUwmoAATKZE1B1vw476.bmp

apache2可以访问

wKiom1QgCazh_9N4AAMBWKFMadM009.bmp

而且是根据wrr算法,平均负载到realserver

停掉Masterkeepalived服务,vipipvs规则切换到Backup服务器上

wKioL1QgCfDhI53nAAdUKCqBryk325.bmp

停掉apache1的服务,看ipvs的规则是否清除,显示已经清楚规则

[iyunv@hyd1 html]# service httpd stop

Stoppinghttpd:                                            [  OK  ]

[iyunv@hyd ~]# ipvsadm -L -n

IPVirtualServer version 1.2.1 (size=4096)

ProtLocalAddress:PortSchedulerFlags

  -> RemoteAddress:Port           ForwardWeightActiveConnInActConn

TCP  172.16.22.100:80 wrr

  -> 172.16.22.4:80               Route  1      0         0

开启apache1的服务,ipvs自动将其又添加上

[iyunv@hyd1 html]# service httpd start

Starting httpd:                 [  OK  ]

[iyunv@hyd ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn

TCP  172.16.22.100:80 wrr

  -> 172.16.22.3:80               Route   1     0          0      

  -> 172.16.22.4:80               Route   1     0          0

此致,keepalived实现lvs的高可用已经完成,可以自动的故障转移



运维网声明 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-25189-1-1.html 上篇帖子: Linux 高可用(HA)集群之keepalive 下篇帖子: keeplived简单配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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