keepalived 负载均衡的 搭建

高并发网站的解决方案  

①类   程序设计上 优化措施    由 网页静态化   图片服务器   缓存技术  等 方式

②类  服务器进行负载均衡部署概略图   用户请求的虚拟网络服务器  进行IP包装 映射到真实服务器IP  然后进行返回

  

1:转发请求
2:故障移除
3:恢复添加

负载均衡种类

1)一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的
2)一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache等,它们是基于Linux系统并且开源的负载均衡策略

第一种 :Virtual Server via Network Address Translation(VS/NAT)  

通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端真实服务器;真实服务器的响应报文通过调度器时,报文源地址被重写再返回给客户,完成整个负载调度过程。 

但通常在流量比较大的情况下会造成调度器的瓶颈。因为服务数据的返回必须通过调度器出去。  (网络带宽)

第二种Virtual Server via IP Tunneling(VS/TUN)   采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器 把请求报文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。但是目前支持TUN 只有Linux系统

第三种:Virtual Server via Direct Routing(VS/DR)   VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术 可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一 块网卡连在同一物理网段上。也就是说,在这种结构中,数据从外部到内部真实服务器的访问会通过调度器进来,但是真实服务器对其的应答不是通过调度器出去。 即在大多数情况下,真实服务器可以通过各自的网关或者专用的网关对数据进行外发,从而降低调度器负载。

 

---------------------LVS-----------------------
LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内核2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

1:轮叫调度(Round-Robin Scheduling)   均匀访问 每台服务器   A一次 B一次
2: 加权轮叫调度(Weighted Round-Robin Scheduling)   A服务器 转发1次   B 服务器 转发2次
3:最小连接调度(Least-Connection Scheduling)    na那台服务器连接数量最小 就转发到哪台服务器
4:加权最小连接调度(Weighted Least-Connection Scheduling)
5:基于局部性的最少链接(Locality-Based Least Connections Scheduling)
6:带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)
7:目标地址散列调度(Destination Hashing Scheduling)
8:源地址散列调度(Source Hashing Scheduling)
9:最短预期延时调度(Shortest Expected Delay Scheduling)
10:不排队调度(Never Queue Scheduling)
对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq

 

 

----------------------------windows7 +虚拟机 搭建负载均衡 - 以及备用机器------------------------------------------------

负载均衡服务器 IP地址为 192.168.1.5   主机ip地址 为  192.168.1.6 和 192.168.1.7  备用机 ip为192.168.1.8

 

由于是虚拟机  在启动 httpd 服务时 出现错误   此错误原因 由于IP地址是动态获取  Apache服务不能进行映射导致

[wenbo@192 Desktop]$ service httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

错误解决  vi /etc/sysconfig/network-scripts/ifcfg-eth0  进入 编辑系统信息文件

 

进入 cd  /var/www/html/ 目录 创建 index.html文件  将本机的ip 地址写入到 index.html中  

在每一台服务器都创建index.html 文件  并 进行 访问   直接访问IP地址  确认可以访问

在每台服务器 上安装 keepalived 

yum -y install keepalived   在线安装  -y表示 安装过程有需要确认的信息 全部同意

俩台主机上分别创建realserver 服务  

进入 根目录  cd /

在/etc/init.d/文件夹下创建realserver

touch realserver  进行编辑-----------------下面为配置参数

#!/bin/bash
#chkconfig: 2345 79 20
#description:realserver
SNS_VIP=192.168.1.10            #定义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 #表示进程非正常退出

 

创建之后 可能没有执行权限  进行权限设置

chmod 775 /etc/init.d/realserver 

然后执行这个脚本 

realserver start

检查网络端口 

 

 

 配置负载均衡服务器

-----------------------配置    /etc/keepalived/keepalived.conf文件-------------------------------------

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 ##会话保持时间,单位s
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.1.10
}
}
virtual_server 192.168.1.10 80 { ##真实服务器IP配置,80表示端口
delay_loop 6 ##健康检查时间间隔,单位s
lb_algo wrr ##负载均衡调度算法设置为加权轮叫
lb_kind DR ##负载均衡转发规则
nat_mask 255.255.255.0 ##网络掩码,DR模式要保障真实服务器和lvs在同一网段
persistence_timeout 50 ##会话保持时间,单位s     此处测试应该设置为0 否则看不到调度结果
protocol TCP ##协议
real_server 192.168.1.6 80 { ##真实服务器配置,80表示端口
weight 3 ##权重
TCP_CHECK { ##服务器检测方式设置 keepalived的健康检查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 5 ##连接超时时间
nb_get_retry 3 ##失败重试次数
delay_before_retry 3 ##失败重试的间隔时间
connect_port 80 ##连接的后端端口
}
}

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

配置完成后  启动  keepalived  

service keepalived start

查看日志 tail -f /var/log/messages

此时 已经完成基本的负载均衡调度服务

 

----------------------------备用服务器 ----------------

 

与主机 基本一致  但是 在 /etc/keepalived/keepalived.conf文件中

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

priority 100 #设置优先级,数值越大,优先级越高,backup设置为99   优先一定要小于主机的优先权   否则主机复活后 无法接管 服务

 

 

   

posted @ 2017-06-06 13:52  迷~途  阅读(372)  评论(0)    收藏  举报