感谢原创作者:https://blog.csdn.net/tengyuantuohai/article/details/19639671
一:实验前准工作:
1.1安装:VMware 14 (用作搭建虚拟服务器,本机系统是win7)
1.2这里我安装了1台centos6.5 ,其他4台克隆
分别对应ip:
对外主机1地址:192.168.52.138 LVS_VIP(VIP:Virtual IP)
虚拟主机1地址:192.168.52.134 LVS_Master
虚拟主机2地址:192.168.52.135 LVS_Backup
虚拟主机3地址:192.168.52.136 WEB1_RealServer
虚拟主机4地址:192.168.52.137 WEB2_RealServer
1.3小技巧:快速克隆
可以安装好一台,其他4台用虚拟机克隆
(1)关闭当前系统,点虚拟机--管理--克隆--下一步-虚拟机中的当前状态--创建链接克隆--自行命名和选择系统保存目录即可
(2)VMware 如果从win7复制进虚拟服务器复制不了,安装好VMware Tools即可 (菜单:虚拟机-安装VMware Tools)
(3)Centos6.5安装软件出现下面问题,是用户权限问题,切换回root用户就行了,命令:#su ,输密码
Loaded plugins: fastestmirror, refresh-packagekit, security
You need to be root to perform this command.
(4)直接在虚拟机操作命令窗口比较麻烦,我直接用SecureCRT来远程链接
二:开始搭建
1.打开LVS_Master
(1)安装IPVSADM
#yum -y install ipvsadm
(2)光闭防火墙(方便测试)
#service iptables stop
(3)KeepAlived 的安装
#cd /usr/src
#yum -y install openssl-devel
#wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
#wget http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm
#yum -y install popt-static-1.13-7.el6.x86_64.rpm
#yum -y install kernel-devel make gcc openssl-devel libnl* popt*
#ln -s /usr/src/kernels/2.6.32-220.13.1.el6.x86_64/ /usr/src/linux
#tar zxvf keepalived-1.2.7.tar.gz
#cd keepalived-1.2.7
#./configure --with-kernel-dir=/usr/src/kernels/2.6.32-358.2.1.el6.x86_64/
这步执行成功会显示下图
继续
#make && make install
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
到这里KeepAlivde应该安装成功了
(4)sysctl.conf文件
#vim /etc/sysctl.conf
修改里面“net.ipv4.ip_forward = 1”
保存退出,刷新生效
#sysctl -p
(5)KeepAlivde的配置
#vim /etc/keepalived/keepalived.conf (前面命令已经copy到了这里)
我的配置文件
onfiguration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 60
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.52.138
}
}
virtual_server 192.168.52.138 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.52.136 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.52.137 8080 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
(6)保存退出,启动keepalived
#service keepalived start
提示:Starting keepalived: [ OK ] 证明成功了
(7)查看进程
#ps aux | grep keepalived
注意有4个进程才算成功,3个是有问题的
Keepalived正常运行时,共启动3个进程,其中一个进程是父进程,负责监控其子进程;一个是vrrp子进程;另外一个是checkers子进程。
(8)查看下虚拟IP是否已经加上
#ip a
主机地址:192.168.52.138 LVS_VIP(VIP:Virtual IP)已经有了,说明虚拟IP已经自动配置上了。
2.打开虚拟主机3地址:192.168.52.136 WEB1_RealServer
(1)先装个web服务器,这里可以自行用nginx 或tomcat,网页能正常访问即可
我这里安装tomcat
#yum -y install tomcat6 tomcat6-webapps tomcat6-admin-webapps
#service tomcat6 start
启动成功,直接访问:http://192.168.52.136:8080/ 就可以访问到tomcat页面了,为了方便区分,建个首页文件,写上自己ip
#cd /usr/share/tomcat6/webapps/ROOT/
#cat /dev/null > index.html
#vim index.html
输入:web1 192.168.52.136
保存再访问:
(2)配置虚拟IP启动脚本
#vim /etc/init.d/realserver.sh
#!/bin/bash
SNS_VIP=192.168.52.138
. /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
(3)启动脚本
#sh /etc/init.d/realserver.sh start
RealServer Start OK 才算成功
(4)验证是否和master链接上了
去LVS_MASTER服务器的终端查看下ipvsadm,查看已经连接上了WEB1服务器
#ipvsadm -ln
我这里因为136,和137都启动过,所以截图会有,这里出现证明访问:http://192.168.52.138:8080/ 它会自动转发到
http://192.168.52.136:8080/ 或 http://192.168.52.137:8080/ ,可以在网页访问下
(5)异常:这里碰到一些问题:怎么访问转发就是失败
解决方案:
我碰到的是防火墙问题,把master防火墙关闭 (可能还有keepAlived版本,配置文件路径等,可能不同人碰到实际问题不同,多查资料可以参考:https://www.linuxidc.com/Linux/2015-03/114981.htm)
# service iptables stop
页面访问转发成功
三:可以在lvs_master配置好后再克隆lvs_backup ,
#vim /etc/keepalived/keepalived.conf
其他配置相同,不同在
router_id LVS_MASTER 改成:router_id LVS_BACKUP
interface eth1:网卡,以服务器真实网卡来配置,有可能是eth0 ,eth1,eth2
priority 100 :主是100,从要改比它小,可以是99 ,我这里用90
四:可以在配置好web1服务器后再克隆web2....webn
(1)验证:同时开启lvs_master和lvs_backup服务,访问http://192.168.52.138:8080/ ,成功转发到web2 192.168.52.137
把web2服务器关闭,看能否自动切换到web1
访问http://192.168.52.138:8080/ ,自动转发到web1 192.168.52.136
同理也可以来回关闭master 和backup做验证测试
若有其他问题可以多查下日志,网上找下资料
查看日志:#tail -f /var/log/messages