centos6.4 下lvs负载均衡


linux virtual server(LVS) ------章文嵩开发
MFS---分布式文件系统

负载均衡方式:


1.NAT

2.TUN

3.DR


负载调度算法:

1.RR(round-robin scheduling) ---轮叫调度
平均对待每一台real server,而不管服务器上的实际负载均衡状况和连接状态。

2.WRR(Weighted Round-Robin Scheduling) ---加权轮叫调度
根据real server的不同处理能力来调度请求,可以对每台real server设置不同的调度权值

3.LC(Least-Connection Scheduling)---最小连接调度
动态地将网络请求调度到已建立的连接数最少的服务器上。如果集群系统的real server具有相近的性能,可以较好的均衡负载。

4.WLC(Weighted Least-Connection Scheduling)---加权最小连接调度
每个服务器节点的可以用相应的权值来表示其处理能力,而系统管理源可以动态的设置相应的权值,默认值为1.加权最小连接调度在分配新连接请求时尽可能使服务节点的已建立连接数和其权值成正比。


5.基于局部性的最少链接(Locality-Based Least Connections Scheduling)
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
7.目标地址散列调度(Destination Hashing Scheduling)
8.源地址散列调度(Source Hashing Scheduling)


1.下载软件
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
  wget http://www.keepalived.org/software/keepalived-1.2.9.tar.gz



2.编译ipvsadm

//安装依赖包
yum -y install wget libnl* popt* gcc.x86_64 gcc-c++.x86_64 gcc-objc++.x86_64 kernel-devel.x86_64 make popt-static.x86_64

//编译ipvsadm
[root@Cent64 softs]# tar xvf ipvsadm-1.26.tar.gz
[root@tech2 lvs]# cd ipvsadm-1.26
[root@tech2 ipvsadm-1.26]# make && make install

//确认lvs模块
[root@tech2 ipvsadm-1.26]# modprobe -l|grep ipvs
kernel/net/netfilter/ipvs/ip_vs.ko
kernel/net/netfilter/ipvs/ip_vs_rr.ko
kernel/net/netfilter/ipvs/ip_vs_wrr.ko
kernel/net/netfilter/ipvs/ip_vs_lc.ko
kernel/net/netfilter/ipvs/ip_vs_wlc.ko
kernel/net/netfilter/ipvs/ip_vs_lblc.ko
kernel/net/netfilter/ipvs/ip_vs_lblcr.ko
kernel/net/netfilter/ipvs/ip_vs_dh.ko
kernel/net/netfilter/ipvs/ip_vs_sh.ko
kernel/net/netfilter/ipvs/ip_vs_sed.ko
kernel/net/netfilter/ipvs/ip_vs_nq.ko
kernel/net/netfilter/ipvs/ip_vs_ftp.ko

3.编译keepalived
[root@tech2 lvs]# tar xvf keepalived-1.2.9.tar.gz
[root@tech2 keepalived-1.2.9]# ls

//基础软件包
  In order to compile Keepalived needs the following libraries :

  * OpenSSL, <www.openssl.org>
  * popt

[root@tech2 keepalived-1.2.9]# yum install -y net-snmp.x86_64 net-snmp-devel.x86_64

[root@tech2 keepalived-1.2.9]# ./configure --prefix=/usr/local/keepalived --enable-snmp --sysconfdir=/etc

Keepalived configuration
------------------------
Keepalived version       : 1.2.9
Compiler                 : gcc
Compiler flags           : -g -O2
Extra Lib                : -Wl,-z,relro -Wl,-z,now -L/usr/lib64 -lnetsnmpagent -lnetsnmphelpers -lnetsnmpmibs -lnetsnmp -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE -lssl -lcrypto -lcrypt  -lnl
Use IPVS Framework       : Yes
IPVS sync daemon support : Yes
IPVS use libnl           : Yes
Use VRRP Framework       : Yes
Use VRRP VMAC            : Yes
SNMP support             : Yes
SHA1 support             : No
Use Debug flags          : No

[root@tech2 keepalived-1.2.9]# make && make install

[root@tech2 sbin]# cp /usr/local/keepalived/sbin/keepalived  /sbin/
[root@tech2 bin]# cp /usr/local/keepalived/bin/genhash /bin/
//配值文件目录
[root@tech2 keepalived]# ls ---keepalived软件不对keepalived语法进行检查,在编辑前需要先备份
keepalived.conf  samples


有三部分组成:/etc/keepalived/keepalived.conf
global_defs
vrrp_instance
virtual_server


案例1:LVS的DR模式

1.网络架构

hostname:centos61
DIRECT SERVER:10.10.54.61   
vip:10.10.54.69
mysqlmaster:10.10.54.64
slave(real server):10.10.54.67(80 3306) vip:10.10.54.69
slave(real server):10.10.54.63(80 3306) vip:10.10.54.69

