一、LVS/DR簡單介紹
企業常用模型
DR(Direct Routing)直接路由模式。LB收到請求包後,將請求包中目標MAC地址轉換爲某個選定RS的MAC地址後將包轉發出去,RS收到請求包後 ,可直接將應答內容傳給用戶。此時要求LB和所有RS都必須在一個物理段內,且LB與RS羣共享一個虛擬IP。
lvs-dr模型特徵 (常用)
1、集羣節點必須在一個物理網絡上(mac)
2、rip可以使用公網地址
3、director處理入站請求,
4、realserver網關不指向director
5、不支持端口映射
6、大多數操作系統支持realservers
7、dr dirctor 比nat director性能優越
二、實驗說明 實驗拓樸圖
172.16.23.10是LVS與互聯網通信的物理地址,簡稱爲DIP
172.16.23.1是LVS與內部真實服務器通信的地址,簡稱爲VIP
172.16.23.12與172.16.23.12就是LVS通過一些調度算法,選擇服務器響應的真實服務器web地址,這兩個服務器上還有一個lo上網卡別名lo:0 172.16.23.1 即跟VIP地址一樣 web是nginx+php
172.16.23.7 是mysql服務器地址
本次實驗主要是通過LVS這個負載均衡通過一些調度算法,對web進行負載均衡,而且是可進行加密進行,即實現ssl,並且通過web1,web2分別安裝pam進行對mysql這臺服務器進行管理。都是橋接
三、實現過程
1、構建web1,web2這兩臺服務器,上一篇博客已經寫過,這裏只進行ssl說明。
Web1上先CA證書
cd /etc/pki/CA
vim ../tls/openssl.cnf 修改一些參數找到 [CA_default] dir 設置爲dir = /etc/pki/CA
(umask 077;openssl genrsa 1024>private/cakey.pem)
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
mkdir newcerts certs crl
touch index.txt
echo 01>serial
echo 01>crlnumber
2、web1建httpd證書
cd /etc/httpd/conf
mkdir ssl
cd ssl
(umask 077;openssl genrsa 1024 > httpd.key)
openssl req -new -key httpd.key -out httpd.csr
3、向CA即自已申請證書
openssl ca -in httpd.csr -out httpd.crt
ca進行簽發
4、修改配置文件即/etc/nginx/nginx.conf 肉容中下
server {
listen 443;
server_name www.server1.com;
ssl on;
ssl_certificate /etc/httpd/ssl/httpd.crt; /httpd證書
ssl_certificate_key /etc/httpd/ssl/httpd.key; /證書私鑰
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM
# ssl_prefer_server_ciphers on; 這兩項先不起用
location / {
root /www;
index index.php index.html index.htm; //添加index.php
}
location ~ \.php$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param HTTPS on ; /這裏要添加如下內容,啓用https
include fastcgi_params;
}
}
}
5、安裝mysql圖形管理工具
(1) 需要在網上下載phpMyAdmin-2.11.10-all-languages
Tar xf phpMyAdmin-2.11.10-all-languages –C / //解壓到根目錄下
mv phpMyAdmin-2.11.10 www /www 即是本地網頁存放目錄
(2) cd /www 添加配置文件
cp config.sample.inc.php config.inc.php
(3) vim config.inc.php 修改以下參數
$cg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['host'] = '172.16.23.7';
//mysql的主機ip地址
$cfg['blowfish_secret'] = '';修改爲$cfg['blowfish_secret'] = 'fsfsfsfs';
//這裏隨便寫些值,主要是cookier加密,不改無法登錄。
(4)驗證訪問
輸入mysql服務器上邊的
用戶名:pam
及密碼:12345
登錄成功
Web2設置類似,這裏不再書寫!
6、mysql服務器進行設置
進入mysql命令行,給web1,web2授權訪問數據庫
flush privileges;
7、web1登錄pam時出現問題及解決方法
Cookies 必須啓用才能登入。
多次嘗試無法登錄,修改多次config.inc.php無結果。
最後上網查可能是時間有問題。
我就在不能登錄的那臺服務器看,時間錯了兩個月
Date 0414220812.33 //月日時分年秒
Hwclock –w //指設置好的系統時間同步到硬件裏
進行嘗成功!
8、LVS/DR設置
持久防火牆標記包持久性
實現將同一個服務的不同端口定向到同一個realserver
即客戶端請求發往80,及443端口都將由LVS通過算法定向到同一個realserver
ipvsadm -C
iptables -t mangle -L -n
iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.23.1 --dport 80 -j MARK --set-mark 20 [0-99整數] //定義標記
iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.23.1 --dport 443 -j MARK --set-mark 20 [0-99]
iptables 定義集羣,及集羣服務列表
ipvsadm -A -f 20 -s rr -p 1200 //DR持久連接
ipvsadm -a -f 20 -r 172.16.23.11 -g -w 3
ipvsadm -a -f 20 -r 172.16.23.12 -g -w 2
ipvsadm -Ln
9、 進行驗證
成功!
要mysql服務器上進行ab測試
LVS服務器上查看,ipvsadm –Lcn
至此整個過程完成!!!