LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

  LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。
使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

  使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示,在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

  接下来开始部署配置LVS主从:

  免责声明:小伙伴在上生产环境前先测试有没有问题哈!!!

  

本次试验共计使用4台虚拟机,都是centos6.3.

192.168.146.164

192.168.146.160

192.168.146.162

192.168.146.163

具体实验环境配置如下:

192.168.146.101  LVS_VIP

192.168.146.164  LVS_MASTER

192.168.146.160  LVS_SALVE

192.168.146.162  WEB1

192.168.146.163  WEB2

192.168.146.164  LVS_MASTER:

安装IPVSADM:

[root@localhost ~]# yum -y install ipvsadm

为了测试方便,暂时关闭防火墙:

[root@localhost ~]# service iptables stop

安装KeepAlived:

[root@localhost ~]# cd /usr/src

[root@localhost src]# yum -y install openssl-devel

root@localhost src]# wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

[root@localhost src]# wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm

[root@localhost src]# yum -y install popt-static-1.13-7.el6.x86_64.rpm

[root@localhost src]# yum -y install kernel-devel make gcc openssl-devel libnl* popt*

[root@localhost src]# ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux

[root@localhost src]# tar zxvf keepalived-1.2.7.tar.gz

[root@localhost src]# cd keepalived-1.2.7

[root@localhost keepalived-1.2.7]# ./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/

[root@localhost keepalived-1.2.7]# make && make install

[root@localhost keepalived-1.2.7]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

[root@localhost keepalived-1.2.7]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

[root@localhost keepalived-1.2.7]# mkdir /etc/keepalived

[root@localhost keepalived-1.2.7]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

[root@localhost keepalived-1.2.7]# cp /usr/local/sbin/keepalived /usr/sbin/

KeepAlived安装完毕,然后进行配置。

打开IP Forward 功能(LVS现有三种负载均衡规则都需要打开此功能,如果不打开此功能,下面的配置配得再好都无济于事。)

打开后修改里面“net.ipv4.ip_forward = 1”

[root@localhost keepalived-1.2.7]# cat /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux

#

# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and

# sysctl.conf(5) for more details.

# Controls IP packet forwarding

net.ipv4.ip_forward = 1

执行如下命令使设置立即生效:

[root@localhost keepalived-1.2.7]# sysctl -p

net.ipv4.ip_forward = 1

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key

error: "net.bridge.bridge-nf-call-iptables" is an unknown key

error: "net.bridge.bridge-nf-call-arptables" is an unknown key

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

配置keepalived:

配置文件在这个位置: /etc/keepalived/keepalived.conf

[root@localhost keepalived-1.2.7]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

test@sina.com

}

notification_email_from admin@test.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth1

virtual_router_id 60

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.146.101

}

}

virtual_server 192.168.146.101 8080 {

delay_loop 6

lb_algo rr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 50

protocol TCP

real_server 192.168.146.162 8080 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 192.168.146.163 8080 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

至此,keepalived配置完成。

把keepalived加入开机自启动,并开启keepalived服务:

[root@localhost keepalived-1.2.7]# chkconfig keepalived on

[root@localhost keepalived-1.2.7]# service keepalived start

Starting keepalived:                                       [  OK  ]

查看keepalived进程:

[root@localhost keepalived-1.2.7]# ps aux | grep keepalived

root      1117  0.0  0.0  42172  1000 ?        Ss   14:37   0:00 keepalived -D

root      1119  0.0  0.2  44400  2296 ?        S    14:37   0:00 keepalived -D

root      1120  0.0  0.1  44276  1664 ?        S    14:37   0:00 keepalived -D

root      1165  0.0  0.0 103268   884 pts/5    S+   14:48   0:00 grep keepalived

查看虚拟IP是否加上:

[root@localhost keepalived-1.2.7]# ip a

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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:b2:88:f7 brd ff:ff:ff:ff:ff:ff

inet 192.168.146.164/24 brd 192.168.146.255 scope global eth1

inet 192.168.146.101/32 scope global eth1

inet6 fe80::20c:29ff:feb2:88f7/64 scope link

valid_lft forever preferred_lft forever

红色部分显示已经自动加上虚拟IP了。

至此,LVS_MASTER服务器已经配置好并启动了。

接下来开始配置部署LVS从服务器:

192.168.146.160  LVS_SALVE:

具体过程同192.168.146.164  LVS_MASTER!!

接下里配置部署两台web服务器:

配置部署192.168.146.162 web1:

配置虚拟IP启动脚本:

[root@localhost ~]# cat /etc/init.d/realserver.sh

SNS_VIP=192.168.146.101

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

case "$1" in

start)

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)

ifconfig lo:0 down

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

配置部署tomcat:

[root@localhost ~]# yum -y install tomcat6 tomcat6-webapps tomcat6-admin-webapps

[root@localhost ~]# chkconfig tomcat6 on

[root@localhost ~]# service tomcat6 start

Starting tomcat6:                                          [  OK  ]

为了测试方便暂时关闭防火墙:

[root@localhost ~]# service iptables stop

打开浏览器测试:http://192.168.146.142:8080

会看到TOMCAT的熟悉页面了。

为了测试负载均衡,我们将这个页面改下,以更好的标识这个网页是本服务器的