2.调度器(Director)配置


//在real server(10.10.54.67/63)上启动
[root@tech03 ~]# cat /etc/init.d/realserver
#!/bin/bash
#chkconfig: - 80 90
#description:start realserver
#script_name:realserver_config
#####################虚拟ip
VIP=10.10.54.63/67
source /etc/init.d/functions
case "$1" in
start)
echo "start LVS of realserver."
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 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
;;
stop)
/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
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
[root@CentOS63 ~]# chmod +x /etc/init.d/realserver
[root@CentOS63 ~]# chkconfig --add realserver
[root@Cent67 ~]# /etc/init.d/realserver start
###自动建立虚拟ip接口
[root@CentOS63 html]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@Cent67 ~]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

########arp抑制
arp_ignore:
0---为默认值,回应任何网络接口上对任何本地IP地址的ARP查询请求
1---只回答目标IP地址是来访问网路接口本地地址的ARP查询请求


arp_announce:对网路接口上,本地IP地址发出的ARP请求,作出相应级别的限制:确定不同程度的限制,宣布对来自本地源IP地址发出ARP请求的接口。
0---为默认值,在任意网络接口上的任何本地地址。
2---对查询目标使用最适当的本地地址。




3.配置direct server(10.10.54.61)
在direct server上编译ipvsadm,keepalived软件包

//配置文件
[root@centos61 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1  #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息
}

vrrp_instance VI_2 {   #vrrp实例
    state MASTER     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样
    priority 100          #用于主从模式,优先级主高于100,从低于100
    advert_int 1           #msater和backup检查的时间间隔
    authentication {        #认证用于主从模式,mater和backup配置一样
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虚拟ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #设置运行情况检查时间为6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重试的次数
            delay_before_retry 3   #重试的时间间隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived restart
######自动建立虚拟ip          
[root@centos61 ~]# ifconfig

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

4.测试10.10.54.60

telnet 10.10.54.69 80/3306
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.
5.在63/67上安装apache
yum install -y httpd.x86_64 httpd-devel.x86_64 httpd-tools.x86_64

vim /etc/httpd/conf/httpd.conf
ServerName localhost:80
 
vim /var/www/html/index.html
10.10.54.63/67-html

/etc/init.d/httpd start

6.查看连接数10.10.54.63/67的mysql/httpd都是启动的
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 10.10.54.63:80               Route   1      0          0         
  -> 10.10.54.67:80               Route   1      0          0     
TCP  10.10.54.69:3306 rr
  -> 10.10.54.67:3306             Route   1      0          0    
  -> 10.10.54.63:3306             Route   1      0          0  

在ubuntu下输入
http://10.10.54.69/刷新后能在10.10.54.63/67下跳转

案例2:LVS(MASTER-BACKUP-DR)
1.网络架构
hostname:centos61
DIRECT SERVER:10.10.54.61   
vip:10.10.54.69



hostname:centos64
DIRECT BACKUP:10.10.54.64
vip:10.10.54.69

mysqlmaster:10.10.54.64
slave(real server):10.10.54.67(80 3306) vip:10.10.54.69
slave(real server):10.10.54.63(80 3306) vip:10.10.54.69

2.在MASTER DIRECTOR SERVER上编译ipvsadm,keepalived

3.在BACKUP DIRECTOR SERVER上编译ipvsadm,keepalived

4.配置MASTER DIRECTOR SERVER并测试通过

//在real server(10.10.54.67/63)上启动
[root@tech03 ~]# cat /etc/init.d/realserver
#!/bin/bash
#chkconfig: - 80 90
#description:start realserver
#script_name:realserver_config
#####################虚拟ip
VIP=10.10.54.63/67
source /etc/init.d/functions
case "$1" in
start)
echo "start LVS of realserver."
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 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
;;
stop)
/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
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
[root@CentOS63 ~]# chmod +x /etc/init.d/realserver
[root@CentOS63 ~]# chkconfig --add realserver
[root@Cent67 ~]# /etc/init.d/realserver start
###自动建立虚拟ip接口
[root@CentOS63 html]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@Cent67 ~]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.54.69  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1

########arp抑制
arp_ignore:
0---为默认值,回应任何网络接口上对任何本地IP地址的ARP查询请求
1---只回答目标IP地址是来访问网路接口本地地址的ARP查询请求


arp_announce:对网路接口上,本地IP地址发出的ARP请求,作出相应级别的限制:确定不同程度的限制,宣布对来自本地源IP地址发出ARP请求的接口。
0---为默认值,在任意网络接口上的任何本地地址。
2---对查询目标使用最适当的本地地址。





#####10.10.54.61
[root@Cent64 keepalived-1.2.9]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1  #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息
}

