增加兩臺純淨的虛擬機server3和server4,共4臺虛擬機
兩臺虛擬機最好1G內存
【server1/server2】
/etc/init.d/heartbeat stop chkconfig heartbeat off /etc/init.d/iptables stop
【server2】
ip addr add 172.25.45.100/24 dev eth0 ip addr show
ipvsadm -l
ipvsadm -C ipvsadm -A -t 172.25.45.100:80 -s rr ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.3:80 -g ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.4:80 -g /etc/init.d/ipvsadm save
ipvsadm -l
【server3/server4】
yum install -y httpd /etc/init.d/httpd start echo server3.example.com > /var/www/html/index.html ##server4改爲4
ip addr add 172.25.45.100/32 dev eth0 ip addr show
yum install -y arptables_jf arptables -L
arptables -A IN -d 172.25.45.100 -j DROP arptables -A OUT -s 172.25.45.100 -j mangle --mangle-ip-s 172.25.45.3##server4改爲4 /etc/init.d/arptables_jf save
arptables -L
http://172.25.45.100 ##server3和server4可以切換
【物理機】
arp -an ##可以看到虛擬IP在哪
【server2】
ipvsadm -l
2.
【server2】
cd /usr/share/doc/ldirectord-3.9.5/ cp ldirectord.cf /etc/ha.d/ vim /etc/ha.d/ldirectord.c
修改25到39行內容爲以下:
virtual=172.25.45.100:80
real=172.25.45.3:80 gate
real=172.25.45.4:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80
request="index.html"
# receive="Test Page"
# virtualhost=www.x.y.z
ipvsadm -l ipvsadm -C ipvsadm -l
/etc/init.d/ldirectord start ipvsadm -l
/etc/init.d/ldirectord stop ipvsadm -l
/etc/init.d/ldirectord start /etc/init.d/httpd start
echo server2.example.com > /var/www/html/index.html
http://172.25.45.100 ##server3和server4可以切換
測試:
關閉server3和server4其中一個的http服務,顯示的會是對方的首頁;若是全部關閉,則顯示server2的首頁,但只要server3\server4有一個服務存在,就會回切,就不會在server2上
關閉server4的http服務
網頁顯示server3.example.com
再關閉server3的http服務
網頁顯示本地首頁,server2.example.com
開啓server3的http服務
網頁顯示server3.example.com
開啓server4的http服務
網頁在server3和server4切換
【server2】
scp ldirectord.cf 172.25.45.1:/etc/ha.d/
/etc/init.d/ldirectord stop /etc/init.d/httpd stop ipvsadm -l
ip addr del 172.25.45.100/24 dev eth0
【server1】
yum install -y httpd
vim /etc/ha.d/haresources
將最後一行修改爲以下:
server1.example.com IPaddr::172.25.45.100/24/eth0 httpd ldirectord
scp haresources 172.25.45.2:/etc/ha.d/ /etc/init.d/heartbeat start tail -f /var/log/messages ##無報錯將server2的heartbeat服務打開
ip addr show ##有虛擬IP
netstat -antlpe ##httpd端口打開
ipvsadm -l ##規則出現
網頁上server3和server4可以切換
測試:
【server1】
/etc/init.d/heartbeat stop
虛擬IP會切換到server2上
/etc/init.d/heartbeat start
虛擬IP會切回到server1上
關閉server3的http服務,網頁顯示server4.example.com
再關閉server4的http服務,網頁顯示本地首頁,server1.example.com
開啓server3的http服務,網頁顯示server3.example.com
開啓server4的http服務,網頁在server3和server4切換
後端調度
健康檢查
所需軟件包:keepalived-1.2.20.tar.gz libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
【server1】
/etc/init.d/heartbeat stop tar zxf keepalived-1.2.20.tar.gz
cd keepalived-1.2.20/ ./configure --prefix=/usr/local/keepalived
需要解決的依賴性:openssl-devel libnl-devel
rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm yum install -y net-snmp-devel yum install -y libiptcdata.x86_64
make & make install
scp -r /usr/local/keepalived/ [email protected]:/usr/local/
【server1/server2】
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/keepalived/ /etc/ ln -s /usr/local/keepalived/sbin/keepalived /sbin/ ln -s /usr/local/keepalived/bin/genhash /bin/
【server1】
cd /etc/keepalived/ vim keepalived.conf
修改內容爲以下;
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.45.100
}
}
virtual_server 172.25.45.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 50
protocol TCP
real_server 172.25.45.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.45.4 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
scp keepalived.conf 172.25.45.2:/etc/keepalived/
【server2】
cd /etc/keepalived/ vim keepalived.conf
將第7行的sverver1.example.com改爲server2.example.com
將第16行的MASTER改爲BACKUP
將第45行的100改爲50
【server1】
/etc/init.d/keepalived start tail -f /var/log/messages
【server2】
/etc/init.d/keepalived start
【server1】
ip addr show
ipvsadm -l
網頁在server3和server4切換
/etc/init.d/keepalived stop ##虛擬IP會切換到server2上,網頁依然在server3和server4切換
關閉server3的http服務,網頁顯示server4.example.com
再關閉server4的http服務,網頁顯示本地首頁,server1.example.com
開啓server3的http服務,網頁顯示server3.example.com
開啓server4的http服務,網頁在server3和server4切換
【server1】
arp -a
【server3/server4】
yum install -y vsftpd /etc/init.d/vsftpd start
cd /var/ftp/ touch server3 ##server4主機touch server4
vim /etc/sysconfig/arptables
添加以下內容:
[0:0] -A IN -d 172.25.45.101 -j DROP
[0:0] -A OUT -s 172.25.45.101 -j mangle --mangle-ip-s 172.25.45.3##server4爲172.25.45.4
ip addr add 172.25.45.101/32 dev eth0 /etc/init.d/arptables_jf restart
arptables -nL
【server1】
vim keepalived.conf
在virtual_ipaddress下面添加一個虛擬IP:172.25.45.101
在最後添加以下內容:
virtual_server 172.25.45.101 21 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 172.25.45.3 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.45.4 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
【server2】
vim keepalived.conf
在virtual_ipaddress下面添加一個虛擬IP:172.25.45.101
將virtual_server 172.25.45.100 80 修改爲以下:
virtual_server 172.25.45.101 21 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 172.25.45.3 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.45.4 21 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
【server1/server2】
/etc/init.d/keepalived reload
ipvsadm -l
【server3】
lftp 172.25.45.101
【server2】
lftp 172.25.45.101
##fullnat模式##
需要編譯內核
所需軟件包:kernel-2.6.32-220.23.1.el6.src.rpm asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm slang-devel-2.2.1-1.el6.x86_64.rpm
uname -r
cd rpmbuild/SPECS/ rpmbuild -bp kernel.spec
缺少依賴性
##所需解決的依賴性##
yum install -y gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel perl-ExtUtils-Embed hmaccalc cd yum install asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm slang-devel-2.2.1-1.el6.x86_64.rpm -y
rpmbuild -bp kerbel.spec ##這裏會很久,可以通過再開一個窗口,進行rngd -r /dev/urando(此命令可在過程中找到)可以快速結束(沒有rngd命令可以安裝 rng-tools)
cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/ tar zxf Lvs-fullnat-synproxy.tar.gz cd lvs-fullnat-synproxy/ cp lvs-2.6.32-220.23.1.el6.patch /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64
cd .. cd linux-2.6.32-220.23.1.el6.x86_64/ yum install -y patch patch -p1 < lvs-2.6.32-220.23.1.el6.patch vim Makefile
在第四行 EXTRAVERSION 的後面加上 -220.23.1.el6 ##內核的版本號
cd configs/ diff kernel-2.6.32-x86_64.config ../.config
增加一個20G的虛擬硬盤,CPU改爲4個
fdisk -cu /dev/vdb pvcreate /dev/vdb1 vgextend VolGroup /dev/vdb1 lvextend -L +20G /dev/VolGroup/lv_root lvextend -l +5119 /dev/VolGroup/lv_root resize2fs /dev/VolGroup/lv_root df -h
cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64 make -j4 make modules_install make install
cd /boot/grub/ vim grub.conf
將第10行的default的值改爲0
可以看到2.6.32-220.23.1.el6的內核在上面,默認啓動這個
reboot
uname -r
cd rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/lvs-fullnat-synproxy/ cp lvs-tools.tar.gz ~ cd tar zxf lvs-tools.tar.gz cd tools/keepalived/ yum install openssl-devel popt-devel -y
./configure --with-kernel-dir="/lib/modules/`uname -r`/build" make make install which keepalived
cd .. cd ipvsadm/ yum install -y ipvsadm make make install ipvsadm --help ipvsadm -l