第十八章、Linux及集羣架構(下)

18.11 LVS DR模式搭建
18.12 keepalived + LVS
18.13擴展
18.14課堂筆記 
 
18.11 LVS DR模式搭建
準備工做
三臺機器
分發器,也叫調度器(簡寫爲dir)
#將上個實驗rs一、rs2的網關改回來
233.150
rs1
233.129
rs2
233.132
vip
233.200
 
DR模式搭建
一、dir上編寫腳本 
vim /usr/local/sbin/lvs_dr.sh 
#內容以下
#! /bin/bash
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擴展
nginx、lvs、haproxy比較  http://www.csdn.net/article/2014-07-24/2820837
keepalived中自定義腳本 vrrp_script  http://my.oschina.net/hncscwc/blog/158746
lvs dr模式只使用一個公網ip的實現方法  http://storysky.blog.51cto.com/628458/338726
 
 
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
相關文章
相關標籤/搜索