1. 程式人生 > 實用技巧 >LB lvs-nat lvs-dr 的理解及實驗

LB lvs-nat lvs-dr 的理解及實驗

Lvs-nat

負載均衡nat模式工作原理講解

wps_clip_p_w_picpath-28707

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

wps_clip_p_w_picpath-4637

echo "1" > /proc/sys/net/ipv4/ip_forward 開啟路由轉發機制

配置就成功啦 可以先 curl http://172.16.1.118 檢視是否輪詢

我們還可以改變叢集演算法,根據業務不同進行叢集切換

wps_clip_p_w_picpath-4656

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)

wps_clip_p_w_picpath-17891

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>

wps_clip_p_w_picpath-7473

(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

模式工作示意圖

wKiom1QN7B_TNjr-AAFpyI2bDrA934.jpg

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

另一節點的配置也一樣

實驗驗證也是一樣

wps_clip_p_w_picpath-29065

轉載於:https://blog.51cto.com/1983939925/1550037