1、准备5台服务器,1台做lvs,2台做squid,2台做web服务器
2、关闭5服务器的iptables 、selinuc、NetworkManager
3、将5台机器的IP地址改成静态,修改hostname,并将IP和主机名写进/etc/hosts文件
4、先搭建lvs
搭建方法:
a、安装依赖包:yum -y install kernel-devel make gcc openssl-devel libnl* popt*
b、解压LVS包:tar -zxvf ipvsadm-1.26.tar.gz -C /usr/src/
c、编译安装LVS包:cd /usr/src/ipvsadm-1.26 ,执行make && make install
d、解压高可用软件keepalived:tar -zxvf keepalived-1.2.16.tar.gz -C /usr/src/
e、编译安装keepalived包:cd /usr/src/keepalived-1.2.16,
执行:./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/
f、修改/etc/keepalived.conf配置文件,达到高可用状态
vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {
router_id LVS_MASTER #主写LVS-MASTER,备写LVS-BACKUP
}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.108.200 #虚拟VIP
}
}
virtual_server 192.168.108.200 80 {
delay_loop 6
lb_algo rr #高度算法,rr是轮询算法
lb_kind DR #集群模式,这里是NAT模式
persistence_timeout 50
protocol TCP#(使用代理就用代理ip)
real_server 192.168.108.101 80 {
weight 1
#HTTP_GET {
TCP_CHECK { #验证web服务器是否存在的方式
connect_timeout 3 #连接超时时间,时间秒
nb_get_retry 3 #失败后连接的次数
delay_before_retry 3 #间隔时间
connect_port 80
}
}#(使用代理就用代理ip)
real_server 192.168.108.102 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
配置好后,启动keepalived服务:service keepalived restart
5、到两台squid缓存服务器上搭建squdi服务和lvs客户端启动脚本
a、yum源安装squdi软件:yum -y install squid*
b、修改squdi缓存文件达到缓存效果
vim /etc/squid/squid.confhttp_access allow all #修改成允许所有
http_port 80 accel vhost vport #修改成监听80端口和支持反向代理模式
cache_dir ufs /var/spool/squid 256 16 256 #打开缓存目录的定义这一句
icp_port 3130 #icp端口
cache_peer 192.168.169.211 sibling 80 3130 #缓存服务器列表,如果A记录在其中1台,那么系统将会去这台取A记录
cache_peer 192.168.169.212 sibling 80 3130 #有代理的用代理ipcache_peer 192.168.169.200 parent 80 0 no-query originserver round-robin name=web1
cache_peer 192.168.169.210 parent 80 0 no-query originserver round-robin name=web2
#cache_peer_domain we1 web2
#cache_peer_domain web 192.168.169.201 #加上这三句,表示代理后台的35的8000端口;web.cluster.com为网站的域名,192.168.169.201为我这个架构最前端的nginx的IP c、创建缓存目录:squid -zX /var/spool/squid
d、写lvs客户端启动脚本
vim /opt/lvs-client.sh
#!/bin/bashLVS_VIP=192.168.108.200 #绑定lvs的keepalived的虚拟ip
/etc/rc.d/init.d/functionscase "$1" in
start)
/sbin/ifconfig lo:0 $LVS_VIP netmask 255.255.255.255 broadcast $LVS_VIP
/sbin/route add -host $LVS_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 "LVS-RealServer Start OK"
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $LVS_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 "LVS-RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
e、给functions和脚本加执行权限
chmod +x /etc/rc.d/init.d/functions
chmod +x /opt/lvs-client.sh
f、两台squdi服务器都执行lvs-client.sh脚本,再启动squid服务
sh -x /opt/lvs-client.sh start
sh -x /etc/init.d/squid start6、配置后端的两台web服务器
a、yum安装httpd服务:yum -y install httpd*
b、给http加一个访问文件内容:echo "web:192.168.108.103">/var/www/html/index.html
c、两台服务器分别都启动httpd服务:service httpd restart