以下转载:

准备

l 系统:Centos6  (三台)

l 负载均衡:LVS  + keepalived

l 服务器1:Http

l 服务器2:Http

ip配置

1、VIP(virtual ip):用来提供virtual server服务的ip地址。分别绑定在Director一个物理网卡上(对外接收请求包)和RS的回环设备上(回环设备需要绑定两个ip,一个是127.0.0.1,另一个就是vip)。

2、DIP(director ip):与vip绑定在一个物理网卡上,用来转发请求包到RS的RIP对应的mac上,此设备可以通过arp请求获取RIP对应的mac地址。

3、RIP(real server ip):绑定在RS上的一个物理网卡上,用来接收从Directory转发过来的请求包。

关闭防火墙

[root@itcast01 ~]# service iptables status

[root@itcast01 ~]# service iptables stop

[root@itcast01 ~]# chkconfig iptables --list

[root@itcast01 ~]# chkconfig iptables off

第一步:在二台真实服务器网上上添加LO:0接口,并设置虚拟IP在此接口上

[root@itcast01 ~]# cd /etc/init.d/

[root@itcast01 ~]#touch realserver

[root@itcast01 ~]#vim realserver

SNS_VIP=192.168.8.150

. /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

以上参数说明

SNS_VIP=192.168.1.98            #定义VIP变量

. /etc/rc.d/init.d/functions #导脚本库

case "$1" in #case语句 $1传递给该shell脚本的第一个参数

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP #设置Lo:0 VIP  netmask  及广播

/sbin/route add -host $SNS_VIP dev lo:0   ##route del 增加本地路由

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 # -p <file>   (default /etc/sysctl.conf) 将标准信息输入设备空文件

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1      #route del 删除本地路由

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}"  #$0 是脚本本身的名字

exit 1 #表示进程正常退出

esac #case结束

exit 0 #表示进程非正常退出

[root@itcast01 ~]#chmod 750 realserver     #给此脚本赋予权限

[root@itcast01 ~]#service realserver start          #开启此脚本

RealServer Start OK    #表示启动成功!

[root@itcast01 ~]#ifconfig    #查看一下是否真的成功添加了lo:0接口

第二步:开启二台真实服务器上自带的Apache公司的Http服务器

[root@itcast01 ~]#service httpd start              #开启Http服务器

[root@itcast01 ~]#cd /var/www/html/             #进入Http服务器默认的目录

[root@itcast01 ~]#touch index.html               #创建Http服务器默认访问页面

[root@itcast01 ~]#vim index.html                #编辑Http服务器默认访问页面

I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

用浏览器访问一下:http://192.168.200.201      默认端口80

查看结果是否是自己编辑的:   I am http IP : 真实服务器自己的IP(例如:192.168.200.201)

二台真实服务器一样

第三步:开始搭建负载均衡

1:安装 ipvsadm  keepalived

命令:yum –y install ipvsadm keepalived

2:配置 keepalived

命令:vim /etc/keepalived/keepalived.conf

global_defs {

#   notification_email {

#       admin@toxingwang.com

#   }

#   notification_email_from master@toxingwang.com

#   smtp_server smtp.exmail.qq.com

#   smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.200.201

}

}

virtual_server 192.168.200.201 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 0

protocol TCP

real_server 192.168.200.139 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 192.168.200.140 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

以上参数说明

