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

[经验分享] keepalived+LVS

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-23 10:15:03 | 显示全部楼层 |阅读模式
本节我们来讲一讲keepalived,它是基于虚拟路由冗余协议vrrp (Virtual Router Redundancy Protocol)从而实现模拟路由器的高可用,通常Keepalived用于实现前端高可用,它是轻量级的高可用,且不需要共享存储,常用于两个节点的高可用,一个是主节点master,一个是从节点backup,但是对外边来说只有一个IP地址,通常这个IP地址一开始都是在master,当master宕机时,backup会将该IP抢走并提供服务。好了下面我们就来实现下这个过程。
实验拓扑图:
8733640_1411357972lgVj.png
本实验是实现keepalived+lvs的DR模型,这里介绍下DR模型的工作机制,当外部的请求送给director(即DR)时,DR将请求转发给内部的real server(即RS)进行响应,而响应后的结果并没有通过DR返回给用户,而是RS直接响应给互联网上的客户端,但是由于RS在内网当中,因此需要额外加个路由器给RS,并且RS必须将网关指向该路由器。
为了实验简便,本实验涉及的服务全部为yum安装,这里就不给出了。本实验是在已安装好的前提下配置的。
RS配置
RS1:
1
2
3
4
5
6
7
8
9
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig eth0 192.168.1.21/24 up
ifconfig lo:0 172.16.6.31 netmask 255.255.255.255 broadcast 172.16.6.31
route add -host 172.16.6.31  dev lo:0  配置为lo:0端口
ifconfig lo:1 172.16.6.32  netmask 255.255.255.255 broadcast 172.16.6.32
route add -host 172.16.6.32  dev lo:1




RS2:
1
2
3
4
5
6
7
8
9
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig eth0 192.168.1.22/24 up              与RS1相比只有IP不同
ifconfig lo:0 172.16.6.31 netmask 255.255.255.255 broadcast 172.16.6.31
route add -host 172.16.6.31  dev lo:0  
ifconfig lo:1 172.16.6.32  netmask 255.255.255.255 broadcast 172.16.6.32
route add -host 172.16.6.32  dev lo:1




