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 优先一定要小于主机的优先权 否则主机复活后 无法接管 服务
 
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号