CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

一、系统环境

实验拓扑:

实验环境:

Vmware 9.01 + Windows 8 x64 企业版+8G内存

虚拟机步骤:

1、安装一台CentOS 6.3 x64主机,内存为1GB,网络为NAT模式,注意检查Vmware中EDIT菜单下Virtual Network Editor中VMnet8

2、 加电,安装系统。基础知识了,不再多说,注意:选择英文而不要选择中文,选择是Basic Server模式,系统名称:LVS-MASTER

3、安装系统后,用root用户登录进去,执行 ifconfig查看下网络情况,发现:

没有看到其物理网卡,我们需要想办法解决它。

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

按下面的样子进行修改之,设置随系统启动,IP为静态地址而不是DHCP,IP地址、掩码、网关、DNS等信息

测试一下PING,看看是不是能PING通BAIDU,对了,为什么上面GATEWAY是192.168.9.2,是因为在虚拟机中VMnet8中指定的IP。

开始克隆多台主机,组成测试环境:

关闭掉主机 init 0,然后在虚拟中右键LVS-MASTER,MANAGER-CLONE,注意选择Create a full clone,机器名输入LVS-BACKUP,大约三十秒时间可以克隆好。

给LVS-BACKUP主机加电,系统正常启动

我们需要做两件事,

一是主机名修改为LVS-BACKUP,这个容易

vi /etc/sysconfig/network

修改 LVS-MASTER为LVS-BACKUP就可以了。然后 reboot一下系统就发现系统名称修改完成了。

二是修改系统IP

1、删除 /etc/udev/rules.d/70-persistent-net.rules 后重启机器。70-persistent-net.rules这个文件确定了网卡与MAC地址的绑定,导入已经存在的虚拟机后,但网卡的MAC地址发生了变化,所以导致系统认为网络设备不存在。

2、经过这样的处理后eth0还不能正常启动,需要将 /etc/udev/rules.d/70-persistent-net.rules 文件最后的修改"eth1"为"eth0",

然后将/etc/sysconfig/network-scripts/ifcfg-eth0中的MAC直接删除。

重启机器,eth0可以正常启动了。

确定执行 ifconfig命令后能看到 eth0设备,然后继续下面的动作:

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

将系统IP修改为192.168.9.202

执行一下 service network restart,现在测试一下ping www.baidu.com,看看是不是能PING通。

重复上面的步骤,将WEB1和WEB2两台主机也克隆完成,IP分别是192.168.9.203,192.168.9.204

网络配置通过了,下面可以使用Securecrt进行网络连接设置了。

=====================================================================================

系统平台:CentOS 6.3

Kernel:2.6.32-279.el6.i686

查看内核方法:cat /proc/version,为啥重点说明下这里呢?因为下面有个步骤是创建软连接到这个内核的目录上,所以重点说明下为啥下面指定的是这个目录。

LVS版本:ipvsadm-1.26

keepalived版本:keepalived-1.2.4

三、安装

0、安装LVS前系统需要安装

yum -y install  openssl-devel lftplibnl* popt* libnl* libpopt* gcc*

1、在两台Director Server上分别配置LVS+Keepalived

------------- -------------LVS install --------------------------

cd /usr/src

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz

如果已经创建了软连接,那么删除之: rm /usr/src/linux 注意不能带最后的/,否则无法删除。

ln -s /usr/src/kernels/2.6.32-279.el6.x86_64//usr/src/linux/

tar zxvf ipvsadm-1.26.tar.gz

cd ipvsadm-1.26

make && make install

Keepalived install -------------

cd ..

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

tar zxvf keepalived-1.2.4.tar.gz

cd keepalived-1.2.4

./configure

make && make install

######### 将keepalived做成启动服务,方便管理##########

\cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

\cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived/

\cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

\cp /usr/local/sbin/keepalived /usr/sbin/

service keepalived start

2、开启路由转发

vi /etc/sysctl.conf

修改下面的值,从0修改到1:

net.ipv4.ip_forward = 1

刷新系统变量,使系统文件变更马上生效

sysctl -p

3、配置Keepalived

vi /etc/keepalived/keepalived.conf

输入

:.,$d 

删除所有内容,在LVS-MASTER中输入以下内容:

