keepalived实现LVS-DR模型的高可用-阿里云开发者社区

开发者社区> 开发与运维> 正文

keepalived实现LVS-DR模型的高可用

简介:

实验介绍:


系统Centos6.4


keepalived的主配置文件 /etc/keepalived/keepalived.conf


keepalived的服务脚本 /etc/rc.d/init.d/keepalived



172.16.4.1 cont.magedu.com cont (作为控制节点,控制no1no2


Master 172.16.4.7 no1.magedu.com no1


Backup 172.16.4.11 no2.magedu.com no2


Real server1 172.16.4.5 no3.magedu.com no3


Real server2 172.16.4.15 no4.magedu.com no4



Vip: 172.16.4.55


Cont节点


#ssh-keygen -t rsa -P ‘’


#ssh-copy-id -i .ssh/id_rsa.pub root@No1.magedu.com


#ssh-copy-id -i .ssh/id_rsa.pub root@No2.magedu.com



No1no2


#ssh-keygen -t rsa -P ‘’


#ssh-copy-id -i .ssh/id_rsa.pub root@cont.magedu.com



# ansible all -a 'date' #查看时间是否同步


# ansible all -m yum -a 'name=keepalived state=present'




一 、主从两个节点安装keepalived ipvsadm


这里可以根据自己需要使用源码编译安装,或者安装rpm格式包,这里我们使用系统自带的安装包


#yum -y install keepalived ipvsadm



二、编辑主配置文件


#vim /etc/keepalived/keepalived.conf



global_defs { 全局配置段


notification_email {


root@localhost 邮件接收方


}


notification_email_from keepadmin@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 虚拟路由id


priority 100 初始优先级


advert_int 1 初始化通告


authentication { 认证机制


auth_type PASS 明文认证


auth_pass 1111 认证密码


}


virtual_ipaddress { 定义虚拟ip地址


172.16.4.55 


}


}



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


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


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


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


nat_mask 255.255.0.0 #设置子网掩码


protocol TCP #设置转发协议的类型


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


weight 1 #指定权重


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


url {


path /


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


}


connect_timeout 3 #设置超时时间


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


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


}


}


real_server 172.16.4.15 80 {


weight 1


HTTP_GET {


url {


path /


status_code 200


}


connect_timeout 3


nb_get_retry 3


delay_before_retry 3


}


}


}





可以将配置文件发送给backup节点,然后修改下面的选项:


state BACKUP


priority 99


#man keepalived.conf 查看各个配置的相关信息说明


#tail -f /var/log/messages 查看日志信息



两个节点都要重启服务,我们可以在控制节点执行


#ansible all -m shell -a service keepalived restart



#ip addr show 查看定义的虚拟ip


222918348.png



将主节点停止服务,资源会自动转移到backup节点,当主节点重新上线后,资源会再转移到主节点上,可以查看日志信息判断当前资源所在的节点



三、两台Realserve上安装并启动httpd服务


1、这里我们就不演示了,参考http://qidian510.blog.51cto.com/7319882/1282663,我们安装系统自带的服务


#yum -y install httpd


#chkconfig httpd on


为了方便我们的测试,这里为它们提供不同的测试网页


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


<h1>web1.test.com</h1>


#service httpd start


2、为两台Realserver提供Sysv格式的脚本来自动修改内核参数与虚拟IP并运行脚本


# mkdir src


# cd src/


# vim realserver.sh


#!/bin/bash


#


# Script to start LVS DR real server.


# description: LVS DR real server


#


. /etc/rc.d/init.d/functions


VIP=172.16.455 #修改你的VIP


host=`/bin/hostname`


case "$1" in


start)


# Start LVS-DR real server on this machine.


/sbin/ifconfig lo down


/sbin/ifconfig lo up


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


/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up


/sbin/route add -host $VIP dev lo:0


;;


stop)


# Stop LVS-DR real server loopback device(s).


/sbin/ifconfig lo:0 down


echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore


echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce


echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore


echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce


;;


status)


# Status of LVS-DR real server.


islothere=`/sbin/ifconfig lo:0 | grep $VIP`


isrothere=`netstat -rn | grep "lo:0" | grep $VIP`


if [ ! "$islothere" -o ! "isrothere" ];then


# Either the route or the lo:0 device


# not found.


echo "LVS-DR real server Stopped."


else


echo "LVS-DR real server Running."


fi


;;


*)


# Invalid entry.


echo "$0: Usage: $0 {start|status|stop}"


exit 1


;;


esac


#chmod +x realserver.sh


# ./realserver.sh start


3、查看相关配置


# cat /proc/sys/net/ipv4/conf/lo/arp_ignore


1


# cat /proc/sys/net/ipv4/conf/lo/arp_announce


2


# cat /proc/sys/net/ipv4/conf/all/arp_ignore


1


# cat /proc/sys/net/ipv4/conf/all/arp_announce


2


四、测试验证


1、主节点查看规则


223000212.png



2、Master服务器损坏后,虚拟IP地址与LVS规则会配置到backup上





223040726.png

223040551.png




3、假如Master服务器修复好已重新上线,则虚拟IP地址与LVS规则会重新配置到Master服务器上而在Backup服务器上删除


223108532.png




4、在浏览器测试


访问172.16.4.55即可,当我们刷新网页时,会看到在两个real server之间进行切换,当节点不能服务时,我们访问网页仍然不受影响,这样验证了我们的高可用配置实现了。




本文转自 宋鹏超 51CTO博客,原文链接:http://blog.51cto.com/qidian510/1303233,如需转载请自行联系原作者

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章