堅持#第286天~LVS
VIP是外網入口
CIP訪問過來的ip地址
RS服務的後臺總稱
NAT:POSTROUTING和PREROUTING
CIP是源ip mac地址 改成 後臺真實ip
VIP是目標地址 mac地址 改成 後臺真實ip
CIP之後變成了目標Ip
SIP是源ip
dr路由
不支援NAT模式
叢集運用到的場景:
LB:以高併發為根本
HA:以線上時間為根本
HPC:高效能運算
cip 去訪問 vip;
dip 去讓rip(真實ip)去幹活 相當於排程器、閘道器
dip和rip是內網的人
NAT不是直接回,是上面第一個圖
DR可以直接回,減輕壓力,是上面第二個圖
大叢集的公司都有公網池
總結:
cip是客戶ip
vip是整個叢集的唯一入口,根據排程策略來轉發,監控成員的健康狀態
dip是排程器的ip,也是管理業務的ip
RS是真實伺服器
rip是真實ip
sip是源ip
keepalived:做排程器的高可用,檢測指令碼;常規業務的高可用叢集。
主定期發訊息:我是主,我的路由id是,我的虛擬id是,我的優先順序是。
主不發訊息了,其他人來爭了,爭贏的那個人做主
如果之前的主上線了,會不會把現在的主趕下去呢?
1.1.1.3、1.1.1.100
1.1.1.1 1.1.1.100 1.1.1.2
客戶 排程器(只需要1塊網絡卡哦)
1.1.1.4、1.1.1.100
都在同一網段,為了分擔壓力,有個排程器
客戶先訪問排程器,在廣播地址說誰的1.1.1.100你的mac地址是多少?
有3個1.1.1.100,如何讓排程器說話,其他閉嘴?使用non-arp工具呀!echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore //non-arp
能拆包的條件:目標地址是你你才能拆
回包給使用者的時候怎麼保證能以1.1.1.100這個網絡卡去回而不是以其他網絡卡去回?echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
經過排程器的時候改寫了mac
[DR]
VS/DR實驗:
start:
兩個排程器,兩個業務
先關閉防火牆selinux,都是NAT的網絡卡
node1:
主機名:dr1.uplook.com
192.168.122.226
node2:
主機名:dr2.uplook.com
192.168.122.214
node3:
主機名:web1.uplook.com
192.168.122.127
node4:
主機名:web2.uplook.com
192.168.122.128
dr1:
vim/etc/hosts
192.168.122.226dr1.uplook.com dr1
192.168.122.214dr2.uplook.com dr2
192.168.122.127web1.uplook.com web1
192.168.122.128web2.uplook.com web2
儲存退出
rsync/etc/hosts dr2:/etc/
rsync/etc/hosts web1:/etc/
rsync/etc/hosts web2:/etc/
date;ssh dr2date;ssh web1 date;ssh web2 date
用一條命令統一時間
date -s “2018020422:36:00”;ssh dr2 date -s “20180204 22:36:00”;ssh web1 date -s “2018020422:36:00”;ssh web2 date -s “20180204 22:36:00”;沒有成功,可能雙引號裡面要單引號確實是這樣的
date -s "2018/2/411:08";ssh 192.168.57.11 "date -s '2018/2/4 11:08'";ssh192.168.57.10 "date -s '2018/2/4 11:08'"
這樣可以:date -s"10:58";ssh 192.168.57.11 date -s "10:58";ssh 192.168.57.10date -s "10:58"
在真機裡面配ntp
yum install-y ntp
vim/etc/ntp.conf裡面
# Hosts onlocal network are less restricted.下面新增
restrict192.168.122.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
systemctlstart ntpd
systemctlenable ntpd
ntpstat
dr1:
yum install-y ntp
ntpdate 192.168.122.1將時間同步成真實伺服器
其他機器同樣
web1:
yum install-y httpd
echo web1> /var/www/html/index.html
systemctlstart httpd
web2:
yum install-y httpd
echo web2> /var/www/html/index.html
systemctlstart httpd
web1:
ip addr adddev lo 192.168.122.100/32 在lo介面上繫結VIP
web2:
ip addr adddev lo 192.168.122.100/32 在lo介面上繫結VIP
ifconfig看不到loopback裡面的32位的掩碼
ip a看的到
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore //non-arp
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
並寫到rc.local
web1:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore //non-arp
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
並寫到rc.local
dr1:
ip addr adddev lo 192.168.122.100/32 在lo介面上繫結VIP
yum -yinstall ipvsadm
ipvsadm -A-t 192.168.122.100:80 -s rr
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.127 -g閘道器模式
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.128 -g閘道器模式
ipvsadm -Ln
dr2:
ip addr adddev lo 192.168.122.100/32 在lo介面上繫結VIP
yum -yinstall ipvsadm
ipvsadm -A-t 192.168.122.100:80 -s rr
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.127 -g閘道器模式
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.128 -g閘道器模式
ipvsadm -Ln
客戶機:
curl192.168.122.100
curl192.168.122.100
curl192.168.122.100
web1/web2上輸入ipvsadm -Ln發現dr1有業務,但dr2沒有業務
web1:
systemctlstop httpd
客戶機:
curl 192.168.122.100
curl192.168.122.100
curl192.168.122.100還是錯誤的也被訪問了
web1:
systemctlstart httpd
dr1:
ifdown eth0排程器dr1如果壞掉了的情況
此操作會導致dr1上回環32掩碼不見,重啟網絡卡也會不見
客戶機:
curl192.168.122.100
curl192.168.122.100
curl192.168.122.100第一次好慢啊,然後就可以訪問了,dr2的業務有了
dr2:
重啟網絡卡
ipvsadm -C清除策略
dr1:
ipvsadm -C清除策略
發現有兩個問題:壞掉的網頁伺服器也能被客戶訪問,浪費客戶流量;dr1掛掉了切換dr2的時候客戶端訪問會很慢
接著使用keepalived來解決
wgetftp://192.168.1.254/pub/CentOS-6.5-x86_64-bin-DVD1.iso
dr1:
yum -yinstall ipvsadm
yum -yinstall keepalived
vim /etc/keepalived/keepalived.conf修改配置檔案
11 global_defs{
12 router_id LVS_DR1
13 }
15vrrp_instance VI_1 {
16 state MASTER
17 interface eth0看自己網絡卡是什麼就寫什麼
18 virtual_router_id 51
19 priority 100
20 advert_int 1
21 authentication {
22 auth_type PASS
23 auth_pass 1111密碼要統一
24 }
25 virtual_ipaddress {定義VIP的
26 192.168.122.100這就是vip,虛擬的ip
29 }
30 }
32virtual_server 192.168.122.100 80 {改為80埠,80後面要有空格
33 delay_loop 6
34 lb_algo rr
35 lb_kind DR換為DR模型
36 nat_mask 255.255.255.255因為是32位掩碼
37 #persistence_timeout 50埠持久連線,註釋掉
38 protocol TCP
39
40 real_server 192.168.122.127 80 {真實伺服器ip,80埠
41 weight 1
TCP_CHECK {空一格花括號
51 connect_timeout 3
52 nb_get_retry 3
53 delay_before_retry 3
54 }
55 }
下面全刪,然後新增:
real_server 192.168.122.128 80 {真實伺服器ip,80埠
41 weight 1
TCP_CHECK {空一格花括號
51 connect_timeout 3
52 nb_get_retry 3
53 delay_before_retry 3
54 }
55 }
56 }
dr2:
yum -yinstall ipvsadm
yum -yinstall keepalived
scp/etc/keepalived/keepalived.conf dr2:/etc/keepalived/keepalived.conf
dr2:
11 global_defs{
12 router_id LVS_DR2
13 }
15vrrp_instance VI_1 {
16 state MASTER
17 interface eth0看自己網絡卡是什麼就寫什麼
18 virtual_router_id 51
19 priority 80
20 advert_int 1
21 authentication {
22 auth_type PASS
23 auth_pass 1111密碼要統一
24 }
25 virtual_ipaddress {定義VIP的
26 192.168.122.100這就是vip
29 }
30 }
32virtual_server 192.168.122.100 80 {改為80埠,80後面要有空格
33 delay_loop 6
34 lb_algo rr
35 lb_kindDR換為DR模型
36 nat_mask 255.255.255.255因為是32位掩碼
37 #persistence_timeout 50埠持久連線,註釋掉
38 protocol TCP
39
40 real_server 192.168.122.127 80 {真實伺服器ip,80埠
41 weight 1
TCP_CHECK {空一格花括號
51 connect_timeout 3
52 nb_get_retry 3
53 delay_before_retry 3
54 }
55 }
下面全刪,然後新增:
real_server 192.168.122.128 80 {真實伺服器ip,80埠
41 weight 1
TCP_CHECK {空一格花括號
51 connect_timeout 3
52 nb_get_retry 3
53 delay_before_retry 3
54 }
55 }
56 }
再開一個dr1:
yum install-y tcpdump
tcpdump -ieth0 -vv vrrp
舊dr1:
systemctlstart keepalived
dr2:
systemctlstart keepalived
新dr1:
看抓的包
過了一會兒,優先順序高的會自動生成迴環的32位掩碼,而且策略都自動添加了
客戶機:
curl192.168.122.100
curl192.168.122.100
curl192.168.122.100
web1:
systemctlstop httpd
客戶機:
curl192.168.122.100
curl192.168.122.100
curl192.168.122.100不會訪問錯誤的網站服務了
web1:
systemctlstart httpd
dr1:
將keepalived服務停掉
客戶機:
curl 192.168.122.100
curl192.168.122.100
curl192.168.122.100停掉後也不會訪問錯誤的網站服務了
安裝centOS6.5:
選最後一排圖形
VDA1 BOOT200M
VDA2 SWAP2048
VDA3 / 最後都給他
把每一個標準分割槽做成邏輯卷
LVS排程演算法:
LVS排程演算法有哪些?
rr輪循排程
wrr加權輪循排程
lc最少連結
wlc加權最少連結
dh目標地址雜湊
sh源地址雜湊
LVS永續性連線:
ipvsadm -A-t 192.168.122.100:80 -s rr -p 300
-p持久 300秒 會話保持
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.10 -g //gatewaying(direct routing)
ipvsadm -a-t 192.168.122.100:80 -r 192.168.122.20 -g
ipvsadm -Ln-c 檢視
LVS埠親緣性:
WEB的服務 打標記
iptables -tmangle -A PREROUTING -p tcp -d 192.168.122.100 --dport 80 -j MARK --set-mark 80
iptables -tmangle -A PREROUTING -p tcp -d 192.168.122.100 --dport 443 -j MARK --set-mark80
FTP的服務
iptables -tmangle -A PREROUTING -p tcp -d 192.168.122.100 --dport 20-21 -j MARK --set-mark21
iptables -tmangle -A PREROUTING -p tcp -d 192.168.122.100 --dport 50000-60000 -j MARK--set-mark 21
vip相當於網頁中滑鼠移到按鈕上的超連結,排程器的一個入口