LB lvs-nat lvs-dr 的理解及實驗
Lvs-nat
負載均衡nat模式工作原理講解
Lvs是LB 的實現方式
LB :負載均衡
Lvs-nat
Directory 負載均衡排程器
Real server 真正負載叢集的總稱
請求報文
首先客戶端請求一個http資源,經過路由器到達directory 的vip 經過路由選擇,送到INPUT鏈上去,INPUT鏈
檢視他的請求資源是個本機,但是本機是個叢集,本機並沒有web服務提供,根據配置規則,就修改請求資源的目
標地址為真正的real server rip 送給dip,dip檢視是送到real server xx的就送給xx啦
響應報文
Real server xx檢視請求的資源,馬上就開始構建響應報文,構建完響應報文後,通過dip送到directory,dip通過修
改源埠,dip直接從forword鏈轉發到vip,vip在轉發給客戶端
工作示意圖如上圖
Vmware1 directory nfs 共享mysql eth0:192.168.1.118/24 eth1:172.16.1.143/16
Vmware2 lamp web host1 eth0:192.168.1.11/24 關閉mysql 安裝wordpress
Vmware3 lamp web host2 eth1:192.168.1.12/24 關閉mysql 安裝Wordpress
系統均為centos6.5
配置好ip地址和建立好網頁,ping 一下看主機是否線上
1、節點real server的配置
Ifconfig eth0 192.168.1.11/24 up 使用虛擬通道3
Route add default gw 192.168.1.11
Yum install httpd mysql-server php php-mysql php-gd -y
Vim /var/www/html 提供網頁檔案
Service httpd restart
節點二一樣配置
2、directory的配置
首先新增一張網絡卡,配置能讓linux正常識別到
Ifconfig eth0 192.168.1.118/24 up 橋接
Ifconfig eth1 172.16.1.143/16 up 使用虛擬通道3
Yum install httpd mysql-server php php-mysql php-gd -y
此時先在directory 測試一下 ping 各節點
Curl http:// 192.168.1.11 測試下個節點的網頁是否正常
3、上面的準備環境做好啦,就可以做真正的叢集服務啦
先要安裝軟體 配置好yum 源 yum install ipvsadm -y
不懂軟體命令使用可以 man ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
-A 新增叢集
-E 修改叢集
-C 清空叢集配置
-D 刪除叢集
-a 新增real server 配置
-e 修改real server 配置
-d 刪除real server 配置
-m 是開啟nat模式
-g 是開啟dr模式
-w 演算法的權重
-L 列出資訊
-n 檢視詳細資訊
echo "1" > /proc/sys/net/ipv4/ip_forward 開啟路由間轉發功能
配置服務
Ipvsadm -A -t 172.16.1.143:80 -s rr
Ipvsadm -a -t 172.16.1.143:80 -r 192.168.1.11 -m -w 1
Ipvsadm -a -t 172.16.1.143:80 -r 192.168.1.12 -m -w 2
echo "1" > /proc/sys/net/ipv4/ip_forward 開啟路由轉發機制
配置就成功啦 可以先 curl http://172.16.1.118 檢視是否輪詢
我們還可以改變叢集演算法,根據業務不同進行叢集切換
Ipvsadm -E -t 172.16.1.118:80 -s lc 再測試結果
各種演算法的比較
靜態演算法
動態演算法
4、對實驗的升級
用nfs 共享mysql,給兩臺real server web 安裝wordpress提供論壇服務
用原始碼編譯安裝搭建 lamp平臺 我們可以先搭建一臺,然後快速克隆三臺出來
Ip地址和上面一樣
Directory 提供mysql nfs 的共享
Real server 提供web服務,但是mysql是關閉的
三臺虛擬主機系統均是centos6.5
不會lamp原始碼編譯安裝的話請看http://1983939925.blog.51cto.com/8400375/1540799
這裡的關鍵點環境的搭建lamp和mysql的授權問題
(1)用nfs建共享
vim /etc/exports
/www/html 172.16.0.0/16(no_root_squash,rw)
service nfs restart
(2)lamp的配置
搭建安裝lamp
vim /etc/httpd24/http.conf
指定pid
PidFile "/var/run/httpd.pid"
支援.php的網頁檔案
DirectoryIndex index.php index.html
開啟虛擬主機設定網頁
Include /etc/httpd24/extra/httpd-vhosts.conf
支援網頁的格式設定
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
(3)虛擬主機的配置
vim //etc/httpd24/extra/httpd-vhosts.conf
註釋掉他的示例虛擬主機
新建虛擬主機
<VirtualHost *:80>
DocumentRoot "/www/html"
<Directory "/www/html">
Require all granted
</Directory>
ServerName www.dingchao.com
</VirtualHost>
(4)mysql授權遠端主機訪問
重要的是授權本機或者遠端主機訪問mysql
主要的是配置檔案mysql的註冊時,wp-config.PHP mysql的ip地址要填提供mysq服務本機的地址
對於授權的問題是,我們要授權給共享web服務來訪問的ip地址,如果實驗驗證不了,我們可以現在web
客戶端,遠端連線一下,測試一下授權是否成功
mysql,看有沒有許可權訪問,出錯問題還有就是NFS的許可權,所有具體的問題要自己結合實際情況解決問題
(5)directory 叢集基於域名解析
在windows本機的hosts檔案中新增可以解析linux的ip地址,這樣做的意義是我們要基於域名來解析安裝wordpress,
和訪問
C:\Windows\System32\drivers\etc\hosts
172.16.1.143 www.dingchao.com
基於主要是因為此軟體 基於ip註冊訪問的話,有很強的快取,實驗驗證的話會出現問題
安裝Wordpress就不說啦
mysql -u root -h 127.0.0.1 -p
Creat database wp;
grant all on wp.* to 'tom'@'共享web ip' identified by '1234';
(6)directory 叢集配置和上面rpm配置的一樣
(7)實驗驗證在瀏覽器中發表一篇文章real server1,我這裡是基於域名安裝的wordpress,然後在後臺關閉real server1,
再在瀏覽其中訪問word server 可以看到你在real server1 中發表的文章,及說明你實驗成功
Lvs-dr
模式工作示意圖
1、注意要點
Real server 和 directory 必須要在同一網路中
Real server 必須配置vip和directory上的一樣,工作中主要是在INPUT鏈上添加了dip的mac地址和
real server 的mac地址
Real server 配置的vip必須保證,別人的arp請求vip解析不予響應,自己也不通告有vip地址,只是當
有來自directory的分配時,給予響應
基本緩解搭配和上面一樣,不過這裡的directory只要一塊網絡卡,我們要把上面的directory的eth1 down掉
2、具體配置
Directory 的配置
Ifconfig eth0 192.168.100.15/24 up
Ifconfig eth0:0 192.168.100.20/24 up
Route add default gw 192.168.100.1
Ipvsadm -A -t 192.168.100.20:80 -s rr
Ipvsadm -a -t 192.168.100.20:80 -r 192.168.1.11 -g -w 1
Ipvsadm -a -t 192.168.100.20:80 -r 192.168.1.12 -g -w 2
Real server的配置
Ifconfig eth0 192.168.100.11/24 up
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 192.168.100.20 netmask 255.255.255.255 broadcast 192.168.100.20 up 自己只能跟自己通話
Route add default gw 192.168.100.1
route add -host 192.168.100.20 dev lo:0
另一節點的配置也一樣
實驗驗證也是一樣
轉載於:https://blog.51cto.com/1983939925/1550037