echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.233.200
rs1=192.168.233.129
rs2=192.168.233.132
ifdown ens33
ifup ens33
#注意這裏的網卡名字(虛擬網卡)這條命令設置一個虛擬網卡
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
二、兩臺rs上也編寫腳本
vim /usr/local/sbin/lvs_rs.sh
#內容以下
#/bin/bash
vip=192.168.233.200
#把vip綁定在lo上,是爲了實現rs直接把結果返回給客戶端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#如下操做爲更改arp內核參數,目的是爲了讓rs順利發送mac地址給客戶端
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
三、分別在dir上和兩個rs上執行這些腳本
dir上執行
sh /usr/local/sbin/lvs_dr.sh
rs上執行
sh /usr/local/sbin/lvs_rs.sh
四、測試
瀏覽器訪問vip200(192.168.233.200)
ipvsadm -ln #查看ipvsadm的規則
[root@xinlinux-03 ~]#
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.233.200:80 wrr
-> 192.168.233.129:80 Route 1 0 4
-> 192.168.233.132:80 Route 1 0 5
18.12 keepalived + LVS
keepalived + LVS的目的:
一、lvs的分發器宕機,給分發器作高可用
二、使用lvs時(無其餘額外操做),如將一個rs機器關機,當用戶訪問到這個關機的rs時會出現問題;這說明lvs不夠「聰明」,即便後端的rs宕機,也會繼續把請求發送過去;當增長keepalived後,能夠發送請求時能檢測rs是否宕機,若是宕機了,便再也不發送請求到宕機的rs上。
完整架構須要兩臺服務器(角色爲dir)分別安裝keepalived軟件,目的是實現高可用,但keepalived自己也有負載均衡的功能,因此本次實驗能夠只安裝一臺keepalived
keepalived內置了ipvsadm的功能,因此不須要再安裝ipvsadm包,也不用編寫和執行那個lvs_dir的腳本
三臺機器分別爲:
dir(安裝keepalived)233.150
rs1 233.129
rs2 233.132
vip 233.200
一、編輯keepalived配置文件
vim /etc/keepalived/keepalived.conf
#須要更改裏面的ip信息(將虛擬ip和虛擬serverip所有改爲vip200的ip)
virtual_ipaddress和virtual_server的改成192.168.233.200(vip200)
而後修改兩個rs(real_server)的ip
二、執行ipvsadm -C 把以前的ipvsadm規則清空掉
ipvsadm -C
三、systemctl restart network 能夠把以前的vip清空掉
兩臺rs上,依然要執行/usr/local/sbin/lvs_rs.sh腳本
systemctl restart network
sh /usr/local/sbin/lvs_rs.sh #兩臺rs上都要執行
#keepalived有一個比較好的功能,能夠在一臺rs宕機時,再也不把請求轉發過去
四、測試
瀏覽器訪問vip200(192.168.233.200)
18.13擴展
18.14課堂筆記
1、keepalived高可用
keepalived啓動nginx失敗的緣由主要在監控腳本上:
一、腳本是否能夠成功運行
二、腳本文件是否有運行權限
2、負載均衡集羣
NAT模式經過iptables的nat錶轉發到rs; IP Tunnel模式經過修改目標ip地址到rs;DR模式經過修改MAC地址
Tunnel模式:
分發器只負責收回數據包,不發送
LVS DR模式
缺點:須要保證rs和分發器在同一物理網絡裏(跨機房局部性了)
3、拓展
高可用 keepalived
負載均衡 LVS
擴展:
VRRP協議
keepalived郵件告警
LVS 三種模式圖解
LVS算法 DH
arp_ignore和arp_announce