一.拓扑图
目标:实现lvs的dr模式+keepalived高可用web集群架构
图1 拓扑图
本次高可用集群实验的节点有四个,分别是lvs-master,lvs-slave,lvs-webserver1,lvs-webserver2。
四个节点使用Vmware Pro 12的四台虚拟机实现,虚拟机操作系统全部采用CentOS 6.8 64位。
四个节点都在一个局域网中,网卡全部采用仅主机模式,网段192.168.80.0/24,VIP为192.168.80.20。
lvs-master和lvs-slave担任调度器(DirectorServer,DS)角色, lvs-webserver1和lvs-webserver2担任真实服务器(Real Server, RS)角色。
两台调度器安装keepalived提供高可用,两台真实服务器安装httpd提供web服务。
二.节点规划
图2 节点规划
三.各节点配置
3.1.各节点基本配置
1)各节点都关闭防火墙,命令:
service iptables stop
chkconfig iptables off
2)各节点都编辑/etc/hosts,添加如下内容:
192.168.80.11 lvs-master
192.168.80.12 lvs-slave
192.168.80.13 lvs-webserver1
192.168.80.14 lvs-webserver2
3)各节点都编辑/etc/sysconfig/network,把主机名HOSTNAME按照节点信息表里面的更改。主机名更改后需运行命令reboot重启系统生效。
4)各节点都编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把IP地址按照节点信息表里面的更改。IP地址更改后需运行命令service network restart重启网络生效。
5)各节点都设置好时区和时间同步。
6)各节点都关闭selinux。(视情况而定,一般都关闭。)
3.2. 调度器DS配置
1)lvs
两台调度器采用lvs做负载均衡,lvs模块是centos内核自带,只需要运行modprobe ip_vs命令即可激活lvs。
2)keepalived安装
lvs-master是主调度器,lvs-slave是备调度器,采用DR模式,并安装keepalived提供高可用服务。
Centos6.8编译安装keepalived-1.3.5步骤,参考此文: http://blog.csdn.net/shile/article/details/77896937
3)keepalived配置
keepalived的默认配置文件为/etc/keepalived/keepalived.conf
主负载均衡器配置:
global_defs {
notification_email {
admin@localhost
}
notification_email_from notify@localhost
smtp_server 192.168.80.1
smtp_connection_timeout 30
router_id LVS_01 # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface eth0 #指定HA监测网络的接口
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.80.20 #定义虚拟IP(VIP)为192.168.80.20,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.20 80{
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wlc # 设置负载调度的算法为wlc
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.80.13 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.80.14 80 { # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
从负载均衡器配置:
从负载服务器与主负载服务器大致相同,只是在keepalived的配置文件中需要改以下三处:
(1)将router_id由LVS_01改成LVS_02
(2)将state由MASTER改为BACKUP
(3)将priority由100改为80
4)启动keepalived
keepalived安装和配置完成后,添加到自启动并启动keepalived高可用服务:
service keepalived start
chkconfig --add keepalived
chkconfig keepalived on
3.3.真实服务器RS配置
1)两台真实服务器(Real Server, RS)都安装httpd,提供web服务。
lvs-webserver1配置httpd:
yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver1:80
service httpd start
echo "lvs-webserver1: 192.168.80.13" >/var/www/html/index.html
lvs-webserver2配置httpd:
yum install -y httpd
vi /etc/httpd/conf/httpd.conf #把ServerName那一行改成ServerName lvs-webserver2:80
service httpd start
echo "lvs-webserver2: 192.168.80.14" >/var/www/html/index.html
2)两台真实服务器RS都运行realserver脚本来添加VIP,并抑制arp, 步骤如下。
进入指定文件夹:cd /etc/init.d/ , 编辑脚本文件:vi realserver , 内容如下:
VIP=192.168.80.20
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $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
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $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
这里我们设置虚拟IP为:192.168.80.20
保存脚本文件后更改该文件权限:chmod 755 realserver
开启realserver服务:service realserver start
四.测试
测试主机: 同一局域网的电脑,比如vmware的宿主机(IP:192.168.80.1)。
测试方法: 使用浏览器打开http://192.168.80.20测试。刷新页面,显示的页面会在两台webserver中循环。
原文链接: http://www.opsky.top/post/15.html