vrrp_instance VI_2 {   #vrrp实例
    state MASTER     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样
    priority 100          #用于主从模式,优先级主高于100,从低于100
    advert_int 1           #msater和backup检查的时间间隔
    authentication {        #认证用于主从模式,mater和backup配置一样
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虚拟ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #设置运行情况检查时间为6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重试的次数
            delay_before_retry 3   #重试的时间间隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived restart



5.复制MASTER DIRECTOR SERVER配置文件到BACKUP DIRECTOR SERVER
10.10.54.64
#######################
修改SLAVE config:
   router_id LVS_SLAVE   ---change
   state BACKUP          ---change
    priority 80          ---change
########################
[root@Cent64 ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     yangry@shiwei.com
   }
   notification_email_from yangry@shiwei.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_SLAVE  #表示运行keepalived服务器的一个标识,发邮件时显示在邮件主题中的信息
}

vrrp_instance VI_2 {   #vrrp实例
    state BACKUP     #MASTER/BACKUP
    interface eth0
    virtual_router_id 51  #虚拟路由标识,是一个数字,同一个VRRP实例使用唯一的标识,master和backup要一样
    priority 80          #用于主从模式,优先级主高于100,从低于100
    advert_int 1           #msater和backup检查的时间间隔
    authentication {        #认证用于主从模式,mater和backup配置一样
        auth_type PASS          #PASS和AH
        auth_pass 1111
    }
    virtual_ipaddress {
###########虚拟ip       
 10.10.54.69/24 dev eth0 label eth0:1
    }
}

######real serve配置
virtual_server 10.10.54.69 80 {
    delay_loop 6          #设置运行情况检查时间为6s
    lb_algo rr
    lb_kind DR             ####DR模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 10.10.54.63 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3   #重试的次数
            delay_before_retry 3   #重试的时间间隔
            connect_port 80       
        }
    }
    real_server 10.10.54.67 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
#######mysql balance 一个virtual server 对应一个端口
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
}
}
real_server 10.10.54.67 3306 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3、
        connect_port 3306
}
}
}
 [root@centos61 ~]# /etc/init.d/keepalived start
[root@Cent64 keepalived-1.2.9]# ifconfig
没有虚拟ip接口当10.10.54.61即master的keepalived启动时
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0              Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

6.测试LVS高可用

##########停止MASTER

在BACKUP上面查看10.10.54.69(vip)是否漂移过来
非direct sever10.10.54.60上
  telnet 10.10.54.64  80

[root@centos61 ~]# /etc/init.d/keepalived stop
[root@Cent64 ~]# ifconfig

出现虚拟ip
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
[root@Cent64 ~]#  ip add list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:cd:5c:3b brd ff:ff:ff:ff:ff:ff
    inet 10.10.54.64/24 brd 10.10.54.255 scope global eth0
    inet 10.10.54.69/24 scope global secondary eth0:1
    inet6 fe80::a00:27ff:fecd:5c3b/64 scope link
       valid_lft forever preferred_lft forever

[root@Cent64 ~]# ipvsadm -ln

在ubuntu下输入
http://10.10.54.69/刷新后能在10.10.54.63/67下跳转
##########开启MASTER
在MASTER上查看54.69(vip)是否漂移过来
[root@centos61 ~]# /etc/init.d/keepalived start

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

[root@Cent61 ~]# ipvsadm -ln

在BACKUP上查看是否还存在54.69(vip)

在非direct sever上
telnet 10.10.54.69  80

在ubuntu下输入
http://10.10.54.69/刷新后能在10.10.54.63/67下跳转


案例3:LVS(MASTER---NAT)

1.网络架构
hostname:centos61
DIRECT SERVER:
10.10.54.61(eth0)
gatway:10.10.54.254
vip1:10.10.54.69

192.168.10.102(eth1)
vip2:192.168.10.200

hostname:centos63
//gateway:192.168.10.200
real server:192.168.10.10(80,3306-slave)           ----eth0

hostname:centos67
//gateway:192.168.10.200
real server:192.168.10.11(80,3306-slave)      ----eth0  

