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

[经验分享] LVS高可用之Keepalived

[复制链接]

尚未签到

发表于 2018-12-30 08:58:24 | 显示全部楼层 |阅读模式
LVS负载均衡高可用Keepalived

  一、架构图设计  
  

  软件环境:
          Redhat Linux 5.8系列32位操作系统
          
  二、keepalived介绍及工作方式
         1、 介绍keepalived之前我们首先先介绍一下VRRP(虚拟路由协议)
          VRRP:虚拟路由冗余协议
          能够提高网络的稳定性和可靠性,其由IETF标准RFC2338定义。
1.VRRP的工作原理
如图所示,VRRP协议将LAN网段上的两台或者多台路由可以作为一台“虚拟”路由使用,通过同一个虚拟IP地址和虚拟MAC地址而对外提供服务。如果其中一台出现故障,另一台就能接替它,继续完成路由功能。

VRRP协议组中包括一台主路由、备份路由和一台虚拟路由组成。VRRP协议中活跃路由称为主路由,其转发发送到虚拟路由的数据包。而其他VRRP组中非主路由的路由都处于备份状态。虚拟路由是向最终用户代表一台可以连续工作的路由。

VRRP根据优先级大小选择主路由,同一个VRRP组中优先级最大的路由成为主路由,状态为Master。组中其他路由都处于备份状态,并检测主路由的状态。主路由每隔一段时间会发送一个VRRP通告,通告其工作正常。如果VRRP组中的备份路由长时间没有收到主路由的通告,就将自己改为Master状态。VRRP组内可能有多台备份路由同时认为自己是主路由,这时每台主路由都会比较收到的VRRP通告中的优先级与本地的优先级的大小。如果本地优先级小于VRRP通告的优先级,则自身路由状态为备份状态,否则为Master状态不变。最终一个VRRP组中优先级最大的路由成为新的主路由。

VRRP协议共定义了三种状态:Master(主状态)、Backup(备份状态)、Initialize(初始状态)。
n初始状态:所有路由都从初始状态开始,即进程启动后进入此状态。
n备份状态:接收主路由发送的VRRP组播通告,由此判断主路由的状态;丢弃发送到虚拟路由的MAC地址和IP地址的数据包;不响应对虚拟IP地址的ARP请求。
n主状态:定期发送VRRP组播通告;响应对虚拟IP地址的ARP请求,并且发送免费ARP报文使网络内主机知道虚拟IP地址和虚拟MAC地址的对应关系;转发目的地址是虚拟MAC地址的IP数据包。
VRRP三种状态间的转换关系,如图所示。

VRRP协议提供了三种认证方式(无认证、简单字符认证和MD5认证)可以根据不同的网络环境使用不同的认证方式。
  
  2 keepalived理论原理
nkeepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vipvrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。
nkeepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web 服务器的状态。 Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
nLayer3Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器
n发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。
nLayer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
nLayer5Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
nvip即虚拟ip,是附在主机网卡上的,即对主机网卡进行虚拟,此IP仍然是占用了此网段的某个IP
  三、LVS介绍及工作方式
nLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR)八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)
四、服务配置



       1、服务器ip地址规划:
              VIP:172.16.39.100
              ipvs1:172.16.39.1
              ipvs2:172.16.39.2
              realserver1:172.16.39.3
  
              realserver2:172.16.39.4
              client:172.16.39.36
        2、分别配置两台realserver转发功能
               echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
             echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

               echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
             echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

         3、分别配置两台realserver的虚拟ip
               /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
             /sbin/route add -host $VIP dev lo:0

         4、配置lvs转发器ipvs
               安装ipvsadm
               yum install ipvsadm -y
          5、配置keepalived
                 安装keepalived
                       首先先去下载keepalived包
                       wgethttp://www.keepalived.org/software/keepalived-1.1.15.tar.gz
                     tar zxvf keepalived-1.1.15.tar.gz

                       cd keepalived-1.1.15
                    ./configure  && make && make install
               配置keepalived相关路径

                          cp /home/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
                        cp /home/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
                        cp /home/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
                        cp /home/keepalived/sbin/keepalived /sbin/
                配置keepalived主配置文件

                          vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
cowherds@sina.cn
}
notification_email_from cowherds@sina.cn
smtp_connect_timeout 3
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_script chk_httpd {
script "killall -0 httpd"
interval 1
weight 2
}
vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER  # BACKUP for slave routers
priority 101  # 100 for BACKUP
virtual_router_id 51
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.39.100/16 dev eth0 label eth0:0
}
track_script {
chk_haproxy
chk_mantaince_down
}
real_server 172.16.39.3 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.100.4 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}  配置BACKUP节点的keepalived.conf
          
global_defs {
notification_email {
cowherds@sina.cn
}
notification_email_from cowherds@sina.cn
smtp_connect_timeout 3
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_script chk_httpd {
script "killall -0 httpd"
interval 1
weight 2
}
vrrp_script chk_mantaince_down {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weight 2
}
vrrp_instance VI_1 {
interface eth0
state BACKUP  # BACKUP for slave routers
priority 100  # 100 for BACKUP
virtual_router_id 51
garp_master_delay 1
authentication {
auth_type PASS
auth_pass password
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.39.100/16 dev eth0 label eth0:0
}
track_script {
chk_haproxy
chk_mantaince_down
}
real_server 172.16.39.3 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.100.4 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}  然后就可以起送keepalived了
          启动的时候记得看日志哦
          




运维网声明 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-657431-1-1.html 上篇帖子: 第一次做LVS+keepalived记 下篇帖子: LAMP+LVS+KEEPALIVED(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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