! Configuration File for keepalived
global_defs {
   notification_email {
      [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.163.com
  # smtp_connect_timeout 30
   router_id LVS_DEVEL
}

# VIP1
vrrp_instance VI_1 {
    state MASTER             #备份服务器上将MASTER改为BACKUP
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    priority 100    # 备份服务上将100改为90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {     192.168.9.200
        #(如果有多个VIP,继续换行填写.)
    }
}

virtual_server 192.168.9.200 80 {
    delay_loop 6                  #(每隔10秒查询realserver状态)
    lb_algo wlc                  #(lvs 算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
    protocol TCP                #(用TCP协议检查realserver状态)

    real_server 192.168.9.203 80 {
        weight 100               #(权重)
        TCP_CHECK {
        connect_timeout 10       #(10秒无响应超时)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }

    real_server 192.168.9.204 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

在LVS-BACKUP中输入以下内容:

! Configuration File for keepalived
global_defs {
   notification_email {
      [email protected]
   }

   notification_email_from [email protected]
   smtp_server smtp.163.com
  # smtp_connect_timeout 30
   router_id LVS_DEVEL
}

# VIP1
vrrp_instance VI_1 {
    state BACKUP             #备份服务器上将MASTER改为BACKUP
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 51
    priority 90    # 备份服务上将100改为90
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {     192.168.9.200
        #(如果有多个VIP,继续换行填写.)
    }
}

virtual_server 192.168.9.200 80 {
    delay_loop 6                  #(每隔10秒查询realserver状态)
    lb_algo wlc                  #(lvs 算法)
    lb_kind DR                  #(Direct Route)
    persistence_timeout 60        #(同一IP的连接60秒内被分配到同一台realserver)
    protocol TCP                #(用TCP协议检查realserver状态)

    real_server 192.168.9.203 80 {
        weight 100               #(权重)
        TCP_CHECK {
        connect_timeout 10       #(10秒无响应超时)
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
    }

    real_server 192.168.9.204 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }

     }

}

配置keepalived自启动

chkconfig  --level 0123456 keepalived on

查看自启动状态

chkconfig --list keepalived

===下面的脚本是在WEB服务器上执行的================================================================================================

在WEB1和WEB2机器上编辑如下文件

vi /root/lvs_real.sh

#!/bin/bash

# description: Config realserver

#Written by : http://kerry.blog.51cto.com

SNS_VIP=192.168.9.200

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

case "$1" in

start)

       /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

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

       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

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

stop)

       /sbin/ifconfig lo:0 down

       /sbin/route del $SNS_VIP >/dev/null 2>&1

       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

       echo "RealServer Stoped"

       ;;

*)

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

       exit 1

esac

exit 0

赋给执行权限

chmod 755 /etc/rc.d/init.d/functions    别人的配置文档中没这个步骤,我不知道为什么总是说执行到这句时没有权限,所以我添加了执行权限

chmod 755 /root/lvs_real.sh

/root/lvs_real.sh start

添加自动启动

echo “/root/lvs_real.sh start” >> /etc/rc.local

================================================================================================

关闭iptables,因为CentOS 6.3 X64默认是开启IPTABLES的,这样我们不方便测试这个实验,所以暂时采用关闭IPTABLES的办法,以后需要时再测试如何使用IPTABLES的规则。

配置iptables关闭自启动

chkconfig  --level 0123456 iptables off

查看自启动状态

chkconfig --list iptables

将四台机器的IPTABLES全部关闭,防止出现其它问题。

光是这样还是不行的,因为不重启不能停止掉iptables,所以在四台上执行如下命令:

service iptables stop

================================================================================================

4、在2台WEBSERVER中分别配置HTTP,这里使用了一个简单的WEB SERVER:HTTPD这个软件包,当然也可以使用APACHE或者TOMCAT。

在192.168.9.203和192.168.9.204上执行如下命令:

yum -y install httpd

cd /var/www/html/

vi index.html

-----------------------------

192.168.9.203上内容:

<h1>WEB1/192.168.9.203</h1>

192.168.9.204上内容:

<h1>WEB1/192.168.9.204</h1>

-----------------------------

/etc/init.d/httpd start

结果发现出错无法启动:

我们修改一下:

vi /etc/httpd/conf/httpd.conf

ServerName www.example.com:80

再次启动:

/etc/init.d/httpd restart

设定开机启动httpd

chkconfig  --level 0123456 httpd on

另一台机器配置一样,过程略。