global_defs {                        ##全局配置部分

#   notification_email {             ##下面几行均为全局通知配置,可以实现出现问题后报警,但功能有限,因此注释掉,并采用Nagios监视lvs运行情况

#       admin@toxingwang.com

#   }

#   notification_email_from master@toxingwang.com

#   smtp_server smtp.exmail.qq.com

#   smtp_connect_timeout 30

router_id LVS_DEVEL             ##设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1 {            ##设置vrrp组,唯一且同一LVS服务器组要相同

state MASTER             ##备份LVS服务器设置为BACKUP

interface eth0             # #设置对外服务的接口

virtual_router_id 51        ##设置虚拟路由标识

priority 100                   #设置优先级,数值越大,优先级越高,backup设置为99,这样就能实现当master宕机后自动将backup变为master,而当原master恢复正常时,则现在的master再次变为backup。

advert_int 1            ##设置同步时间间隔

authentication {         ##设置验证类型和密码,master和buckup一定要设置一样

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {          ##设置VIP,可以多个,每个占一行

192.168.18.60

}

}

virtual_server 192.168.18.60 80 {

delay_loop 6            ##健康检查时间间隔,单位s

lb_algo wrr             ##负载均衡调度算法设置为加权轮叫

lb_kind DR                              ##负载均衡转发规则

nat_mask 255.255.255.0   ##网络掩码,DR模式要保障真实服务器和lvs在同一网段

persistence_timeout 50    ##会话保持时间,单位s

protocol TCP                           ##协议

real_server 192.168.18.61 80 {      ##真实服务器配置,80表示端口

weight 3                             ##权重

TCP_CHECK {                       ##服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

connect_timeout 0    ##连接超时时间

nb_get_retry 3      ##失败重试次数

delay_before_retry 3 ##失败重试的间隔时间

connect_port 80      ##连接的后端端口

}

}

real_server 192.168.18.62 80 {

weight 3

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

启动keepalived服务

[root@lvs1 ~]# service keepalived start

注:由于keepalived配置文件有语法错误也能启动,因此看到启动了lvs服务,不代表配置文件没有错误,如果遇到lvs不能正常转发,及时跟踪日志进行处理。

日志跟踪方法

1、开两个ssh窗口连接到lvs服务器,第一个窗口运行如下命令:

[root@lvs1 ~]# tail -f /var/log/message

2、第二个窗口重新启动keepalived服务,同时观察窗口1中日志的变化,然后根据日志提示解决即可。

浏览器访问虚拟IP查看结果

二台真实服务器分别出现在页面上,表明结果是正确的

搭建负载均衡的环境(利用虚拟机上的四台centos)的更多相关文章

  1. 在Windows环境中使用Nginx, Consul, Consul Template搭建负载均衡和服务发现服务

    搭建负载均衡和服务发现服务的目的 随着网站业务的不断提升,单个服务器的性能越来越难满足客户的业务需求,所以很多情况下,需要使用多服务器实例和负载均衡器来满足业务需要. Nginx 什么是Nginx N ...

  2. LVS+keepalived搭建负载均衡

    安装环境:环境 centos4.4 LB:192.168.2.158(VIP:192.168.2.188) real-server1:192.168.2.187 real-server2:192.16 ...

  3. Nginx-Tomcat搭建负载均衡(转载)

    一.   工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2 ...

  4. 160526、高并发之LVS搭建负载均衡

    LVS介绍: LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我们国家的章文嵩博士的一个开源项目.在linux内核2.6中,它已经成为内核的一部分,在此之前的内 ...

  5. 手把手教程: CentOS 6.5 LVS + KeepAlived 搭建 负载均衡 高可用 集群

    为了实现服务的高可用和可扩展,在网上找了几天的资料,现在终于配置完毕,现将心得公布处理,希望对和我一样刚入门的菜鸟能有一些帮助. 一.理论知识(原理) 我们不仅要知其然,而且要知其所以然,所以先给大家 ...

  6. Mycat搭建负载均衡,读写分离的Mysql集群

    Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...

  7. IIS搭建负载均衡WebFarm+Arr

    本文所述仅针对IIS7.0或更高版本 一.IIS简介 IIS( Internet Information Services),微软官方Windows平台上面web容器服务.支持http协议和ftp协议 ...

  8. node + nginx + mongo搭建负载均衡

    基于node和nignx和mongo搭建负载均衡 nginx配置: upstream back {                                                  # ...

  9. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

随机推荐

  1. USACO Section2.3 Longest Prefix 解题报告 【icedream61】

    prefix解题报告------------------------------------------------------------------------------------------ ...

  2. CV限制符--C++

    C/C++提供多种声明变量和函数存储持续性.作用域和链接性的关键字,有些被称为存储说明符(store class specifier)或 cv 限定符(cv-qualifier),这里就一起学习一下c ...

  3. 孤荷凌寒自学python第七天 列表的复制与序列的基本运算

    孤荷凌寒自学python第七天 列表的复制与序列的基本运算 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) (同步语音:https://www.ximalaya.com/keji/191030 ...

  4. Python——开篇之词

    我也断断续续的用Python挺长时间了.但是一直都没有系统的学习过Python.很多东西都是现用现学.这样感觉对Python的理解太浅,完完全全就是搬砖的. 因此,我专门找了一个比较完整的老男孩的Py ...

  5. Kd-Tree&Ransac笔记

    关于sift资源总结: http://blog.csdn.net/masibuaa/article/details/9191309 两个比较好的资源: https://my.oschina.net/k ...

  6. 软工实践 - 第十六次作业 Alpha 冲刺 (7/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10013959.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  7. Nginx主要模块常用指令说明

    核心模块(Core Modules): 主模块(Main Module):配置和服务器全局有关的一些参数,比如错误日志.进程.权限等 user worker_processes error_logsy ...

  8. Java进行身份证格式强校验(准)

    最近做了一个系统,涉及到对用户输入的身份证号进行校验,减少脏数据传入后台处理并降低企业验证成本,因此在接入层便对输入信息做格式强校验. 直接附上代码,可直接使用. package hope.ident ...

  9. 【bzoj2079】[Poi2010]Guilds 构造结论题

    题目描述 Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工会要求每个城市 ...

  10. Codeforces Round #387 (Div. 2) 747F(数位DP)

    题目大意 给出整数k和t,需要产生一个满足以下要求的第k个十六进制数 即十六进制数每一位上的数出现的次数不超过t 首先我们先这样考虑,如果给你了0~f每个数字可以使用的次数num[i],如何求长度为L ...