配置過程以下:html
分析架構:若是ld是單一節點,那麼這個ld掛了,整個架構也就掛了,因此咱們這裏必須考慮到High Availabiliity(HA),咱們這裏就是經過keepalived這個高可用軟件來實現的。linux
1.客戶端配置:apache
#ifconfig eth0 192.168.18.106vim
#route add default gw 192.168.18.254bash
2.Router端配置:架構
#ifconfig eth0 192.168.18.254ide
#ifconfig eth0:0 192.168.19.100oop
打開包轉發測試
#echo 1 > /proc/sys/net/ipv4/ip_forward url
3.分發器Master的配置:
安裝lvs到分發器上面
配置好yum源,保證可以讀取到介質中的Cluster目錄!
cat /etc/yum.repos.d/aa.repo
[aa]
name=aa
baseurl=file:///media/Server
enabled=1
gpgcheck=0
[Cluster]
name=cluster
baseurl=file:///media/Cluster
enabled=1
gpgcheck=0
#yum -y install ipvsadm
#ifconfig eth0 192.168.19.300
安裝keepalived,並經過其綁定VTP
#tar zxf keepalived-1[1].1.17.tar.gz
#yum install gcc openssl-devel kernel-devel ipvsadm -y (不裝一會安裝會有問題)
#ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux(這條不能複製粘貼,由於要看你機器的內核版本,能夠粘過去進行tab鍵補齊)
#cd keepalived-1.1.17
#./configure --prefix=/usr/local/keepalived
#make
#make install
安裝後,把人家提供好的文件進行對應的複製!
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir -pv /etc/keepalived
mkdir: 已建立目錄 「/etc/keepalived」
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#ln -s /usr/local/keepalived/sbin/keepalived /sbin/
刪減自定義配置文件就行:
#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id dr1
}
vrrp_sync_group http {
group {
apache
}
}
vrrp_instance apache {
state MASTER
interface eth0
virtual_router_id 51
priority 180
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.19.250
}
}
virtual_server 192.168.19.50 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 3600
protocol TCP
real_server 192.168.19.101 80{
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
real_server 192.168.19.102 80{
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
}
啓動服務
#/etc/init.d/keepalived start
4.分發器Backup的配置:
安裝lvs到分發器上面
配置好yum源,保證可以讀取到介質中的Cluster目錄!
cat /etc/yum.repos.d/aa.repo
[aa]
name=aa
baseurl=file:///media/Server
enabled=1
gpgcheck=0
[Cluster]
name=cluster
baseurl=file:///media/Cluster
enabled=1
gpgcheck=0
#yum -y install ipvsadm
#ifconfig eth0 192.168.19.200
安裝keepalived,並經過其綁定VTP
#tar zxf keepalived-1[1].1.17.tar.gz
#yum install gcc openssl-devel kernel-devel ipvsadm -y (不裝一會安裝會有問題)
#ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux(這條不能複製粘貼,由於要看你機器的內核版本,能夠粘過去進行tab鍵補齊)
#cd keepalived-1.1.17
#./configure --prefix=/usr/local/keepalived
#make
#make install
安裝後,把人家提供好的文件進行對應的複製!
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir -pv /etc/keepalived
mkdir: 已建立目錄 「/etc/keepalived」
#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
#ln -s /usr/local/keepalived/sbin/keepalived /sbin/
刪減自定義配置文件就行:
#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id dr2 #(這裏名字注意要和master的不同就行)
}
vrrp_sync_group http {
group {
apache
}
}
vrrp_instance apache {
state BACKUP #(這裏要改爲backup,備機)
interface eth0
virtual_router_id 51
priority 100 #(這裏級別要比主機低點就好)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.19.250
}
}
virtual_server 192.168.19.50 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 3600
protocol TCP
real_server 192.168.19.101 80{
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
real_server 192.168.19.102 80{
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
}
5.real server的配置:
#ifconfig eth0 192.168.19.100
綁定VTP:利用腳原本實現:
#!/bin/bash
VIP=192.168.19.250
ROUTE=192.168.19.100
start() {
ifconfig lo:0 $VIP/32 broadcast $VIP up
route add -host $VIP dev lo:0
route add default gw $ROUTE
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo start;
}
stop() {
route del default gw $ROUTE
route del -host $VIP dev lo:0
ifconfig lo:0 down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo stop;
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo 'start | stop'
esac
把這個腳本放到/etc/init.d/下面
啓動:/etc/init.d/vip.sh start
其餘real server的配置同理
6.到master主機上面驗證:
測試第一步:查看綁定的VTP
#ip add sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:a6:09:10 brd ff:ff:ff:ff:ff:ff
inet 192.168.19.300/24 brd 192.168.19.255 scope global eth0
inet 192.168.19.250/32 scope global eth0c
inet6 fe80::20c:29ff:fea6:910/64 scope link
valid_lft forever preferred_lft forever
3: sit0: <NOARP> mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
測試第二步,查看real server的連通性
l#elinks http://192.168.19.102/index.html --dump
102
#elinks http://192.168.19.101/index.html --dump
101
測試第三步,查看ipvsadm 規則
#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.19.250:80 rr
-> 192.168.19.101:80 Route 1 0 0
-> 192.168.19.102:80 Route 1 0 0
測試第四步,同客戶端測試
[root@~]# elinks http://192.168.19.250/index.html --dump
101
[root@~]# elinks http://192.168.19.250/index.html --dump
102
[root@~]# elinks http://192.168.19.250/index.html --dump
101
[root@~]# elinks http://192.168.19.250/index.html --dump
102啓動BACKUP
ld2#/etc/init.d/keepalived start
啓動 keepalived: [肯定]
關閉master上的keepalived,模擬失敗
再在client上測試,看訪問可否繼續!
若是沒有問題,在real server(192.168.19.101)上關閉服務
ld1#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.19.250:80 rr
-> 192.168.19.102:80 Route 1 0 0
ld1#ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.19.250:80 rr
-> 192.168.19.101:80 Route 1 0 0
-> 192.168.19.102:80 Route 1 0 0
解決無用的廣播包太多,形成ld沒法綁定vip
ld1上執行
iptables -F
iptables -A INPUT -m ttl --ttl-eq 255 -j REJECT
iptables -I INPUT -s $ld2ip -j ACCEPT
ld2上執行
iptables -F
iptables -A INPUT -m ttl --ttl-eq 255 -j REJECT
iptables -I INPUT -s $ld1ip -j ACCEPT