在两台LVS服务器上都要启动keepalvied,这点十分重要,否则不能正常查看到下面的界面:

service keepalived restart

四、测试

####高可用性测试####

模拟故障,将CentOS-LVS_MASTER上的keepalived服务停掉,然后观察CentOS-LVS_BACKUP上的日志,信息如下

从日志中可知,主机出现故障后,备机立刻检测到,此时备机变为MASTER角色,并且接管了主机的虚拟IP资源,最后将虚拟IP绑定在etho设备上。

将CentOS-LVS_MASTER 上的keepalived服务开启后,CentOS-LVS_BACKUP的日志状态。

从日志可知,备机在检测到主机重新恢复正常后,释放了虚拟IP资源重新成为BACKUP角色

####故障切换测试####

故障切换是测试当某个节点出现故障后,Keepalived监制模块是否能及时发现然后屏蔽故障节点,同时将服务器转移到正常节点来执行。

将WEB2节点服务停掉,假设这个节点出现故障,然后主、备机日志信息如下

从以上可以看出,Keepalived监控模块检测到192.168.9.204这台主机出现故障后,将WEB2从集群系统中剔除掉了。 此时访问http://192.168.9.200只能看到WEB1了)

重新启动WEB2节点的服务,日志信息如下:

Keepalived监控模块检测到192.168.9.204这台主机恢复正常后,又将此节点加入集群系统中,再次访问就可以访问到WEB2页面了)

==============================================================================================

参考文档:

http://blog.csdn.net/winsonyuan/article/details/7069884

转自:http://www.cnblogs.com/littlehb/archive/2012/12/13/2816652.html

CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡,布布扣,bubuko.com

时间: 2024-11-04 11:48:13

CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡的相关文章

CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡【转】

CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalived版本:keepalived-1.2.4 三.安装 0.安装LVS前系统需要安装popt-static,kernel-devel,make,gcc,openssl-devel,lftp,libnl*,popt*

RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. 目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). K

CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡

一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalived版本:keepalived-1.2.4 三.安装 0.安装LVS前系统需要安装popt-static,kernel-devel,make,gcc,openssl-devel,lftp,libnl*,popt* 1.在两台Director Server上分别配置LVS+Keepalived LVS

CentOS7下LVS+Keepalived实现高性能高可用负载均衡

一.规划  对外VIP:10.10.10.10    对内VIP:192.168.10.10 LVS_MASTER:10.10.10.28(eth0)            192.168.10.128(eth1) LVS_BACKUP:10.10.10.29(eth0)            192.168.10.129(eth1)       WEB1:192.168.10.130       WEB2:192.168.10.131 二.释义 LVS是Linux Virtual Server

LVS+Keepalived搭建MyCAT高可用负载均衡集群

LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR),十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). Keepalvied Keepalived在这里主要用作RealServer的健康状态检查以及Mast

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

配置环境说明:   KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxykeepalived 2台 192.168.1.10192.168.1.20 Haserver01Haserver02 192.168.30192.168.40 内存6G  系统盘20G cpu 4核 Weblogic 4台 192.168.1.100192.168.1.150 192.168.1.200 192.168.1.250 Clusters01C

LVS+KeepAlived,RabbitMQ高可用负载均衡

最近团队准备对项目进行重构,其中用到了RabbitMQ,也考虑了几个方案,下边着重介绍在项目中即将采用的方案.关于RabbitMQ就不在这里详细说明,具体查看 RabbitMQ中文手册.直接看架构图: 如图所示: 前端采用keepalived+lvs实现高可用负载均衡, RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建两个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务.任务处理进程同时监控

LVS-DR+keepalived 搭建web高可用负载均衡

实验环境 redhat6.5 2.6.32-431.el6.x86_64 keepalived-1.2.16版本 ipvsadm-1.26-2.el6.x86_64 所有的虚拟机  都  关闭防火墙和selinux  配置好了本地yum源 搭建要求是对LVS-DR模式的原理熟悉,先配置好LVS-DR所需的环境.这里的环境是配置VIP DIP DIP 在同一个网段,并在realserver的lo接口上做好了arp抑制.具体见后面的脚本 当keepalived和LVS结合时,注意不需要在direct

Keepalived+Nginx实现高可用负载均衡集群

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64nginx-1.10.2-1.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64 二 原理及拓扑图 1.vrrp协议在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接.对于这样的情况,它们之间路由怎样选择?主机如何