2.配置网卡eth1 (10.120.54.61)
[root@centos61 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.102
NETMASK=255.255.255.0

[root@centos61 ~]# /etc/init.d/network restart

3.在centos63/67
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.10.10/11
GATEWAY=192.168.10.200
4.开启内核转发
[root@centos61 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使设置生效
[root@tech2 softs]# sysctl -p


4.现在MASTER(10.10.54.61)上安装ipvsadm,keepalived


5.在MASTER上修改keepalived.conf文件

! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT    ##nat模式
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}

6.测试连接数centos61上 ,centos63/67的mysql/启动
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          1         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Route   1      0          0         
  -> 192.168.10.11:3306           Route   1      0          0      

5.在10.10.54.60测试

gyf@gyf :~$ telnet 10.10.54.69  80
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.

案例4--lvs的master-backup(NAT模式)
1.网络架构
hostname:centos61
DIRECT SERVER:
10.10.54.61(eth0)
vip1:10.10.54.69

192.168.10.102(eth1)
vip2:192.168.10.200

hostname:centos64
BACKUP DIRECTOR SERVER:
10.10.54.64(eth0)
vip1:10.10.54.69

192.168.10.103(eth1)
vip2:192.168.10.200



hostname:centos63
//gateway:192.168.10.200
real server:192.168.10.10(80,3306-slave)           ----eth0

hostname:centos67
//gateway:192.168.10.200
real server:192.168.10.11(80,3306-slave)      ----eth0  

2.配置网卡eth1 (10.120.54.61)
[root@centos61 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.102
NETMASK=255.255.255.0


[root@centos61 ~]# /etc/init.d/network restart

3.配置网卡eth1 (10.120.54.64)
[root@centos64 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

#HWADDR=08:00:27:03:97:4F

TYPE=Ethernet
#UUID=e7363c2b-030b-4a7c-a162-d2048b8c72e0

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.10.103
NETMASK=255.255.255.0

[root@centos61 ~]# /etc/init.d/network restart

4.在centos63/67
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.10.10/11
GATEWAY=192.168.10.200
4.开启内核转发
[root@centos61 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使设置生效
[root@tech2 softs]# sysctl -p


5.现在MASTER(10.10.54.61/64)上安装ipvsadm,keepalived


6.在MASTER10.10.54.61上修改keepalived.conf文件

! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_MASTER1
}

vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}
[root@Cent61 ~]# /etc/init.d/keepalived restart
7.在BACKUP10.10.54.64上修改配置文件
! Configuration File for keepalived

global_defs {
   notification_email {
    # acassen@firewall.loc
     #failover@firewall.loc
     guoyf@ssr.com
   }
   notification_email_from guoyf@ssr.com
   smtp_server mail.shiwei.com
   smtp_connect_timeout 30
   router_id LVS_SLAVE  ######标识改为SLAVE
}

vrrp_instance VI_2 {
    state BACKUP   ######BACKUP
    interface eth0
    virtual_router_id 51
    priority 80   #小于100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.54.69/24 dev eth0 label eth0:1
    }
virtual_ipaddress {
        192.168.10.200/24 dev eth1 label eth1:1
                                                             
  }
}
}

virtual_server 10.10.54.69 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 80 {
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.10.11 80 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }                   
}
virtual_server 10.10.54.69 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    #nat_mask 255.255.255.0
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.10.10 3306{
        weight 1

        TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }

    real_server 192.168.10.11 3306 {
        weight 1
    TCP_CHECK {

            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }                   
}

[root@Cent64 ~]# /etc/init.d/keepalived restart

8.测试连接数centos61上 ,centos63/67的mysql/启动
[root@centos61 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          1         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Route   1      0          0         
  -> 192.168.10.11:3306           Route   1      0          0      

5.测试LVS高可用
[root@centos61 ~]# ifconfig
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:C7:54:F1  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
eth1:1    Link encap:Ethernet  HWaddr 08:00:27:03:97:4F  
          inet addr:192.168.10.200  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

##########停止MASTER

在BACKUP上面查看10.10.54.69(vip)是否漂移过来
非direct sever10.10.54.60上
  telnet 10.10.54.64  80

[root@centos61 ~]# /etc/init.d/keepalived stop
在10.10.54.64上
[root@Cent64 ~]# ifconfig

出现虚拟ip
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:CD:5C:3B  
          inet addr:10.10.54.69  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


eth1:1    Link encap:Ethernet  HWaddr 08:00:27:A2:71:5A  
          inet addr:192.168.10.200  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1



[root@Cent64 ~]#  ip add list

[root@Cent64 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.54.69:80 rr
  -> 192.168.10.10:80             Masq    1      0          0         
  -> 192.168.10.11:80             Masq    1      0          0         
TCP  10.10.54.69:3306 rr
  -> 192.168.10.10:3306           Masq    1      0          0         
  -> 192.168.10.11:3306           Masq    1      0          0      
在ubuntu下输入
http://10.10.54.69/刷新后能在10.10.54.63/67下跳转
##########开启MASTER
在MASTER上查看54.69(vip)是否漂移过来
[root@centos61 ~]# /etc/init.d/keepalived start

[root@Cent61 ~]# ipvsadm -ln

在BACKUP上查看是否还存在54.69(vip)

在非direct sever上
telnet 10.10.54.69  80

测试10.10.54.60

gyf@gyf :~$ telnet 10.10.54.69  80
Trying 10.10.54.69...
Connected to 10.10.54.69.
Escape character is '^]'.

转载于:https://my.oschina.net/u/1458120/blog/208700

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值