为了达到负载均衡的效果,我一共采用了四台虚拟机,均是vmware虚拟出来的系统,使用的linux版本是centOS 6.7。
需要引起注意的是,如果linux内核版本低于2.4,需要手动把LVS编译到Linux内核中。
查看linux内核信息命令为:uname -a
这四台虚拟机的IP地址分别是:129,131,132,134,其中:129是主机,用于转发请求;131和132是服务器,一般是tomcat,这里为了方便,我采用http服务器,处理由129发来的请求;最后134是备机。
首先我们需要把四台机器的防火墙关掉,命令是:service iptables stop,防止重启后,防火墙再次开启,命令是:chkconfig iptables off,检查防火墙是否完全关闭的命令:chkconfig iptables --list。
防火墙关闭了之后,我们在两台服务器131和132上面开启http服务,命令是:service httpd start,开启了http服务之后,我们在浏览器输入虚拟机的ip地址,如:192.168.124.131,即可进入到apache http服务的欢迎页。
为了分别标识这两台服务器,我们可以编辑一个静态页面,命令:touch /var/www/html/index.html,然后使用vim编辑器给我们创建的index.html写入一些内容,用以区分服务器,命令:vim /var/www/html/index.html,如:i am http 192.168.124.131(132)。完成了这边操作之后,我们在浏览器输入192.168.124.131(132)就可以看到我们刚编辑的html页面了。
由于131和132是服务机,我们需要给这两台机器的网卡设置回还口,命令:touch /etc/init.d/realserver。执行该命令,会在etc/init.d目录下创建realserver文件。执行命令:vim /etc/init.d/realserver,我们给realserver文件写入如下内容:
<pre name="code" class="plain">#!/bin/bash
#chkconfig: 2345 79 20
#description:realserver
SNS_VIP=192.168.124.135 #定义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 #表示进程非正常退出拷贝以上内容时,请把注释去掉。其中要注意的是,SNS_VIP是虚拟IP,即不存在的非真实IP,由于我使用了129、131、132、134,所以这里我把VIP设置为135。最后执行命令:service realserver start。需要注意的是,执行service realserver start 命令之前,先要赋予权限chmod 775 realserver。
完成了上述操作之后,两台服务机就算准备好了,接下来我们准备主机。
主机的IP是129,首先我们需要给我们的主机安装keepalived,命令是:yum -y install keepalived。查看安装路径命令:rpm -ql keepalived。清空/etc/keepalived/keepalived.cfg文件,命令:>/etc/keepalived/keepalived.cfg。清空了该文件之后往该文件写入内容:vim /etc/keepalived/keepalived.cfg,要写入的内容如下:
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 # MASTER为主机,BACKUP为备机
interface eth0
virtual_router_id 51
priority 100 # 优先级,备机的优先级必须比主机的优先级小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.124.135 # VIP,虚拟、非真实存在的IP
}
}
virtual_server 192.168.124.135 80 {
delay_loop 6
lb_algo wrr # wrr 分权轮叫算法
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.124.131 80 { # 服务器IP
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.124.132 80 { # 服务器IP
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
编辑完成之后,保存。执行命令:service keepalived start。
我们在浏览器输入IP地址:192.168.124.135,可以看到请求被转发至131和132,由于在keepalived.cfg文件中设置了两台服务器的权重一样,所以各自处理一次请求。
接下来开始备机的搭建。同样的,安装keepalived,命令:yum -y install keepalived, 查看安装信息:rpm -ql keepalived
清空keepalived.cfg文件:>/etc/keepalived/keepalived.cfg,往keepalived文件写入如下内容:
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 BACKUP # MASTER为主机,BACKUP为备机
interface eth0
virtual_router_id 51
priority 99 # 优先级,备机的优先级必须比主机的优先级小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.124.135 # VIP,虚拟、非真实存在的IP
}
}
virtual_server 192.168.124.135 80 {
delay_loop 6
lb_algo wrr # wrr 分权轮叫算法
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.124.131 80 { # 服务器IP
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.124.132 80 { # 服务器IP
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
保存,启动keepalived:service keepalived start。
我们可以把129机器停掉,执行命令:service keepalived stop ,我们再次在浏览器输入VIP:192.168.124.135,可以看到访问依然正常。
一个简单的负载均衡搭建就此完成了。
本文介绍如何在CentOS 6.7环境中利用四台虚拟机搭建LVS负载均衡系统,包括关闭防火墙、配置HTTP服务、设置回环接口、安装与配置Keepalived等步骤。

1043

被折叠的 条评论
为什么被折叠?