配置keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs
{
notification_email
{
root@localhost
}
notification_email_from kanotify@magedu.com
smtp_connect_timeout 3
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_script chk_schedown
{
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
#创建down文件权重减2
interval 2
weight -2
}
vrrp_instance VI_1              在第一个节点扮演的是主节点的角色
{
interface eth0         
state MASTER                    #此节点为主节点         
priority 100                    优先级
virtual_router_id 1           
garp_master_delay 1


authentication                  认证部分
{         
auth_type PASS        
auth_pass password               
}
track_interface
{
eth0                          
}
virtual_ipaddress
{
172.16.6.31/16               设定ipvs 规则的虚拟ip                     
   }
track_script
{
chk_schedown
}
}
virtual_server 172.16.6.31 80  #配置一个VIP 工作在TCP的80端口上
{                 

delay_loop 6
lb_algo rr     #负载均衡的调度算法
lb_kind DR     #工作在DR模型上
#persistence_timeout 50            #是否启用IPVS持久连接,这项要注销.连接50S才会切换
protocol TCP                     #采用的是TCP协议
# sorry_server 192.168.1.2 1358 #错误提示页面.要在这台服务器上开启http服务

real_server 192.168.1.21 80          #后面RIP地址
{
weight 1 #权重
HTTP_GET
{
url
{
path /
status_code 200 #取得主页面的状态,状态码为200就意味着请求成功;也可写入md5码,但要制定静态码
}
connect_timeout 3 #每次测试3秒
nb_get_retry 3 #测试次数
delay_before_retry 3 #测试失败在测试3次
}
}
real_server 192.168.1.22 80
{
weight 1
HTTP_GET
{
url
{
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vrrp_instance VI_2               在第二个模型中扮演的备节点的角色
{
interface eth0
state BACKUP          #此节点为备节点
priority 99            
virtual_router_id 2
garp_master_delay 1
authentication {      
auth_type PASS
auth_pass 12345678
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.6.32/16                 设定ipvs 规则的虚拟
}
track_script {
chk_schedown
}
}
virtual_server 172.16.6.32 80  #配置一个VIP 工作在TCP的80端口上
{                 

delay_loop 6
#lb_algo rr      
lb_kind DR      
persistence_timeout 50      用于测试这边启用持久连接功能
protocol TCP  
# sorry_server 192.168.1.2 1358     
real_server 192.168.1.21 80      
{
weight 1
HTTP_GET
{
url
{         
path /   
status_code 200
}
connect_timeout 3      
nb_get_retry 3      
delay_before_retry 3                        
}
}
real_server 192.168.1.22 80
{
weight 1
HTTP_GET
{
url
{
path /
status_code 200     
}
connect_timeout 3nb_get_retry 3delay_before_retry 3   
}
}
}




配置第二个节点keepalived
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs
{
notification_email
{
root@localhost
}
notification_email_from kanotify@magedu.com
smtp_connect_timeout 3
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_script chk_schedown
{
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
#创建down文件权重减2
interval 2
weight -2
}
vrrp_instance VI_1              在第一个节点扮演的是从节点的角色
{
interface eth0         
state BACKUP                    #此节点为从节点         
priority 99                      优先级  
virtual_router_id 1           
garp_master_delay 1


authentication                  认证部分
{         
auth_type PASS        
auth_pass password               
}
track_interface
{
eth0                          
}
virtual_ipaddress
{
172.16.6.31/16                设定ipvs 规则的虚拟ip                     
   }
track_script
{
chk_schedown
}
}
virtual_server 172.16.6.31 80  #配置一个VIP 工作在TCP的80端口上
{                 

delay_loop 6
lb_algo rr     #负载均衡的调度算法
lb_kind DR     #工作在DR模型上
#persistence_timeout 50            #是否启用IPVS持久连接,这项要注销.连接50S才会切换
protocol TCP                     #采用的是TCP协议
# sorry_server 192.168.1.2 1358 #错误提示页面.要在这台服务器上开启http服务

real_server 192.168.1.21 80          #后面RIP地址
{
weight 1 #权重
HTTP_GET
{
url
{
path /
status_code 200 #取得主页面的状态,状态码为200就意味着请求成功;也可写入md5码,但要制定静态码
}
connect_timeout 3 #每次测试3秒
nb_get_retry 3 #测试次数
delay_before_retry 3 #测试失败在测试3次
}
}
real_server 192.168.1.22 80
{
weight 1
HTTP_GET
{
url
{
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vrrp_instance VI_2               在第二个模型中扮演的主节点的角色
{
interface eth0
state MASTER           #此节点为主节点
priority 100             注意修改节点状态的时候优先级也要改
virtual_router_id 2
garp_master_delay 1
authentication {      
auth_type PASS
auth_pass 12345678
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.6.32/16                 设定ipvs 规则的虚拟
}
track_script {
chk_schedown
}
}
virtual_server 172.16.6.32 80  #配置一个VIP 工作在TCP的80端口上
{                 

delay_loop 6
#lb_algo rr      
lb_kind DR      
persistence_timeout 50      用于测试这边启用持久连接功能
protocol TCP  
# sorry_server 192.168.1.2 1358     
real_server 192.168.1.21 80      
{
weight 1
HTTP_GET
{
url
{         
path /   
status_code 200
}
connect_timeout 3      
nb_get_retry 3      
delay_before_retry 3                        
}
}
real_server 192.168.1.22 80
{
weight 1
HTTP_GET
{
url
{
path /
status_code 200     
}
connect_timeout 3nb_get_retry 3delay_before_retry 3   
}
}
}

OK,全部配置完成之后就可以了,本节就到这里,谢谢!


运维网声明 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-25199-1-1.html 上篇帖子: keepalived 实现LVS DR 模型的高可用 下篇帖子: Keepalived 配置使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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