Tomcat6安装目录位于/usr/share/tomcat6,所以我们要编辑tomcat下的webapps/ROOT/index.html这个文件。

[root@localhost ~]# cd /usr/share/tomcat6/webapps/ROOT/

[root@localhost ROOT]# cat /dev/null > index.html

[root@localhost ROOT]# cat index.html

web1 192.168.146.162

启动虚拟IP的脚本:

[root@localhost ROOT]# sh /etc/init.d/realserver.sh start

RealServer Start OK

eth1      Link encap:Ethernet  HWaddr 00:0C:29:1F:0F:F3

inet addr:192.168.146.162  Bcast:192.168.146.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe1f:ff3/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:89543 errors:0 dropped:0 overruns:0 frame:0

TX packets:47914 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:112074876 (106.8 MiB)  TX bytes:2870905 (2.7 MiB)

lo        Link encap:Local Loopback

inet addr:127.0.0.1  Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING  MTU:16436  Metric:1

RX packets:22 errors:0 dropped:0 overruns:0 frame:0

TX packets:22 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:1408 (1.3 KiB)  TX bytes:1408 (1.3 KiB)

lo:0      Link encap:Local Loopback

inet addr:192.168.146.101  Mask:255.255.255.255

UP LOOPBACK RUNNING  MTU:16436  Metric:1

运行后会看到网络有了一个虚拟IP,即红色标注部分。

去LVS_MASTER服务器的终端查看下ipvsadm,查看已经连接上了WEB1服务器(即红色标注部分):

[root@localhost keepalived-1.2.7]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.146.101:8080 rr persistent 50

-> 192.168.146.162:8080         Route   1      0          0

已经可以看到有服务器加入进来了。

此时我们访问网页http://192.168.146.101:8080,出现界面显示web1 192.168.146.162;或者使用命令行测试转发情况都可以查看。

配置部署192.168.146.163 web2:

具体配置部署过程同web1!!

    

LVS主从部署配置和使用的更多相关文章

  1. centos6.3部署配置LVS主从

    LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统.这个项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.它的官方网址 ...

  2. Redis主从 部署和配置

    目录 一.主从简介 主从介绍 主从原理 二.主从部署 环境介绍 主从配置 临时主从 三.主从测试 一.主从简介 主从介绍 Redis都是主节点.每个从节点只能有一个主节点,而主节点可以同时具有多个从节 ...

  3. LVS+Redis部署手册

    Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案. Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用 ...

  4. puppet实现主从部署各种软件实战参考模型

    puppet实现主从部署各种软件实战参考模型   实验要求:     1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...

  5. AMQ学习笔记 - 14. 实践方案:基于ZooKeeper + ActiveMQ + replicatedLevelDB的主从部署

    概述 基于ZooKeeper + ActiveMQ + replicatedLevelDB,在Windows平台的主从部署方案. 主从部署可以提供数据备份.容错[1]的功能,但是不能提供负载均衡的功能 ...

  6. LVS 介绍以及配置应用

    1.负载均衡集群介绍 1.1.什么是负载均衡集群 负载均衡集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据的处理能力.提高网络的灵活性和可用性 搭建负 ...

  7. LVS结合keepalived配置测试

     LVS/DR + keepalived配置 注意:前面虽然我们已经配置过一些操作,但是下面我们使用keepaliave操作和之前的操作是有些冲突的,所以若是之前配置过DR,请首先做如下操作:   三 ...

  8. Docker Mysql数据库主从同步配置方法

    一.背景 最近在做内部平台架构上的部署调整,顺便玩了一下数据库的主从同步,特此记录一下操作- 二.具体操作 1.先建立数据存放目录(-/test/mysql_test/) --mysql --mast ...

  9. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

随机推荐

  1. hdoj6483 A Sequence Game(ST预处理RMQ+莫队)

    传送:http://acm.hdu.edu.cn/showproblem.php?pid=6483 题意:有长度为$n$的数组,对于一个子区间$[l,r]$内,存在最大值$mx$与最小值$mi$,有$ ...

  2. MongoDB 数据库

    数据库: 关系型数据库       mysql           收费        速度快     字段类型 非关系型数据库   MongoDB    不收费    速度慢一些 存储数据都是字符串 ...

  3. 内存管理buddy[原理]

    TODO------------------------------------------------------------------------------------------------ ...

  4. Golang Struct 声明和使用

    Golang Struct 声明和使用 Go可以声明自定义的数据类型,组合一个或多个类型,可以包含内置类型和用户自定义的类型,可以像内置类型一样使用struct类型 Struct 声明 具体的语法 t ...

  5. spring boot -thymeleaf-日期转化

    <span th:text="${#dates.format(date)}" ></span><span th:text="${#dates ...

  6. es 基于match_phrase的模糊匹配原理及使用

    [版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 在业务中经常会遇到类似数据库的"like"的模糊匹配需求 ...

  7. [EXP]Huawei Router HG532e - Command Execution

    #!/bin/python ''' Author : Rebellion Github : @rebe11ion Twitter : @rebellion ''' import urllib2,req ...

  8. 如何从GitHub仓库clone项目

    自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...

  9. 协程及Python中的协程

    1 协程 1.1协程的概念 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程.(其实并没有说明白~) 我觉得单说协程,比较抽象,如果对线程有一定了解 ...

  10. jQuery检查复选框是否被选

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...