博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keepalived双机热备原理及实例部署LVS+keepalived
阅读量:6589 次
发布时间:2019-06-24

本文共 3971 字,大约阅读时间需要 13 分钟。

keepalived简介

它是由C语言编写的路由热备软件,主要提供简单高效的负载均衡及高可用解决方案。keepalived通过VRRP协议实现高可用架构。lvs实现集群分发,keepalived实现调度器的主备方案,两者结合实现集群系统的高负载高可用。

VRRP协议是为了防止单点故障而设计的主从灾备协议,VRRP将两台或者多台路由设备虚拟成一个设备,对外提供一个虚拟路由ip地址,主路由设备处于启用状态时,不断的发送自身信息到备用设备,以表明主路由状态正常,当备用设备收不到主设备的信息时,备用设备会根据自身的优先级选举出新的主设备,并保证提供所有业务功能。



LVS+keepalived实例

服务器名称                                        网络接口                                        IP地址

router 外网接口eth1 122.126.152.183
内网接口eth0 192.168.1.1
lvs_1.test.com eth0 192.168.1.5
eth0 VIP 192.168.1.2
lvs_2.test.com eth0 192.168.1.6
eth0 VIP 192.168.1.2
web1.test.com eth0 192.168.1.7
lo:0 VIP 192.168.1.2
web1.test.com eth0 192.168.1.8
lo:0 VIP 192.168.1.2

首先安装配置web1和web2

设置web1网路参数及回环设备lo:0设置VIP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.7

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

ONBOOT=yes


vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

BOOTPROTO=static

IPADDR=192.168.1.2

NETMASK=255.255.255.255

GATEWAY=192.168.1.1

ONBOOT=yes


修改ARP参数

vim /etc/sysctl.conf

net.ipv4.conf.eth0.arp_ignore = 1

net.ipv4.conf.eth0.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2


执行 sysctl -p

service network restart

iptables -F

iptables -X

service iptables save

setenforce 0

sed -i s/enforcing/disabled/g /etc/sysconfig/selinux

yum install -y httpd

echo "web1  192.168.1.7" > /var/www/html/index.html

service httpd restart

chkconfig httpd on

web2机器上执行与web1相同步骤,注意修改部分参数


lvs_1调度器操作

首先设置网络

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.5

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

ONBOOT=yes

TYPE=Ethernet


service network restart

安装部署keepalived ipvsadm

yum install -y gcc openssl-devel popt-devel libnl libnl-devel kernel-devel ipvsadm

下载keepalived

wget http://www.keepalived.org/software/keepalived-1.3.0.tar.gz

tar zxf keepalived-1.3.0.tar.gz -C /usr/src/

cd /usr/src/keepalived-1.3.0/

./configure

make && make install

ln -s /usr/local/etc/keepalived/ /etc/

ln -s /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/


lvs_1为主设备,lvs_2为从设备,下面修改配置文件

vim /etc/keepalived/keepalived.conf

global_defs {

    notification_email {


        test@163.com

        }

        notification_email_from root@localhost

        smtp_server 127.0.0.1

        smtp_connect_timeout 30

        router_id lvs_1

    }


vrrp_instance LVS_HA {

    state MASTER                #lvs_2为BACKUP

    interface eth0

    virtual_router_id 60        #lvs_2的VRID必须与lvs-1相同

    priority 100                    #lvs-2为从设备,必须小于 lvs-1的参数

    advert_int 1

    authentication {


        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {


    192.168.1.2/24

    }

}


virtual_server 192.168.1.2 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    persistence_timeout 50

    protocol TCP

    real_server 192.168.1.7 80 {

        weight 1

    TCP_CHECK {


        connect_timeout 20

        connect_port 80

        nb_get_retry 3

    }

    }

 real_server 192.168.1.8 80 {

        weight 1

    TCP_CHECK {


        connect_timeout 20

        connect_port 80

        nb_get_retry 3

    }

    }

}


service keepalived start

chkconfig keepalived on

ip addr show        #查看虚拟ip

ipvsadm -Ln        #查看lvs规则

iptables -F

iptables -X

service iptables save

setenforce 0

sed -i s/enforcing/disabled/g /etc/sysconfig/selinux

lvs_2机器上执行相同操作,注意修改部分参数


下面配置router机器,这里用做软路由,生产环境直接用硬件路由设备

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

IPADDR=192.168.1.1

NETMASK=255.255.255.0

ONBOOT=yes

DNS=8.8.8.8

vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTPROTO=static

IPADDR=122.126.152.183

NETMASK=255.255.255.254

ONBOOT=yes

DNS=8.8.8.8


service network restart

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t nat -I PREROUTING -d 122.126.152.183 -p tcp -dport 80 -j DANT --to--destination 192.168.1.2:80

iptables -t nat -I PREROUTING -s 192.168.1.0/24 -p tcp -j SNAT --to-source 122.126.152.183

service iptables save

setenforce 0

sed -i s/enforcing/disabled/g /etc/sysconfig/selinux

vim /etc/sysctl.conf

net.ipv4..ip_forward = 1

sysctl -p


客户端测试

浏览器访问http://122.126.152.183 将得到不同real server的数据包

本文转自super李导51CTO博客,原文链接:http://blog.51cto.com/superleedo/1894886 ,如需转载请自行联系原作者

你可能感兴趣的文章
VS2008环境使用MFC操作读取excel文件
查看>>
AS3.0 正则表达式规则
查看>>
Windows Mobile下如果进行Native C++多线程的开发
查看>>
并发控制-简单总结
查看>>
查看JVM统计信息
查看>>
备份服务器端SQL SERVER数据库至本地目录
查看>>
【温故而知新-Javascript】使用Web存储
查看>>
CString、char*与string的区别
查看>>
Microsoft SQL Server 2005 提供了一些工具来监控数据库
查看>>
LinuxUSB驱动程序调试--009:编写应用程序---验证协议【转】
查看>>
关于Windows Phone数据库和Silverlight本地文件操作
查看>>
如何用cocos2d-x来开发简单的Uphone游戏:(五) 打包和发布
查看>>
IIS FTP匿名登录不成功
查看>>
C#鹰眼_带拖动
查看>>
HTML5和CSS3开发工具资源汇总
查看>>
认真分析mmap:是什么 为什么 怎么用【转】
查看>>
CrazePony飞行器--通信部分介绍【转】
查看>>
算法-符号表的实现(顺序查找和二分查找)
查看>>
Android Content Provider的启动过程源码分析
查看>>
POJ1274 The Perfect Stall【二部图最大匹配】
查看>>