欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LVS(二)——环境的搭建

程序员文章站 2022-07-12 17:09:00
...

一.前期准备

系统:Centos6 (三台)
负载均衡:LVS + keepalived
服务器1:Http
服务器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转发过来的请求包。


三.搭建步骤

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

[[email protected] ~]# cd /etc/init.d/
[[email protected] ~]#touch realserver
[[email protected] ~]#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							#表示进程非正常退出
[[email protected] ~]#chmod 750 realserver 		   #给此脚本赋予权限
[[email protected] ~]#chkconfig realserver on         #设置开机自启动此脚本
[[email protected] ~]#service realserver start          #开启此脚本
RealServer Start OK						   #表示启动成功!
[[email protected] ~]#ifconfig					   #查看一下是否真的成功添加了lo:0接口


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

[[email protected] ~]#service httpd start              #开启Http服务器
[[email protected] ~]#cd /var/www/html/             #进入Http服务器默认的目录
[[email protected] ~]#touch index.html               #创建Http服务器默认访问页面
[[email protected] ~]#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)
二台真实服务器一样


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

(1):安装 ipvsadm keepalived
命令:yum –y install ipvsadm keepalived
(2):配置 keepalived
命令:vim /etc/keepalived/keepalived.conf

global_defs {                       
#   notification_email {             
#       [email protected]
#   }
#   notification_email_from [email protected]
#   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运行情况
#       [email protected]
#   }
#   notification_email_from [email protected]
#   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
		}
	}
}


(3)启动keepalived服务

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

(4)日志跟踪方法

1、开两个ssh窗口连接到lvs服务器,第一个窗口运行如下命令:
[[email protected] ~]# tail -f /var/log/message
2、第二个窗口重新启动keepalived服务,同时观察窗口1中日志的变化,然后根据日志提示解决即可。


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

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